diff --git a/README b/README index 7cda5f2b3e..a258a335e9 100644 --- a/README +++ b/README @@ -39,3 +39,4 @@ Point your browser at any of these files to get started: doc/Manual.html the LAMMPS manual doc/Section_intro.html hi-level introduction to LAMMPS doc/Section_start.html how to build and use LAMMPS +doc/Developer.pdf LAMMPS developer guide diff --git a/doc/Developer.pdf b/doc/Developer.pdf new file mode 100644 index 0000000000..55b5015e49 Binary files /dev/null and b/doc/Developer.pdf differ diff --git a/doc/Eqs/fix_nphug.jpg b/doc/Eqs/fix_nphug.jpg new file mode 100644 index 0000000000..beed5ed5c9 Binary files /dev/null and b/doc/Eqs/fix_nphug.jpg differ diff --git a/doc/Eqs/fix_nphug.tex b/doc/Eqs/fix_nphug.tex new file mode 100644 index 0000000000..4e162b69b7 --- /dev/null +++ b/doc/Eqs/fix_nphug.tex @@ -0,0 +1,9 @@ +\documentstyle[12pt]{article} + +\begin{document} + +$$ +T_t - T = \frac{\left(\frac{1}{2}\left(P + P_0\right)\left(V_0 - V\right) + E_0 - E\right)}{N_{dof} k_B } = Delta +$$ + +\end{document} diff --git a/doc/Eqs/pair_edip.jpg b/doc/Eqs/pair_edip.jpg new file mode 100644 index 0000000000..9e7a8d77d3 Binary files /dev/null and b/doc/Eqs/pair_edip.jpg differ diff --git a/doc/Eqs/pair_edip.tex b/doc/Eqs/pair_edip.tex new file mode 100644 index 0000000000..27f5dd9eec --- /dev/null +++ b/doc/Eqs/pair_edip.tex @@ -0,0 +1,22 @@ +\documentclass[12pt]{article} + +\usepackage{amssymb,amsmath} + +\begin{document} + +\begin{eqnarray*} +E & = & \sum_{j \ne i} \phi_{2}(R_{ij}, Z_{i}) + \sum_{j \ne i} \sum_{k \ne i,k > j} \phi_{3}(R_{ij}, R_{ik}, Z_{i}) \\ +\phi_{2}(r, Z) & = & A\left[\left(\frac{B}{r}\right)^{\rho} - e^{-\beta Z^2}\right]exp{\left(\frac{\sigma}{r-a}\right)} \\ +\phi_{3}(R_{ij}, R_{ik}, Z_i) & = & exp{\left(\frac{\gamma}{R_{ij}-a}\right)}exp{\left(\frac{\gamma}{R_{ik}-a}\right)}h(cos\theta_{ijk},Z_i) \\ +Z_i & = & \sum_{m \ne i} f(R_{im}) \qquad + f(r) = \begin{cases} + 1 & \quad ra + \end{cases} \\ +h(l,Z) & = & \lambda [(1-e^{-Q(Z)(l+\tau(Z))^2}) + \eta Q(Z)(l+\tau(Z))^2 ] \\ +Q(Z) & = & Q_0 e^{-\mu Z} \qquad \tau(Z) = u_1 + u_2 (u_3 e^{-u_4 Z} - e^{-2u_4 Z}) +\end{eqnarray*} + +\end{document} + diff --git a/doc/Eqs/pair_gromacs.jpg b/doc/Eqs/pair_gromacs.jpg index 1f7c065511..4902fe0164 100644 Binary files a/doc/Eqs/pair_gromacs.jpg and b/doc/Eqs/pair_gromacs.jpg differ diff --git a/doc/Eqs/pair_gromacs.tex b/doc/Eqs/pair_gromacs.tex index c08ad59bdf..e51ca09578 100644 --- a/doc/Eqs/pair_gromacs.tex +++ b/doc/Eqs/pair_gromacs.tex @@ -7,8 +7,8 @@ E_{LJ} & = & 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - \left(\frac{\sigma}{r}\right)^6 \right] + S_{LJ}(r) \qquad r < r_c \\ E_C & = & \frac{C q_i q_j}{\epsilon r} + S_C(r) \qquad r < r_c \\ -S(r) & = & 0 \qquad r < r_1 \\ -S(r) & = & A (r - r_1)^2 + B (r - r_1)^3 \qquad r_1 < r < r_c +S(r) & = & C \qquad r < r_1 \\ +S(r) & = & \frac{A}{3} (r - r_1)^3 + \frac{B}{4} (r - r_1)^4 + C \qquad r_1 < r < r_c \end{eqnarray*} \end{document} diff --git a/doc/Eqs/pair_lj_cubic.jpg b/doc/Eqs/pair_lj_cubic.jpg new file mode 100644 index 0000000000..25ffe2cbf8 Binary files /dev/null and b/doc/Eqs/pair_lj_cubic.jpg differ diff --git a/doc/Eqs/pair_lj_cubic.tex b/doc/Eqs/pair_lj_cubic.tex new file mode 100644 index 0000000000..e2e1b67dd7 --- /dev/null +++ b/doc/Eqs/pair_lj_cubic.tex @@ -0,0 +1,12 @@ +\documentstyle[12pt]{article} + +\begin{document} + +\begin{eqnarray*} + E &=& u_{LJ}(r) \qquad r \leq r_s \\ + &=& u_{LJ}(r_s) + (r-r_s) u'_{LJ}(r_s) - \frac{1}{6} A_3 (r-r_s)^3 \qquad r_s < r \leq r_c \\ + &=& 0 \qquad r > r_c +\end{eqnarray*} + + +\end{document} diff --git a/doc/Eqs/pair_sph_ideal.jpg b/doc/Eqs/pair_sph_ideal.jpg new file mode 100644 index 0000000000..ad9760d5ec Binary files /dev/null and b/doc/Eqs/pair_sph_ideal.jpg differ diff --git a/doc/Eqs/pair_sph_ideal.tex b/doc/Eqs/pair_sph_ideal.tex new file mode 100644 index 0000000000..91c64f00bc --- /dev/null +++ b/doc/Eqs/pair_sph_ideal.tex @@ -0,0 +1,9 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + p = (\gamma - 1) \rho e +$$ + +\end{document} diff --git a/doc/Eqs/pair_sph_tait.jpg b/doc/Eqs/pair_sph_tait.jpg new file mode 100644 index 0000000000..96adab38e0 Binary files /dev/null and b/doc/Eqs/pair_sph_tait.jpg differ diff --git a/doc/Eqs/pair_sph_tait.tex b/doc/Eqs/pair_sph_tait.tex new file mode 100644 index 0000000000..4e1fa9cfed --- /dev/null +++ b/doc/Eqs/pair_sph_tait.tex @@ -0,0 +1,9 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + p = B [(\frac{\rho}{\rho_0})^{\gamma} - 1] +$$ + +\end{document} diff --git a/doc/Manual.html b/doc/Manual.html index e386da2918..abdc33945c 100644 --- a/doc/Manual.html +++ b/doc/Manual.html @@ -42,6 +42,10 @@ describe the version you have.
  • The PDF file on the WWW site or in the tarball is updated about once per month. This is because it is large, and we don't want it to be part of very patch. + +
  • There is also a Developer.pdf file in the doc +directory, which describes the internal structure and algorithms of +LAMMPS.

    LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel Simulator. @@ -78,89 +82,107 @@ it gives quick access to documentation for all LAMMPS commands.

    1. Introduction -
    @@ -301,6 +341,40 @@ it gives quick access to documentation for all LAMMPS commands. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/Manual.pdf b/doc/Manual.pdf index 0f74628fa2..fba5069280 100644 Binary files a/doc/Manual.pdf and b/doc/Manual.pdf differ diff --git a/doc/Manual.txt b/doc/Manual.txt index c8f491b233..457230649b 100644 --- a/doc/Manual.txt +++ b/doc/Manual.txt @@ -38,7 +38,11 @@ describe the version you have. :l The "PDF file"_Manual.pdf on the WWW site or in the tarball is updated about once per month. This is because it is large, and we don't want -it to be part of very patch. :ule,l +it to be part of very patch. :l + +There is also a "Developer.pdf"_Developer.pdf file in the doc +directory, which describes the internal structure and algorithms of +LAMMPS. :ule,l LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel Simulator. @@ -73,135 +77,172 @@ it gives quick access to documentation for all LAMMPS commands. "htmldoc"_http://www.easysw.com/htmldoc "Introduction"_Section_intro.html :olb,l - 1.1 "What is LAMMPS"_1_1 :ulb,b - 1.2 "LAMMPS features"_1_2 :b - 1.3 "LAMMPS non-features"_1_3 :b - 1.4 "Open source distribution"_1_4 :b - 1.5 "Acknowledgments and citations"_1_5 :ule,b + 1.1 "What is LAMMPS"_intro_1 :ulb,b + 1.2 "LAMMPS features"_intro_2 :b + 1.3 "LAMMPS non-features"_intro_3 :b + 1.4 "Open source distribution"_intro_4 :b + 1.5 "Acknowledgments and citations"_intro_5 :ule,b "Getting started"_Section_start.html :l - 2.1 "What's in the LAMMPS distribution"_2_1 :ulb,b - 2.2 "Making LAMMPS"_2_2 :b - 2.3 "Making LAMMPS with optional packages"_2_3 :b - 2.4 "Building LAMMPS as a library"_2_4 :b - 2.5 "Running LAMMPS"_2_5 :b - 2.6 "Command-line options"_2_6 :b - 2.7 "Screen output"_2_7 :b + 2.1 "What's in the LAMMPS distribution"_start_1 :ulb,b + 2.2 "Making LAMMPS"_start_2 :b + 2.3 "Making LAMMPS with optional packages"_start_3 :b + 2.4 "Building LAMMPS as a library"_start_4 :b + 2.5 "Running LAMMPS"_start_5 :b + 2.6 "Command-line options"_start_6 :b + 2.7 "Screen output"_start_7 :b 2.8 "Tips for users of previous versions"_2_8 :ule,b "Commands"_Section_commands.html :l - 3.1 "LAMMPS input script"_3_1 :ulb,b - 3.2 "Parsing rules"_3_2 :b - 3.3 "Input script structure"_3_3 :b - 3.4 "Commands listed by category"_3_4 :b - 3.5 "Commands listed alphabetically"_3_5 :ule,b + 3.1 "LAMMPS input script"_cmd_1 :ulb,b + 3.2 "Parsing rules"_cmd_2 :b + 3.3 "Input script structure"_cmd_3 :b + 3.4 "Commands listed by category"_cmd_4 :b + 3.5 "Commands listed alphabetically"_cmd_5 :ule,b +"Packages"_Section_packages.html :l + 4.1 "Standard packages"_pkg_1 :ulb,b + 4.2 "User packages"_pkg_2 :ule,b +"Using accelerated CPU and GPU styles"_Section_accelerate.html :l + 5.1 "OPT package"_acc_1 :ulb,b + 5.2 "USER-OMP package"_acc_2 :b + 5.3 "GPU package"_acc_3 :b + 5.4 "USER-CUDA package"_acc_4 :b + 5.5 "Comparison of GPU and USER-CUDA packages"_acc_5 :ule,b "How-to discussions"_Section_howto.html :l - 4.1 "Restarting a simulation"_4_1 :ulb,b - 4.2 "2d simulations"_4_2 :b - 4.3 "CHARMM and AMBER force fields"_4_3 :b - 4.4 "Running multiple simulations from one input script"_4_4 :b - 4.5 "Multi-replica simulations"_4_5 :b - 4.6 "Granular models"_4_6 :b - 4.7 "TIP3P water model"_4_7 :b - 4.8 "TIP4P water model"_4_8 :b - 4.9 "SPC water model"_4_9 :b - 4.10 "Coupling LAMMPS to other codes"_4_10 :b - 4.11 "Visualizing LAMMPS snapshots"_4_11 :b - 4.12 "Triclinic (non-orthogonal) simulation boxes"_4_12 :b - 4.13 "NEMD simulations"_4_13 :b - 4.14 "Extended spherical and aspherical particles"_4_14 :b - 4.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_4_15 :b - 4.16 "Thermostatting, barostatting, and compute temperature"_4_16 :b - 4.17 "Walls"_4_17 :b - 4.18 "Elastic constants"_4_18 :b - 4.19 "Library interface to LAMMPS"_4_19 :b - 4.20 "Calculating thermal conductivity"_4_20 :b - 4.21 "Calculating viscosity"_4_21 :ule,b + 6.1 "Restarting a simulation"_howto_1 :ulb,b + 6.2 "2d simulations"_howto_2 :b + 6.3 "CHARMM and AMBER force fields"_howto_3 :b + 6.4 "Running multiple simulations from one input script"_howto_4 :b + 6.5 "Multi-replica simulations"_howto_5 :b + 6.6 "Granular models"_howto_6 :b + 6.7 "TIP3P water model"_howto_7 :b + 6.8 "TIP4P water model"_howto_8 :b + 6.9 "SPC water model"_howto_9 :b + 6.10 "Coupling LAMMPS to other codes"_howto_10 :b + 6.11 "Visualizing LAMMPS snapshots"_howto_11 :b + 6.12 "Triclinic (non-orthogonal) simulation boxes"_howto_12 :b + 6.13 "NEMD simulations"_howto_13 :b + 6.14 "Extended spherical and aspherical particles"_howto_14 :b + 6.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_howto_15 :b + 6.16 "Thermostatting, barostatting, and compute temperature"_howto_16 :b + 6.17 "Walls"_howto_17 :b + 6.18 "Elastic constants"_howto_18 :b + 6.19 "Library interface to LAMMPS"_howto_19 :b + 6.20 "Calculating thermal conductivity"_howto_20 :b + 6.21 "Calculating viscosity"_howto_21 :ule,b "Example problems"_Section_example.html :l "Performance & scalability"_Section_perf.html :l "Additional tools"_Section_tools.html :l "Modifying & extending LAMMPS"_Section_modify.html :l + 10.1 "Atom styles"_mod_1 :ulb,b + 10.2 "Bond, angle, dihedral, improper potentials"_mod_2 :b + 10.3 "Compute styles"_mod_3 :b + 10.4 "Dump styles"_mod_4 :b + 10.5 "Dump custom output options"_mod_5 :b + 10.6 "Fix styles"_mod_6 :b + 10.7 "Input script commands"_mod_7 :b + 10.8 "Kspace computations"_mod_8 :b + 10.9 "Minimization styles"_mod_9 :b + 10.10 "Pairwise potentials"_mod_10 :b + 10.11 "Region styles"_mod_11 :b + 10.12 "Thermodynamic output options"_mod_12 :b + 10.13 "Variable options"_mod_13 :b + 10.14 "Submitting new features for inclusion in LAMMPS"_mod_14 :ule,b "Python interface"_Section_python.html :l - 9.1 "Extending Python with a serial version of LAMMPS"_9_1 :ulb,b - 9.2 "Creating a shared MPI library"_9_2 :b - 9.3 "Extending Python with a parallel version of LAMMPS"_9_3 :b - 9.4 "Extending Python with MPI"_9_4 :b - 9.5 "Testing the Python-LAMMPS interface"_9_5 :b - 9.6 "Using LAMMPS from Python"_9_6 :b - 9.7 "Example Python scripts that use LAMMPS"_9_7 :ule,b -"Using accelerated CPU and GPU styles"_Section_accelerate.html :l - 10.1 "OPT package"_10_1 :ulb,b - 10.2 "GPU package"_10_2 :b - 10.3 "USER-CUDA package"_10_3 :b - 10.4 "Comparison of GPU and USER-CUDA packages"_10_4 :ule,b + 11.1 "Extending Python with a serial version of LAMMPS"_py_1 :ulb,b + 11.2 "Creating a shared MPI library"_py_2 :b + 11.3 "Extending Python with a parallel version of LAMMPS"_py_3 :b + 11.4 "Extending Python with MPI"_py_4 :b + 11.5 "Testing the Python-LAMMPS interface"_py_5 :b + 11.6 "Using LAMMPS from Python"_py_6 :b + 11.7 "Example Python scripts that use LAMMPS"_py_7 :ule,b "Errors"_Section_errors.html :l - 11.1 "Common problems"_11_1 :ulb,b - 11.2 "Reporting bugs"_11_2 :b - 11.3 "Error & warning messages"_11_3 :ule,b + 12.1 "Common problems"_err_1 :ulb,b + 12.2 "Reporting bugs"_err_2 :b + 12.3 "Error & warning messages"_err_3 :ule,b "Future and history"_Section_history.html :l - 12.1 "Coming attractions"_12_1 :ulb,b - 12.2 "Past versions"_12_2 :ule,b + 13.1 "Coming attractions"_hist_1 :ulb,b + 13.2 "Past versions"_hist_2 :ule,b :ole -:link(1_1,Section_intro.html#1_1) -:link(1_2,Section_intro.html#1_2) -:link(1_3,Section_intro.html#1_3) -:link(1_4,Section_intro.html#1_4) -:link(1_5,Section_intro.html#1_5) +:link(intro_1,Section_intro.html#intro_1) +:link(intro_2,Section_intro.html#intro_2) +:link(intro_3,Section_intro.html#intro_3) +:link(intro_4,Section_intro.html#intro_4) +:link(intro_5,Section_intro.html#intro_5) -:link(2_1,Section_start.html#2_1) -:link(2_2,Section_start.html#2_2) -:link(2_3,Section_start.html#2_3) -:link(2_4,Section_start.html#2_4) -:link(2_5,Section_start.html#2_5) -:link(2_6,Section_start.html#2_6) -:link(2_7,Section_start.html#2_7) -:link(2_8,Section_start.html#2_8) +:link(start_1,Section_start.html#start_1) +:link(start_2,Section_start.html#start_2) +:link(start_3,Section_start.html#start_3) +:link(start_4,Section_start.html#start_4) +:link(start_5,Section_start.html#start_5) +:link(start_6,Section_start.html#start_6) +:link(start_7,Section_start.html#start_7) +:link(start_8,Section_start.html#start_8) -:link(3_1,Section_commands.html#3_1) -:link(3_2,Section_commands.html#3_2) -:link(3_3,Section_commands.html#3_3) -:link(3_4,Section_commands.html#3_4) -:link(3_5,Section_commands.html#3_5) +:link(cmd_1,Section_commands.html#cmd_1) +:link(cmd_2,Section_commands.html#cmd_2) +:link(cmd_3,Section_commands.html#cmd_3) +:link(cmd_4,Section_commands.html#cmd_4) +:link(cmd_5,Section_commands.html#cmd_5) -:link(4_1,Section_howto.html#4_1) -:link(4_2,Section_howto.html#4_2) -:link(4_3,Section_howto.html#4_3) -:link(4_4,Section_howto.html#4_4) -:link(4_5,Section_howto.html#4_5) -:link(4_6,Section_howto.html#4_6) -:link(4_7,Section_howto.html#4_7) -:link(4_8,Section_howto.html#4_8) -:link(4_9,Section_howto.html#4_9) -:link(4_10,Section_howto.html#4_10) -:link(4_11,Section_howto.html#4_11) -:link(4_12,Section_howto.html#4_12) -:link(4_13,Section_howto.html#4_13) -:link(4_14,Section_howto.html#4_14) -:link(4_15,Section_howto.html#4_15) -:link(4_16,Section_howto.html#4_16) -:link(4_17,Section_howto.html#4_17) -:link(4_18,Section_howto.html#4_18) -:link(4_19,Section_howto.html#4_19) -:link(4_20,Section_howto.html#4_20) -:link(4_21,Section_howto.html#4_21) +:link(pkg_1,Section_packages.html#pkg_1) +:link(pkg_2,Section_packages.html#pkg_2) -:link(9_1,Section_python.html#9_1) -:link(9_2,Section_python.html#9_2) -:link(9_3,Section_python.html#9_3) -:link(9_4,Section_python.html#9_4) -:link(9_5,Section_python.html#9_5) -:link(9_6,Section_python.html#9_6) -:link(9_7,Section_python.html#9_7) +:link(acc_1,Section_accelerate.html#acc_1) +:link(acc_2,Section_accelerate.html#acc_2) +:link(acc_3,Section_accelerate.html#acc_3) +:link(acc_4,Section_accelerate.html#acc_4) +:link(acc_5,Section_accelerate.html#acc_5) -:link(10_1,Section_accelerate.html#10_1) -:link(10_2,Section_accelerate.html#10_2) -:link(10_3,Section_accelerate.html#10_3) -:link(10_4,Section_accelerate.html#10_4) +:link(howto_1,Section_howto.html#howto_1) +:link(howto_2,Section_howto.html#howto_2) +:link(howto_3,Section_howto.html#howto_3) +:link(howto_4,Section_howto.html#howto_4) +:link(howto_5,Section_howto.html#howto_5) +:link(howto_6,Section_howto.html#howto_6) +:link(howto_7,Section_howto.html#howto_7) +:link(howto_8,Section_howto.html#howto_8) +:link(howto_9,Section_howto.html#howto_9) +:link(howto_10,Section_howto.html#howto_10) +:link(howto_11,Section_howto.html#howto_11) +:link(howto_12,Section_howto.html#howto_12) +:link(howto_13,Section_howto.html#howto_13) +:link(howto_14,Section_howto.html#howto_14) +:link(howto_15,Section_howto.html#howto_15) +:link(howto_16,Section_howto.html#howto_16) +:link(howto_17,Section_howto.html#howto_17) +:link(howto_18,Section_howto.html#howto_18) +:link(howto_19,Section_howto.html#howto_19) +:link(howto_20,Section_howto.html#howto_20) +:link(howto_21,Section_howto.html#howto_21) -:link(11_1,Section_errors.html#11_1) -:link(11_2,Section_errors.html#11_2) -:link(11_3,Section_errors.html#11_3) +:link(mod_1,Section_modify.html#mod_1) +:link(mod_2,Section_modify.html#mod_2) +:link(mod_3,Section_modify.html#mod_3) +:link(mod_4,Section_modify.html#mod_4) +:link(mod_5,Section_modify.html#mod_5) +:link(mod_6,Section_modify.html#mod_6) +:link(mod_7,Section_modify.html#mod_7) +:link(mod_8,Section_modify.html#mod_8) +:link(mod_9,Section_modify.html#mod_9) +:link(mod_10,Section_modify.html#mod_10) +:link(mod_11,Section_modify.html#mod_11) +:link(mod_12,Section_modify.html#mod_12) +:link(mod_13,Section_modify.html#mod_13) +:link(mod_14,Section_modify.html#mod_14) -:link(12_1,Section_history.html#12_1) -:link(12_2,Section_history.html#12_2) +:link(py_1,Section_python.html#py_1) +:link(py_2,Section_python.html#py_2) +:link(py_3,Section_python.html#py_3) +:link(py_4,Section_python.html#py_4) +:link(py_5,Section_python.html#py_5) +:link(py_6,Section_python.html#py_6) +:link(py_7,Section_python.html#py_7) + +:link(err_1,Section_errors.html#err_1) +:link(err_2,Section_errors.html#err_2) +:link(err_3,Section_errors.html#err_3) + +:link(hist_1,Section_history.html#hist_1) +:link(hist_2,Section_history.html#hist_2) diff --git a/doc/Section_accelerate.html b/doc/Section_accelerate.html index 069462f569..b8c2b3a62a 100644 --- a/doc/Section_accelerate.html +++ b/doc/Section_accelerate.html @@ -1,6 +1,6 @@ -
    Previous Section - LAMMPS WWW Site - -LAMMPS Documentation - LAMMPS Commands - Next +
    Previous Section - LAMMPS WWW Site - +LAMMPS Documentation - LAMMPS Commands - Next Section
    @@ -11,7 +11,7 @@ Section
    -

    10. Using accelerated CPU and GPU styles +

    5. Using accelerated CPU and GPU styles

    Accelerated versions of various pair_style, fixes, computes, and other commands have @@ -36,7 +36,7 @@ style exist in LAMMPS:

    Assuming you have built LAMMPS with the appropriate package, these styles can be invoked by specifying them explicitly in your input -script. Or you can use the -suffix command-line +script. Or you can use the -suffix command-line switch to invoke the accelerated versions automatically, without changing your input script. The suffix command allows you to set a suffix explicitly and @@ -47,10 +47,11 @@ input script. speed-up the pairwise calculations of your simulation by 5-25%.

    Styles with an "omp" suffix are part of the USER-OMP package and allow -a pair-style to be run in threaded mode using OpenMP. This can be -useful on nodes with high-core counts when using less MPI processes +a pair-style to be run in multi-threaded mode using OpenMP. This can +be useful on nodes with high-core counts when using less MPI processes than cores is advantageous, e.g. when running with PPPM so that FFTs -are run on fewer MPI processors. +are run on fewer MPI processors or when the many MPI tasks would +overload the available bandwidth for communication.

    Styles with a "gpu" or "cuda" suffix are part of the GPU or USER-CUDA packages, and can be run on NVIDIA GPUs associated with your CPUs. @@ -58,9 +59,9 @@ The speed-up due to GPU usage depends on a variety of factors, as discussed below.

    To see what styles are currently available in each of the accelerated -packages, see this section of the manual. -A list of accelerated styles is included in the pair, fix, compute, -and kspace sections. +packages, see this section of the +manual. A list of accelerated styles is included in the pair, fix, +compute, and kspace sections.

    The following sections explain:

    @@ -73,17 +74,17 @@ and kspace sections.

    The final section compares and contrasts the GPU and USER-CUDA packages, since they are both designed to use NVIDIA GPU hardware.

    -10.1 OPT package
    -10.5 USER-OMP package
    -10.2 GPU package
    -10.3 USER-CUDA package
    -10.4 Comparison of GPU and USER-CUDA packages
    +5.1 OPT package
    +5.2 USER-OMP package
    +5.3 GPU package
    +5.4 USER-CUDA package
    +5.5 Comparison of GPU and USER-CUDA packages


    -

    10.1 OPT package +

    5.1 OPT package

    The OPT package was developed by James Fischer (High Performance Technologies), David Richie, and Vincent Natoli (Stone Ridge @@ -112,16 +113,128 @@ to 20% savings.


    -

    10.2 USER-OMP package +

    5.2 USER-OMP package

    -

    This section will be written when the USER-OMP package is released -in main LAMMPS. +

    The USER-OMP package was developed by Axel Kohlmeyer at Temple University. +It provides multi-threaded versions of most pair styles, all dihedral +styles and a few fixes in LAMMPS. The package currently uses the OpenMP +interface which requires using a specific compiler flag in the makefile +to enable multiple threads; without this flag the corresponding pair +styles will still be compiled and work, but do not support multi-threading. +

    +

    Building LAMMPS with the USER-OMP package: +

    +

    The procedure for building LAMMPS with the USER-OMP package is simple. +You have to edit your machine specific makefile to add the flag to +enable OpenMP support to the CCFLAGS and LINKFLAGS variables. For the +GNU compilers for example this flag is called -fopenmp. Check your +compiler documentation to find out which flag you need to add. +The rest of the compilation is the same as for any other package which +has no additional library dependencies: +

    +
    make yes-user-omp
    +make machine 
    +
    +

    Please note that this will only install accelerated versions +of styles that are already installed, so you want to install +this package as the last package, or else you may be missing +some accelerated styles. If you plan to uninstall some package, +you should first uninstall the USER-OMP package then the other +package and then re-install USER-OMP, to make sure that there +are no orphaned omp style files present, which would lead to +compilation errors. +

    +

    If your input script uses one of regular styles that are also +exist as an OpenMP version in the USER-OMP package you can run +it as follows: +

    +
    env OMP_NUM_THREADS=4 lmp_serial -sf omp -in in.script
    +env OMP_NUM_THREADS=2 mpirun -np 2 lmp_machine -sf omp -in in.script
    +mpirun -x OMP_NUM_THREADS=2 -np 2 lmp_machine -sf omp -in in.script 
    +
    +

    The value of the environment variable OMP_NUM_THREADS determines how +many threads per MPI task are launched. All three examples above use +a total of 4 CPU cores. For different MPI implementations the method +to pass the OMP_NUM_THREADS environment variable to all processes is +different. Two different variants, one for MPICH and OpenMPI, respectively +are shown above. Please check the documentation of your MPI installation +for additional details. Alternatively, the value provided by OMP_NUM_THREADS +can be overridded with the package omp command. +Depending on which styles are accelerated in your input, you should +see a reduction in the "Pair time" and/or "Bond time" and "Loop time" +printed out at the end of the run. The optimal ratio of MPI to OpenMP +can vary a lot and should always be confirmed through some benchmark +runs for the current system and on the current machine. +

    +

    Restrictions: +

    +

    None of the pair styles in the USER-OMP package support the "inner", +"middle", "outer" options for r-RESPA integration, only the "pair" +option is supported. +

    +

    Parallel efficiency and performance tips: +

    +

    In most simple cases the MPI parallelization in LAMMPS is more +efficient than multi-threading implemented in the USER-OMP package. +Also the parallel efficiency varies between individual styles. +On the other hand, in many cases you still want to use the omp version +- even when compiling or running without OpenMP support - since they +all contain optimizations similar to those in the OPT package, which +can result in serial speedup. +

    +

    Using multi-threading is most effective under the following circumstances: +

    +
    • Individual compute nodes have a significant number of CPU cores +but the CPU itself has limited memory bandwidth, e.g. Intel Xeon 53xx +(Clovertown) and 54xx (Harpertown) quad core processors. Running +one MPI task per CPU core will result in significant performance +degradation, so that running with 4 or even only 2 MPI tasks per +nodes is faster. Running in hybrid MPI+OpenMP mode will reduce the +inter-node communication bandwidth contention in the same way, +but offers and additional speedup from utilizing the otherwise +idle CPU cores. + +
    • The interconnect used for MPI communication is not able to provide +sufficient bandwidth for a large number of MPI tasks per node. +This applies for example to running over gigabit ethernet or +on Cray XT4 or XT5 series supercomputers. Same as in the aforementioned +case this effect worsens with using an increasing number of nodes. + +
    • The input is a system that has an inhomogeneous particle density +which cannot be mapped well to the domain decomposition scheme +that LAMMPS employs. While this can be to some degree alleviated +through using the processors keyword, multi-threading +provides a parallelism that parallelizes over the number of particles +not their distribution in space. + +
    • Finally, multi-threaded styles can improve performance when running +LAMMPS in "capability mode", i.e. near the point where the MPI +parallelism scales out. This can happen in particular when using +as kspace style for long-range electrostatics. Here the scaling +of the kspace style is the performance limiting factor and using +multi-threaded styles allows to operate the kspace style at the +limit of scaling and then increase performance parallelizing +the real space calculations with hybrid MPI+OpenMP. Sometimes +additional speedup can be achived by increasing the real-space +coulomb cutoff and thus reducing the work in the kspace part. +
    +

    The best parallel efficiency from omp styles is typically +achieved when there is at least one MPI task per physical +processor, i.e. socket or die. +

    +

    Using threads on hyper-threading enabled cores is usually +counterproductive, as the cost in additional memory bandwidth +requirements is not offset by the gain in CPU utilization +through hyper-threading. +

    +

    A description of the multi-threading strategy and some performance +examples are presented here



    -

    10.3 GPU package +

    5.3 GPU package

    The GPU package was developed by Mike Brown at ORNL. It provides GPU versions of several pair styles and for long-range Coulombics via the @@ -164,10 +277,10 @@ hardware and install specific NVIDIA CUDA software on your system:

    As with other packages that include a separately compiled library, you need to first build the GPU library, before building LAMMPS itself. -General instructions for doing this are in this -section of the manual. For this package, -do the following, using a Makefile in lib/gpu appropriate for your -system: +General instructions for doing this are in this +section of the manual. For this +package, do the following, using a Makefile in lib/gpu appropriate for +your system:

    cd lammps/lib/gpu
     make -f Makefile.linux
    @@ -201,7 +314,7 @@ and in many cases it will be more efficient to run this way.
     

    • To invoke specific styles from the GPU package, you can either append "gpu" to the style name (e.g. pair_style lj/cut/gpu), or use the --suffix command-line switch, or use the +-suffix command-line switch, or use the suffix command.
    • The newton pair setting must be off. @@ -263,7 +376,7 @@ requires that your GPU card support double precision.
      -

      10.4 USER-CUDA package +

      5.4 USER-CUDA package

      The USER-CUDA package was developed by Christian Trott at U Technology Ilmenau in Germany. It provides NVIDIA GPU versions of many pair @@ -275,6 +388,9 @@ many timesteps, to run entirely on the GPU (except for inter-processor MPI communication), so that atom-based data (e.g. coordinates, forces) do not have to move back-and-forth between the CPU and GPU. +

    • The speed-up advantage of this approach is typically better when the +number of atoms per GPU is large +
    • Data will stay on the GPU until a timestep where a non-GPU-ized fix or compute is invoked. Whenever a non-GPU operation occurs (fix, compute, output), data automatically moves back to the CPU as needed. @@ -306,10 +422,10 @@ that its sample projects can be compiled without problems.

      As with other packages that include a separately compiled library, you need to first build the USER-CUDA library, before building LAMMPS -itself. General instructions for doing this are in this -section of the manual. For this package, -do the following, using settings in the lib/cuda Makefiles appropriate -for your system: +itself. General instructions for doing this are in this +section of the manual. For this +package, do the following, using settings in the lib/cuda Makefiles +appropriate for your system:

      • Go to the lammps/lib/cuda directory @@ -363,16 +479,16 @@ suffix are as follows:

        • To invoke specific styles from the USER-CUDA package, you can either append "cuda" to the style name (e.g. pair_style lj/cut/cuda), or use -the -suffix command-line switch, or use the -suffix command. One exception is that the kspace_style -pppm/cuda command has to be requested +the -suffix command-line switch, or use +the suffix command. One exception is that the +kspace_style pppm/cuda command has to be requested explicitly.
        • To use the USER-CUDA package with its default settings, no additional command is needed in your input script. This is because when LAMMPS starts up, it detects if it has been built with the USER-CUDA package. -See the -cuda command-line switch for more -details. +See the -cuda command-line switch for +more details.
        • To change settings for the USER-CUDA package at run-time, the package cuda command can be used near the beginning of your @@ -396,7 +512,7 @@ occurs, the faster your simulation will run.
          -

          10.5 Comparison of GPU and USER-CUDA packages +

          5.5 Comparison of GPU and USER-CUDA packages

          Both the GPU and USER-CUDA packages accelerate a LAMMPS calculation using NVIDIA hardware, but they do it in different ways. diff --git a/doc/Section_accelerate.txt b/doc/Section_accelerate.txt index 0babffd31a..4a9d08b001 100644 --- a/doc/Section_accelerate.txt +++ b/doc/Section_accelerate.txt @@ -1,6 +1,6 @@ -"Previous Section"_Section_python.html - "LAMMPS WWW Site"_lws - +"Previous Section"_Section_packages.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next -Section"_Section_errors.html :c +Section"_Section_howto.html :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) @@ -8,7 +8,7 @@ Section"_Section_errors.html :c :line -10. Using accelerated CPU and GPU styles :h3 +5. Using accelerated CPU and GPU styles :h3 Accelerated versions of various "pair_style"_pair_style.html, "fixes"_fix.html, "computes"_compute.html, and other commands have @@ -34,7 +34,7 @@ style exist in LAMMPS: Assuming you have built LAMMPS with the appropriate package, these styles can be invoked by specifying them explicitly in your input script. Or you can use the "-suffix command-line -switch"_Section_start.html#2_6 to invoke the accelerated versions +switch"_Section_start.html#start_6 to invoke the accelerated versions automatically, without changing your input script. The "suffix"_suffix.html command allows you to set a suffix explicitly and to turn off/on the comand-line switch setting, both from within your @@ -44,10 +44,11 @@ Styles with an "opt" suffix are part of the OPT package and typically speed-up the pairwise calculations of your simulation by 5-25%. Styles with an "omp" suffix are part of the USER-OMP package and allow -a pair-style to be run in threaded mode using OpenMP. This can be -useful on nodes with high-core counts when using less MPI processes +a pair-style to be run in multi-threaded mode using OpenMP. This can +be useful on nodes with high-core counts when using less MPI processes than cores is advantageous, e.g. when running with PPPM so that FFTs -are run on fewer MPI processors. +are run on fewer MPI processors or when the many MPI tasks would +overload the available bandwidth for communication. Styles with a "gpu" or "cuda" suffix are part of the GPU or USER-CUDA packages, and can be run on NVIDIA GPUs associated with your CPUs. @@ -55,9 +56,9 @@ The speed-up due to GPU usage depends on a variety of factors, as discussed below. To see what styles are currently available in each of the accelerated -packages, see "this section"_Section_commands.html#3_5 of the manual. -A list of accelerated styles is included in the pair, fix, compute, -and kspace sections. +packages, see "this section"_Section_commands.html#cmd_5 of the +manual. A list of accelerated styles is included in the pair, fix, +compute, and kspace sections. The following sections explain: @@ -70,16 +71,16 @@ speed-ups you can expect :ul The final section compares and contrasts the GPU and USER-CUDA packages, since they are both designed to use NVIDIA GPU hardware. -10.1 "OPT package"_#10_1 -10.5 "USER-OMP package"_#10_2 -10.2 "GPU package"_#10_3 -10.3 "USER-CUDA package"_#10_4 -10.4 "Comparison of GPU and USER-CUDA packages"_#10_4 :all(b) +5.1 "OPT package"_#acc_1 +5.2 "USER-OMP package"_#acc_2 +5.3 "GPU package"_#acc_3 +5.4 "USER-CUDA package"_#acc_4 +5.5 "Comparison of GPU and USER-CUDA packages"_#acc_5 :all(b) :line :line -10.1 OPT package :h4,link(10_1) +5.1 OPT package :h4,link(acc_1) The OPT package was developed by James Fischer (High Performance Technologies), David Richie, and Vincent Natoli (Stone Ridge @@ -107,15 +108,127 @@ to 20% savings. :line :line -10.2 USER-OMP package :h4,link(10_2) +5.2 USER-OMP package :h4,link(acc_2) -This section will be written when the USER-OMP package is released -in main LAMMPS. +The USER-OMP package was developed by Axel Kohlmeyer at Temple University. +It provides multi-threaded versions of most pair styles, all dihedral +styles and a few fixes in LAMMPS. The package currently uses the OpenMP +interface which requires using a specific compiler flag in the makefile +to enable multiple threads; without this flag the corresponding pair +styles will still be compiled and work, but do not support multi-threading. + +[Building LAMMPS with the USER-OMP package:] + +The procedure for building LAMMPS with the USER-OMP package is simple. +You have to edit your machine specific makefile to add the flag to +enable OpenMP support to the CCFLAGS and LINKFLAGS variables. For the +GNU compilers for example this flag is called {-fopenmp}. Check your +compiler documentation to find out which flag you need to add. +The rest of the compilation is the same as for any other package which +has no additional library dependencies: + +make yes-user-omp +make machine :pre + +Please note that this will only install accelerated versions +of styles that are already installed, so you want to install +this package as the last package, or else you may be missing +some accelerated styles. If you plan to uninstall some package, +you should first uninstall the USER-OMP package then the other +package and then re-install USER-OMP, to make sure that there +are no orphaned {omp} style files present, which would lead to +compilation errors. + +If your input script uses one of regular styles that are also +exist as an OpenMP version in the USER-OMP package you can run +it as follows: + +env OMP_NUM_THREADS=4 lmp_serial -sf omp -in in.script +env OMP_NUM_THREADS=2 mpirun -np 2 lmp_machine -sf omp -in in.script +mpirun -x OMP_NUM_THREADS=2 -np 2 lmp_machine -sf omp -in in.script :pre + +The value of the environment variable OMP_NUM_THREADS determines how +many threads per MPI task are launched. All three examples above use +a total of 4 CPU cores. For different MPI implementations the method +to pass the OMP_NUM_THREADS environment variable to all processes is +different. Two different variants, one for MPICH and OpenMPI, respectively +are shown above. Please check the documentation of your MPI installation +for additional details. Alternatively, the value provided by OMP_NUM_THREADS +can be overridded with the "package omp"_package.html command. +Depending on which styles are accelerated in your input, you should +see a reduction in the "Pair time" and/or "Bond time" and "Loop time" +printed out at the end of the run. The optimal ratio of MPI to OpenMP +can vary a lot and should always be confirmed through some benchmark +runs for the current system and on the current machine. + +[Restrictions:] + +None of the pair styles in the USER-OMP package support the "inner", +"middle", "outer" options for r-RESPA integration, only the "pair" +option is supported. + +[Parallel efficiency and performance tips:] + +In most simple cases the MPI parallelization in LAMMPS is more +efficient than multi-threading implemented in the USER-OMP package. +Also the parallel efficiency varies between individual styles. +On the other hand, in many cases you still want to use the {omp} version +- even when compiling or running without OpenMP support - since they +all contain optimizations similar to those in the OPT package, which +can result in serial speedup. + +Using multi-threading is most effective under the following circumstances: + +Individual compute nodes have a significant number of CPU cores +but the CPU itself has limited memory bandwidth, e.g. Intel Xeon 53xx +(Clovertown) and 54xx (Harpertown) quad core processors. Running +one MPI task per CPU core will result in significant performance +degradation, so that running with 4 or even only 2 MPI tasks per +nodes is faster. Running in hybrid MPI+OpenMP mode will reduce the +inter-node communication bandwidth contention in the same way, +but offers and additional speedup from utilizing the otherwise +idle CPU cores. :ulb,l + +The interconnect used for MPI communication is not able to provide +sufficient bandwidth for a large number of MPI tasks per node. +This applies for example to running over gigabit ethernet or +on Cray XT4 or XT5 series supercomputers. Same as in the aforementioned +case this effect worsens with using an increasing number of nodes. :l + +The input is a system that has an inhomogeneous particle density +which cannot be mapped well to the domain decomposition scheme +that LAMMPS employs. While this can be to some degree alleviated +through using the "processors"_processors.html keyword, multi-threading +provides a parallelism that parallelizes over the number of particles +not their distribution in space. :l + +Finally, multi-threaded styles can improve performance when running +LAMMPS in "capability mode", i.e. near the point where the MPI +parallelism scales out. This can happen in particular when using +as kspace style for long-range electrostatics. Here the scaling +of the kspace style is the performance limiting factor and using +multi-threaded styles allows to operate the kspace style at the +limit of scaling and then increase performance parallelizing +the real space calculations with hybrid MPI+OpenMP. Sometimes +additional speedup can be achived by increasing the real-space +coulomb cutoff and thus reducing the work in the kspace part. :l,ule + +The best parallel efficiency from {omp} styles is typically +achieved when there is at least one MPI task per physical +processor, i.e. socket or die. + +Using threads on hyper-threading enabled cores is usually +counterproductive, as the cost in additional memory bandwidth +requirements is not offset by the gain in CPU utilization +through hyper-threading. + +A description of the multi-threading strategy and some performance +examples are "presented here"_http://sites.google.com/site/akohlmey/software/lammps-icms/lammps-icms-tms2011-talk.pdf?attredirects=0&d=1 :line :line -10.3 GPU package :h4,link(10_3) +5.3 GPU package :h4,link(acc_3) The GPU package was developed by Mike Brown at ORNL. It provides GPU versions of several pair styles and for long-range Coulombics via the @@ -159,9 +272,9 @@ Run lammps/lib/gpu/nvc_get_devices to list supported devices and properties :ul As with other packages that include a separately compiled library, you need to first build the GPU library, before building LAMMPS itself. General instructions for doing this are in "this -section"_doc/Section_start.html#2_3 of the manual. For this package, -do the following, using a Makefile in lib/gpu appropriate for your -system: +section"_doc/Section_start.html#start_3 of the manual. For this +package, do the following, using a Makefile in lib/gpu appropriate for +your system: cd lammps/lib/gpu make -f Makefile.linux @@ -195,7 +308,7 @@ Additional input script requirements to run pair or PPPM styles with a To invoke specific styles from the GPU package, you can either append "gpu" to the style name (e.g. pair_style lj/cut/gpu), or use the -"-suffix command-line switch"_Section_start.html#2_6, or use the +"-suffix command-line switch"_Section_start.html#start_6, or use the "suffix"_suffix.html command. :ulb,l The "newton pair"_newton.html setting must be {off}. :l @@ -256,7 +369,7 @@ requires that your GPU card support double precision. :line :line -10.4 USER-CUDA package :h4,link(10_4) +5.4 USER-CUDA package :h4,link(acc_4) The USER-CUDA package was developed by Christian Trott at U Technology Ilmenau in Germany. It provides NVIDIA GPU versions of many pair @@ -268,6 +381,9 @@ many timesteps, to run entirely on the GPU (except for inter-processor MPI communication), so that atom-based data (e.g. coordinates, forces) do not have to move back-and-forth between the CPU and GPU. :ulb,l +The speed-up advantage of this approach is typically better when the +number of atoms per GPU is large :l + Data will stay on the GPU until a timestep where a non-GPU-ized fix or compute is invoked. Whenever a non-GPU operation occurs (fix, compute, output), data automatically moves back to the CPU as needed. @@ -300,9 +416,9 @@ that its sample projects can be compiled without problems. As with other packages that include a separately compiled library, you need to first build the USER-CUDA library, before building LAMMPS itself. General instructions for doing this are in "this -section"_doc/Section_start.html#2_3 of the manual. For this package, -do the following, using settings in the lib/cuda Makefiles appropriate -for your system: +section"_doc/Section_start.html#start_3 of the manual. For this +package, do the following, using settings in the lib/cuda Makefiles +appropriate for your system: Go to the lammps/lib/cuda directory :ulb,l @@ -356,16 +472,16 @@ suffix are as follows: To invoke specific styles from the USER-CUDA package, you can either append "cuda" to the style name (e.g. pair_style lj/cut/cuda), or use -the "-suffix command-line switch"_Section_start.html#2_6, or use the -"suffix"_suffix.html command. One exception is that the "kspace_style -pppm/cuda"_kspace_style.html command has to be requested +the "-suffix command-line switch"_Section_start.html#start_6, or use +the "suffix"_suffix.html command. One exception is that the +"kspace_style pppm/cuda"_kspace_style.html command has to be requested explicitly. :ulb,l To use the USER-CUDA package with its default settings, no additional command is needed in your input script. This is because when LAMMPS starts up, it detects if it has been built with the USER-CUDA package. -See the "-cuda command-line switch"_Section_start.html#2_6 for more -details. :l +See the "-cuda command-line switch"_Section_start.html#start_6 for +more details. :l To change settings for the USER-CUDA package at run-time, the "package cuda"_package.html command can be used near the beginning of your @@ -388,7 +504,7 @@ occurs, the faster your simulation will run. :line :line -10.5 Comparison of GPU and USER-CUDA packages :h4,link(10_5) +5.5 Comparison of GPU and USER-CUDA packages :h4,link(acc_5) Both the GPU and USER-CUDA packages accelerate a LAMMPS calculation using NVIDIA hardware, but they do it in different ways. diff --git a/doc/Section_commands.html b/doc/Section_commands.html index 0618a5d250..6e1f356a9f 100644 --- a/doc/Section_commands.html +++ b/doc/Section_commands.html @@ -1,5 +1,5 @@ -

          Previous Section - LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands - Next Section +
          Previous Section - LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands - Next Section
          @@ -14,15 +14,15 @@

          This section describes how a LAMMPS input script is formatted and what commands are used to define a LAMMPS simulation.

          -3.1 LAMMPS input script
          -3.2 Parsing rules
          -3.3 Input script structure
          -3.4 Commands listed by category
          -3.5 Commands listed alphabetically
          +3.1 LAMMPS input script
          +3.2 Parsing rules
          +3.3 Input script structure
          +3.4 Commands listed by category
          +3.5 Commands listed alphabetically

          -

          3.1 LAMMPS input script +

          3.1 LAMMPS input script

          LAMMPS executes by reading commands from a input script (text file), one line at a time. When the input script ends, LAMMPS exits. Each @@ -75,7 +75,7 @@ command lists restrictions on how the command can be used.


          -

          3.2 Parsing rules +

          3.2 Parsing rules

          Each non-blank line in the input script is treated as a command. LAMMPS commands are case sensitive. Command names are lower-case, as @@ -134,7 +134,7 @@ allowed, but that should be sufficient for most use cases.


          -

          3.3 Input script structure +

          3.3 Input script structure

          This section describes the structure of a typical LAMMPS input script. The "examples" directory in the LAMMPS distribution contains many @@ -223,11 +223,11 @@ the minimize command. A parallel tempering


          -

          3.4 Commands listed by category +

          3.4 Commands listed by category

          This section lists all LAMMPS commands, grouped by category. The -next section lists the same commands alphabetically. Note that -some style options for some commands are part of specific LAMMPS +next section lists the same commands alphabetically. Note +that some style options for some commands are part of specific LAMMPS packages, which means they cannot be used unless the package was included when LAMMPS was built. Not all packages are included in a default LAMMPS build. These dependencies are listed as Restrictions @@ -300,12 +300,12 @@ in the command's documentation.


          -

          3.5 Individual commands +

          3.5 Individual commands

          This section lists all LAMMPS commands alphabetically, with a separate -listing below of styles within certain commands. The previous -section lists the same commands, grouped by category. Note that -some style options for some commands are part of specific LAMMPS +listing below of styles within certain commands. The previous +section lists the same commands, grouped by category. Note +that some style options for some commands are part of specific LAMMPS packages, which means they cannot be used unless the package was included when LAMMPS was built. Not all packages are included in a default LAMMPS build. These dependencies are listed as Restrictions @@ -338,22 +338,25 @@ of each style or click on the style itself for a full description:

          - - - - - - - - + + + + + + + +
          adaptaddforceaveforceave/atomave/correlateave/histoave/spatialave/time
          bond/breakbond/createbond/swapbox/relaxdeformdepositdragdt/reset
          efieldenforce2devaporateexternalfreezegravityheatindent
          langevinlineforcemomentummovemsstnebnphnph/asphere
          nph/spherenptnpt/aspherenpt/spherenvenve/aspherenve/limitnve/noforce
          nve/spherenvtnvt/aspherenvt/sllodnvt/sphereorient/fccplaneforcepoems
          pourpress/berendsenprintqeq/combreax/bondsrecenterrigidrigid/nve
          rigid/nvtsetforceshakespringspring/rgspring/selfsrdstore/force
          store/statetemp/berendsentemp/rescalethermal/conductivitytmdttmviscosityviscous
          wall/colloidwall/granwall/harmonicwall/lj126wall/lj93wall/reflectwall/regionwall/srd +
          efieldenforce2devaporateexternalfreezegcmcgravityheat
          indentlangevinlineforcemomentummovemsstnebnph
          nphugnph/aspherenph/spherenptnpt/aspherenpt/spherenvenve/asphere
          nve/asphere/noforcenve/limitnve/linenve/noforcenve/spherenve/trinvtnvt/asphere
          nvt/sllodnvt/sphereorient/fccplaneforcepoemspourpress/berendsenprint
          qeq/combreax/bondsrecenterrestrainrigidrigid/nverigid/nvtsetforce
          shakespringspring/rgspring/selfsrdstore/forcestore/statetemp/berendsen
          temp/rescalethermal/conductivitytmdttmviscosityviscouswall/colloidwall/gran
          wall/harmonicwall/lj126wall/lj93wall/reflectwall/regionwall/srd

          These are fix styles contributed by users, which can be used if -LAMMPS is built with the appropriate package. +LAMMPS is built with the appropriate +package.

          These are accelerated fix styles, which can be used if LAMMPS is @@ -361,9 +364,9 @@ built with the appropriate accelerated package.


          @@ -385,11 +388,12 @@ each style or click on the style itself for a full description:

          These are compute styles contributed by users, which can be used if -LAMMPS is built with the appropriate package. +LAMMPS is built with the appropriate +package.

          These are accelerated compute styles, which can be used if LAMMPS is @@ -409,30 +413,34 @@ potentials. Click on the style itself for a full description:

          - - - - - - - - - - - - - - - + + + + + + + + + + + + + + +
          nonehybridhybrid/overlayadp
          airebobornborn/coul/longbuck
          buck/coul/cutbuck/coul/longcolloidcomb
          coul/cutcoul/debyecoul/longdipole/cut
          dpddpd/tstatdsmceam
          eam/alloyeam/fseimgauss
          gaybernegran/hertz/historygran/hookegran/hooke/history
          hbond/dreiding/ljhbond/dreiding/morselj/charmm/coul/charmmlj/charmm/coul/charmm/implicit
          lj/charmm/coul/longlj/class2lj/class2/coul/cutlj/class2/coul/long
          lj/cutlj/cut/coul/cutlj/cut/coul/debyelj/cut/coul/long
          lj/cut/coul/long/tip4plj/expandlj/gromacslj/gromacs/coul/gromacs
          lj/smoothlj96/cutlubricatemeam
          morseperi/lpsperi/pmbreax
          reboresquaredsoftsw
          tabletersofftersoff/zblyukawa
          yukawa/colloid +
          airebobornborn/coul/longbrownian
          brownian/polybuckbuck/coul/cutbuck/coul/long
          colloidcombcoul/cutcoul/debye
          coul/longdipole/cutdpddpd/tstat
          dsmceameam/alloyeam/fs
          eimgaussgaybernegran/hertz/history
          gran/hookegran/hooke/historyhbond/dreiding/ljhbond/dreiding/morse
          line/ljlj/charmm/coul/charmmlj/charmm/coul/charmm/implicitlj/charmm/coul/long
          lj/class2lj/class2/coul/cutlj/class2/coul/longlj/cut
          lj/cut/coul/cutlj/cut/coul/debyelj/cut/coul/longlj/cut/coul/long/tip4p
          lj/expandlj/gromacslj/gromacs/coul/gromacslj/smooth
          lj96/cutlubricatelubricate/polylubricateU
          lubricateU/polymeammorseperi/lps
          peri/pmbreaxreboresquared
          softswtabletersoff
          tersoff/zbltri/ljyukawayukawa/colloid

          These are pair styles contributed by users, which can be used if -LAMMPS is built with the appropriate package. +LAMMPS is built with the appropriate +package.

          These are accelerated pair styles, which can be used if LAMMPS is @@ -440,18 +448,35 @@ built with the appropriate accelerated package.

          - + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +
          born/coul/long/cudabuck/coul/cut/cudabuck/coul/long/cudabuck/cuda
          adp/ompairebo/ompborn/coul/long/cudaborn/coul/long/omp
          born/ompbuck/coul/cut/cudabuck/coul/cut/ompbuck/coul/long/cuda
          buck/coul/long/ompbuck/coul/ompbuck/cudabuck/omp
          cg/cmm/coul/cut/cudacg/cmm/coul/debye/cudacg/cmm/coul/long/cudacg/cmm/coul/long/gpu
          cg/cmm/cudacg/cmm/gpueam/alloy/cudaeam/alloy/opt
          eam/cudaeam/fs/cudaeam/fs/opteam/opt
          gayberne/gpugran/hooke/cudalj/charmm/coul/charmm/cudalj/charmm/coul/charmm/implicit/cuda
          lj/charmm/coul/long/cudalj/charmm/coul/long/gpulj/charmm/coul/long/optlj/class2/coul/cut/cuda
          lj/class2/coul/long/cudalj/class2/coul/long/gpulj/class2/cudalj/class2/gpu
          lj/cut/coul/cut/cudalj/cut/coul/cut/gpulj/cut/coul/debye/cudalj/cut/coul/long/cuda
          lj/cut/coul/long/gpulj/cut/cudalj/cut/experimental/cudalj/cut/gpu
          lj/cut/optlj/expand/cudalj/expand/gpulj/gromacs/coul/gromacs/cuda
          lj/gromacs/cudalj/smooth/cudalj96/cut/cudalj96/cut/gpu
          morse/cudamorse/gpumorse/optresquared/gpu +
          cg/cmm/cudacg/cmm/gpucolloid/ompcomb/omp
          coul/cut/ompcoul/debye/ompcoul/long/gpucoul/long/omp
          dipole/cut/ompdipole/sf/ompdpd/ompdpd/tstat/omp
          eam/alloy/cudaeam/alloy/ompeam/alloy/opteam/cd/omp
          eam/cudaeam/fs/cudaeam/fs/ompeam/fs/opt
          eam/ompeam/optedip/ompeim/omp
          gauss/ompgayberne/gpugayberne/ompgran/hertz/history/omp
          gran/hooke/cudagran/hooke/history/ompgran/hooke/omphbond/dreiding/lj/omp
          hbond/dreiding/morse/omplj/charmm/coul/charmm/cudalj/charmm/coul/charmm/omplj/charmm/coul/charmm/implicit/cuda
          lj/charmm/coul/charmm/implicit/omplj/charmm/coul/long/cudalj/charmm/coul/long/gpulj/charmm/coul/long/omp
          lj/charmm/coul/long/optlj/class2/coul/cut/cudalj/class2/coul/cut/omplj/class2/coul/long/cuda
          lj/class2/coul/long/gpulj/class2/coul/long/omplj/class2/cudalj/class2/gpu
          lj/class2/omplj/coul/omplj/cut/coul/cut/cudalj/cut/coul/cut/gpu
          lj/cut/coul/cut/omplj/cut/coul/debye/cudalj/cut/coul/debye/omplj/cut/coul/long/cuda
          lj/cut/coul/long/gpulj/cut/coul/long/omplj/cut/coul/long/optlj/cut/coul/long/tip4p/omp
          lj/cut/coul/long/tip4p/optlj/cut/cudalj/cut/experimental/cudalj/cut/gpu
          lj/cut/omplj/cut/optlj/expand/cudalj/expand/gpu
          lj/expand/omplj/gromacs/coul/gromacs/cudalj/gromacs/coul/gromacs/omplj/gromacs/cuda
          lj/gromacs/omplj/sf/omplj/smooth/cudalj/smooth/omp
          lj96/cut/cudalj96/cut/gpulj96/cut/omplubricate/omp
          morse/cudamorse/gpumorse/ompmorse/opt
          peri/lps/ompperi/pmb/omprebo/ompresquared/gpu resquared/omp
          soft/ompsw/cudasw/omptable/omp
          tersoff/cudatersoff/omptersoff/zbl/ompyukawa/omp
          yukawa/colloid/omp

          @@ -468,7 +493,8 @@ potentials. Click on the style itself for a full description:

          These are bond styles contributed by users, which can be used if -LAMMPS is built with the appropriate package. +LAMMPS is built with the appropriate +package.

          harmonic/shiftharmonic/shift/cut @@ -488,7 +514,8 @@ angle potentials. Click on the style itself for a full description:

          These are angle styles contributed by users, which can be used if -LAMMPS is built with the appropriate package. +LAMMPS is built with the appropriate +package.

          cg/cmmcosine/shiftcosine/shift/exp @@ -508,12 +535,22 @@ description:

          These are dihedral styles contributed by users, which can be used if -LAMMPS is built with the appropriate package. +LAMMPS is built with the appropriate +package.

          +

          These are accelerated dihedral styles, which can be used if LAMMPS is +built with the appropriate accelerated +package. +

          + +

          Improper_style potentials @@ -539,7 +576,8 @@ Kspace solvers. Click on the style itself for a full description:

          These are Kspace solvers contributed by users, which can be used if -LAMMPS is built with the appropriate package. +LAMMPS is built with the appropriate +package.

          + + +
          ewald/n diff --git a/doc/Section_commands.txt b/doc/Section_commands.txt index eb3ed89d51..00cb93f7cd 100644 --- a/doc/Section_commands.txt +++ b/doc/Section_commands.txt @@ -1,4 +1,4 @@ -"Previous Section"_Section_start.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_howto.html :c +"Previous Section"_Section_start.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_packages.html :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) @@ -11,15 +11,15 @@ This section describes how a LAMMPS input script is formatted and what commands are used to define a LAMMPS simulation. -3.1 "LAMMPS input script"_#3_1 -3.2 "Parsing rules"_#3_2 -3.3 "Input script structure"_#3_3 -3.4 "Commands listed by category"_#3_4 -3.5 "Commands listed alphabetically"_#3_5 :all(b) +3.1 "LAMMPS input script"_#cmd_1 +3.2 "Parsing rules"_#cmd_2 +3.3 "Input script structure"_#cmd_3 +3.4 "Commands listed by category"_#cmd_4 +3.5 "Commands listed alphabetically"_#cmd_5 :all(b) :line -3.1 LAMMPS input script :link(3_1),h4 +3.1 LAMMPS input script :link(cmd_1),h4 LAMMPS executes by reading commands from a input script (text file), one line at a time. When the input script ends, LAMMPS exits. Each @@ -72,7 +72,7 @@ command lists restrictions on how the command can be used. :line -3.2 Parsing rules :link(3_2),h4 +3.2 Parsing rules :link(cmd_2),h4 Each non-blank line in the input script is treated as a command. LAMMPS commands are case sensitive. Command names are lower-case, as @@ -131,7 +131,7 @@ allowed, but that should be sufficient for most use cases. :line -3.3 Input script structure :h4,link(3_3) +3.3 Input script structure :h4,link(cmd_3) This section describes the structure of a typical LAMMPS input script. The "examples" directory in the LAMMPS distribution contains many @@ -220,11 +220,11 @@ the "minimize"_minimize.html command. A parallel tempering :line -3.4 Commands listed by category :link(3_4),h4 +3.4 Commands listed by category :link(cmd_4),h4 This section lists all LAMMPS commands, grouped by category. The -"next section"_#3_5 lists the same commands alphabetically. Note that -some style options for some commands are part of specific LAMMPS +"next section"_#cmd_5 lists the same commands alphabetically. Note +that some style options for some commands are part of specific LAMMPS packages, which means they cannot be used unless the package was included when LAMMPS was built. Not all packages are included in a default LAMMPS build. These dependencies are listed as Restrictions @@ -297,12 +297,12 @@ Miscellaneous: :line -3.5 Individual commands :h4,link(3_5),link(comm) +3.5 Individual commands :h4,link(cmd_5),link(comm) This section lists all LAMMPS commands alphabetically, with a separate listing below of styles within certain commands. The "previous -section"_#3_4 lists the same commands, grouped by category. Note that -some style options for some commands are part of specific LAMMPS +section"_#cmd_4 lists the same commands, grouped by category. Note +that some style options for some commands are part of specific LAMMPS packages, which means they cannot be used unless the package was included when LAMMPS was built. Not all packages are included in a default LAMMPS build. These dependencies are listed as Restrictions @@ -418,6 +418,7 @@ of each style or click on the style itself for a full description: "evaporate"_fix_evaporate.html, "external"_fix_external.html, "freeze"_fix_freeze.html, +"gcmc"_fix_gcmc.html, "gravity"_fix_gravity.html, "heat"_fix_heat.html, "indent"_fix_indent.html, @@ -428,6 +429,7 @@ of each style or click on the style itself for a full description: "msst"_fix_msst.html, "neb"_fix_neb.html, "nph"_fix_nh.html, +"nphug"_fix_nphug.html, "nph/asphere"_fix_nph_asphere.html, "nph/sphere"_fix_nph_sphere.html, "npt"_fix_nh.html, @@ -435,9 +437,12 @@ of each style or click on the style itself for a full description: "npt/sphere"_fix_npt_sphere.html, "nve"_fix_nve.html, "nve/asphere"_fix_nve_asphere.html, +"nve/asphere/noforce"_fix_nve_asphere_noforce.html, "nve/limit"_fix_nve_limit.html, +"nve/line"_fix_nve_line.html, "nve/noforce"_fix_nve_noforce.html, "nve/sphere"_fix_nve_sphere.html, +"nve/tri"_fix_nve_tri.html, "nvt"_fix_nh.html, "nvt/asphere"_fix_nvt_asphere.html, "nvt/sllod"_fix_nvt_sllod.html, @@ -451,6 +456,7 @@ of each style or click on the style itself for a full description: "qeq/comb"_fix_qeq_comb.html, "reax/bonds"_fix_reax_bonds.html, "recenter"_fix_recenter.html, +"restrain"_fix_restrain.html, "rigid"_fix_rigid.html, "rigid/nve"_fix_rigid.html, "rigid/nvt"_fix_rigid.html, @@ -479,11 +485,15 @@ of each style or click on the style itself for a full description: "wall/srd"_fix_wall_srd.html :tb(c=8,ea=c) These are fix styles contributed by users, which can be used if -"LAMMPS is built with the appropriate package"_Section_start.html#2_3. +"LAMMPS is built with the appropriate +package"_Section_start.html#start_3. +"addtorque"_fix_addtorque.html, "atc"_fix_atc.html, "imd"_fix_imd.html, "langevin/eff"_fix_langevin_eff.html, +"meso"_fix_meso.html, +"meso/stationary"_fix_meso_stationary.html, "nph/eff"_fix_nh_eff.html, "npt/eff"_fix_nh_eff.html, "nve/eff"_fix_nve_eff.html, @@ -499,13 +509,15 @@ package"_Section_accelerate.html. "freeze/cuda"_fix_freeze.html, "addforce/cuda"_fix_addforce.html, -"addtorque"_fix_addtorque.html, "aveforce/cuda"_fix_aveforce.html, "enforce2d/cuda"_fix_enforce2d.html, "gravity/cuda"_fix_gravity.html, +"gravity/omp"_fix_gravity.html, "npt/cuda"_fix_nh.html, "nve/cuda"_fix_nh.html, +"nve/sphere/omp"_fix_nve_sphere.html, "nvt/cuda"_fix_nh.html, +"qeq/comb/omp"_fix_qeq_comb.html, "setforce/cuda"_fix_setforce.html, "shake/cuda"_fix_shake.html, "temp/berendsen/cuda"_fix_temp_berendsen.html, @@ -569,11 +581,15 @@ each style or click on the style itself for a full description: "ti"_compute_ti.html :tb(c=6,ea=c) These are compute styles contributed by users, which can be used if -"LAMMPS is built with the appropriate package"_Section_start.html#2_3. +"LAMMPS is built with the appropriate +package"_Section_start.html#start_3. "ackland/atom"_compute_ackland_atom.html, "ke/eff"_compute_ke_eff.html, "ke/atom/eff"_compute_ke_atom_eff.html, +"meso_e/atom"_compute_meso_e_atom.html, +"meso_rho/atom"_compute_meso_rho_atom.html, +"meso_t/atom"_compute_meso_t_atom.html, "temp/eff"_compute_temp_eff.html, "temp/deform/eff"_compute_temp_deform_eff.html, "temp/region/eff"_compute_temp_region_eff.html, @@ -602,6 +618,8 @@ potentials. Click on the style itself for a full description: "airebo"_pair_airebo.html, "born"_pair_born.html, "born/coul/long"_pair_born.html, +"brownian"_pair_brownian.html, +"brownian/poly"_pair_brownian.html, "buck"_pair_buck.html, "buck/coul/cut"_pair_buck.html, "buck/coul/long"_pair_buck.html, @@ -625,6 +643,7 @@ potentials. Click on the style itself for a full description: "gran/hooke/history"_pair_gran.html, "hbond/dreiding/lj"_pair_hbond_dreiding.html, "hbond/dreiding/morse"_pair_hbond_dreiding.html, +"line/lj"_pair_line_lj.html, "lj/charmm/coul/charmm"_pair_charmm.html, "lj/charmm/coul/charmm/implicit"_pair_charmm.html, "lj/charmm/coul/long"_pair_charmm.html, @@ -642,6 +661,9 @@ potentials. Click on the style itself for a full description: "lj/smooth"_pair_lj_smooth.html, "lj96/cut"_pair_lj96.html, "lubricate"_pair_lubricate.html, +"lubricate/poly"_pair_lubricate.html, +"lubricateU"_pair_lubricateU.html, +"lubricateU/poly"_pair_lubricateU.html, "meam"_pair_meam.html, "morse"_pair_morse.html, "peri/lps"_pair_peri.html, @@ -654,11 +676,13 @@ potentials. Click on the style itself for a full description: "table"_pair_table.html, "tersoff"_pair_tersoff.html, "tersoff/zbl"_pair_tersoff_zbl.html, +"tri/lj"_pair_tri_lj.html, "yukawa"_pair_yukawa.html, "yukawa/colloid"_pair_yukawa_colloid.html :tb(c=4,ea=c) These are pair styles contributed by users, which can be used if -"LAMMPS is built with the appropriate package"_Section_start.html#2_3. +"LAMMPS is built with the appropriate +package"_Section_start.html#start_3. "awpmd/cut"_pair_awpmd.html, "buck/coul"_pair_buck_coul.html, @@ -668,63 +692,136 @@ These are pair styles contributed by users, which can be used if "coul/long/gpu"_pair_coul.html, "dipole/sf"_pair_dipole.html, "eam/cd"_pair_eam.html, +"edip"_pair_edip.html, "eff/cut"_pair_eff.html, "lj/coul"_pair_lj_coul.html, "lj/sf"_pair_lj_sf.html, -"reax/c"_pair_reax_c.html :tb(c=4,ea=c) +"reax/c"_pair_reax_c.html, +"sph/heatconduction"_pair_heatconduction.html, +"sph/idealgas"_pair_idealgas.html, +"sph/lj"_pair_lj.html, +"sph/rhosum"_pair_rhosum.html, +"sph/taitwater"_pair_taitwater.html, +"sph/taitwater/morris"_pair_taitwater_morris.html :tb(c=4,ea=c) These are accelerated pair styles, which can be used if LAMMPS is built with the "appropriate accelerated package"_Section_accelerate.html. +"adp/omp"_pair_adp.html, +"airebo/omp"_pair_airebo.html, "born/coul/long/cuda"_pair_born.html, +"born/coul/long/omp"_pair_born.html, +"born/omp"_pair_born.html, "buck/coul/cut/cuda"_pair_buck.html, +"buck/coul/cut/omp"_pair_buck.html, "buck/coul/long/cuda"_pair_buck.html, +"buck/coul/long/omp"_pair_buck.html, +"buck/coul/omp"_pair_buck_coul.html, "buck/cuda"_pair_buck.html, +"buck/omp"_pair_buck.html, "cg/cmm/coul/cut/cuda"_pair_cmm.html, "cg/cmm/coul/debye/cuda"_pair_cmm.html, "cg/cmm/coul/long/cuda"_pair_cmm.html, "cg/cmm/coul/long/gpu"_pair_cmm.html, "cg/cmm/cuda"_pair_cmm.html, "cg/cmm/gpu"_pair_cmm.html, +"colloid/omp"_pair_colloid.html, +"comb/omp"_pair_comb.html, +"coul/cut/omp"_pair_coul.html, +"coul/debye/omp"_pair_coul.html, +"coul/long/gpu"_pair_coul.html, +"coul/long/omp"_pair_coul.html, +"dipole/cut/omp"_pair_dipole.html, +"dipole/sf/omp"_pair_dipole.html, +"dpd/omp"_pair_dpd.html, +"dpd/tstat/omp"_pair_dpd.html, "eam/alloy/cuda"_pair_eam.html, +"eam/alloy/omp"_pair_eam.html, "eam/alloy/opt"_pair_eam.html, +"eam/cd/omp"_pair_eam.html, "eam/cuda"_pair_eam.html, "eam/fs/cuda"_pair_eam.html, +"eam/fs/omp"_pair_eam.html, "eam/fs/opt"_pair_eam.html, +"eam/omp"_pair_eam.html, "eam/opt"_pair_eam.html, +"edip/omp"_pair_edip.html, +"eim/omp"_pair_eim.html, +"gauss/omp"_pair_gauss.html, "gayberne/gpu"_pair_gayberne.html, +"gayberne/omp"_pair_gayberne.html, +"gran/hertz/history/omp"_pair_gran.html, "gran/hooke/cuda"_pair_gran.html, +"gran/hooke/history/omp"_pair_gran.html, +"gran/hooke/omp"_pair_gran.html, +"hbond/dreiding/lj/omp"_pair_hbond_dreiding.html, +"hbond/dreiding/morse/omp"_pair_hbond_dreiding.html, "lj/charmm/coul/charmm/cuda"_pair_charmm.html, +"lj/charmm/coul/charmm/omp"_pair_charmm.html, "lj/charmm/coul/charmm/implicit/cuda"_pair_charmm.html, +"lj/charmm/coul/charmm/implicit/omp"_pair_charmm.html, "lj/charmm/coul/long/cuda"_pair_charmm.html, "lj/charmm/coul/long/gpu"_pair_charmm.html, +"lj/charmm/coul/long/omp"_pair_charmm.html, "lj/charmm/coul/long/opt"_pair_charmm.html, "lj/class2/coul/cut/cuda"_pair_class2.html, +"lj/class2/coul/cut/omp"_pair_class2.html, "lj/class2/coul/long/cuda"_pair_class2.html, "lj/class2/coul/long/gpu"_pair_class2.html, +"lj/class2/coul/long/omp"_pair_class2.html, "lj/class2/cuda"_pair_class2.html, "lj/class2/gpu"_pair_class2.html, +"lj/class2/omp"_pair_class2.html, +"lj/coul/omp"_pair_lj_coul.html, "lj/cut/coul/cut/cuda"_pair_lj.html, "lj/cut/coul/cut/gpu"_pair_lj.html, +"lj/cut/coul/cut/omp"_pair_lj.html, "lj/cut/coul/debye/cuda"_pair_lj.html, +"lj/cut/coul/debye/omp"_pair_lj.html, "lj/cut/coul/long/cuda"_pair_lj.html, "lj/cut/coul/long/gpu"_pair_lj.html, +"lj/cut/coul/long/omp"_pair_lj.html, +"lj/cut/coul/long/opt"_pair_lj.html, +"lj/cut/coul/long/tip4p/omp"_pair_lj.html, +"lj/cut/coul/long/tip4p/opt"_pair_lj.html, "lj/cut/cuda"_pair_lj.html, "lj/cut/experimental/cuda"_pair_lj.html, "lj/cut/gpu"_pair_lj.html, +"lj/cut/omp"_pair_lj.html, "lj/cut/opt"_pair_lj.html, "lj/expand/cuda"_pair_lj_expand.html, "lj/expand/gpu"_pair_lj_expand.html, +"lj/expand/omp"_pair_lj_expand.html, "lj/gromacs/coul/gromacs/cuda"_pair_gromacs.html, +"lj/gromacs/coul/gromacs/omp"_pair_gromacs.html, "lj/gromacs/cuda"_pair_gromacs.html, +"lj/gromacs/omp"_pair_gromacs.html, +"lj/sf/omp"_pair_lj_sf.html, "lj/smooth/cuda"_pair_lj_smooth.html, +"lj/smooth/omp"_pair_lj_smooth.html, "lj96/cut/cuda"_pair_lj96.html, "lj96/cut/gpu"_pair_lj96.html, +"lj96/cut/omp"_pair_lj96.html, +"lubricate/omp"_pair_lubricate.html, "morse/cuda"_pair_morse.html, "morse/gpu"_pair_morse.html, +"morse/omp"_pair_morse.html, "morse/opt"_pair_morse.html, -"resquared/gpu"_pair_resquared.html :tb(c=4,ea=c) +"peri/lps/omp"_pair_peri.html, +"peri/pmb/omp"_pair_peri.html, +"rebo/omp"_pair_airebo.html, +"resquared/gpu"_pair_resquared.html +"resquared/omp"_pair_resquared.html, +"soft/omp"_pair_soft.html, +"sw/cuda"_pair_sw.html, +"sw/omp"_pair_sw.html, +"table/omp"_pair_table.html, +"tersoff/cuda"_pair_tersoff.html, +"tersoff/omp"_pair_tersoff.html, +"tersoff/zbl/omp"_pair_tersoff_zbl.html, +"yukawa/omp"_pair_yukawa.html, +"yukawa/colloid/omp"_pair_yukawa_colloid.html :tb(c=4,ea=c) :line @@ -745,7 +842,8 @@ potentials. Click on the style itself for a full description: "table"_bond_table.html :tb(c=4,ea=c,w=100) These are bond styles contributed by users, which can be used if -"LAMMPS is built with the appropriate package"_Section_start.html#2_3. +"LAMMPS is built with the appropriate +package"_Section_start.html#start_3. "harmonic/shift"_bond_harmonic_shift.html, "harmonic/shift/cut"_bond_harmonic_shift_cut.html :tb(c=4,ea=c) @@ -769,7 +867,8 @@ angle potentials. Click on the style itself for a full description: "table"_angle_table.html :tb(c=4,ea=c,w=100) These are angle styles contributed by users, which can be used if -"LAMMPS is built with the appropriate package"_Section_start.html#2_3. +"LAMMPS is built with the appropriate +package"_Section_start.html#start_3. "cg/cmm"_angle_cmm.html, "cosine/shift"_angle_cosine_shift.html, @@ -793,10 +892,23 @@ description: "opls"_dihedral_opls.html :tb(c=4,ea=c,w=100) These are dihedral styles contributed by users, which can be used if -"LAMMPS is built with the appropriate package"_Section_start.html#2_3. +"LAMMPS is built with the appropriate +package"_Section_start.html#start_3. "cosine/shift/exp"_dihedral_cosine_shift_exp.html :tb(c=4,ea=c) +These are accelerated dihedral styles, which can be used if LAMMPS is +built with the "appropriate accelerated +package"_Section_accelerate.html. + +"charmm/omp"_dihedral_charmm.html, +"class2/omp"_dihedral_class2.html, +"cosine/shift/exp/omp"_dihedral_cosine_shift_exp.html, +"harmonic/omp"_dihedral_harmonic.html, +"helix/omp"_dihedral_helix.html, +"multi/harmonic/omp"_dihedral_multi_harmonic.html, +"opls/omp"_dihedral_opls.html :tb(c=4,ea=c,w=100) + :line Improper_style potentials :h4 @@ -825,7 +937,8 @@ Kspace solvers. Click on the style itself for a full description: "pppm/tip4p"_kspace_style.html :tb(c=4,ea=c,w=100) These are Kspace solvers contributed by users, which can be used if -"LAMMPS is built with the appropriate package"_Section_start.html#2_3. +"LAMMPS is built with the appropriate +package"_Section_start.html#start_3. "ewald/n"_kspace_style.html :tb(c=4,ea=c,w=100) diff --git a/doc/Section_errors.html b/doc/Section_errors.html index 5ded01db43..4330576f5c 100644 --- a/doc/Section_errors.html +++ b/doc/Section_errors.html @@ -11,18 +11,18 @@ Section
          -

          11. Errors +

          12. Errors

          This section describes the various kinds of errors you can encounter when using LAMMPS.

          -11.1 Common problems
          -11.2 Reporting bugs
          -11.3 Error & warning messages
          +12.1 Common problems
          +12.2 Reporting bugs
          +12.3 Error & warning messages

          -

          11.1 Common problems +

          12.1 Common problems

          If two LAMMPS runs do not produce the same answer on different machines or different numbers of processors, this is typically not a @@ -81,7 +81,7 @@ decide if the WARNING is important or not. A WARNING message that is generated in the middle of a run is only printed to the screen, not to the logfile, to avoid cluttering up thermodynamic output. If LAMMPS crashes or hangs without spitting out an error message first then it -could be a bug (see this section) or one of the following +could be a bug (see this section) or one of the following cases:

          LAMMPS runs in the available memory a processor allows to be @@ -112,7 +112,7 @@ buffering or boost the sizes of messages that can be buffered.


          -

          11.2 Reporting bugs +

          12.2 Reporting bugs

          If you are confident that you have found a bug in LAMMPS, follow these steps. @@ -142,18 +142,22 @@ causing the problem.


          -

          11.3 Error & warning messages +

          12.3 Error & warning messages

          These are two alphabetic lists of the ERROR and WARNING messages LAMMPS prints out and the reason why. If the explanation here is not sufficient, the documentation for the -offending command may help. Grepping the source files for the text of -the error message and staring at the source code and comments is also -not a bad idea! Note that sometimes the same message can be printed -from multiple places in the code. +offending command may help. +Error and warning messages also list the source file and line number +where the error was generated. For example, this message

          -

          Also note that error messages from user-contributed -packages are not listed here. Is such an +

          ERROR: Illegal velocity command (velocity.cpp:78) +

          +

          means that line #78 in the file src/velocity.cpp generated the error. +Looking in the source code may help you figure out what went wrong. +

          +

          Note that error messages from user-contributed +packages are not listed here. If such an error occurs and is not self-explanatory, you'll need to look in the source code or contact the author of the package.

          diff --git a/doc/Section_errors.txt b/doc/Section_errors.txt index 740798f63f..dab3e05cf6 100644 --- a/doc/Section_errors.txt +++ b/doc/Section_errors.txt @@ -8,18 +8,18 @@ Section"_Section_history.html :c :line -11. Errors :h3 +12. Errors :h3 This section describes the various kinds of errors you can encounter when using LAMMPS. -11.1 "Common problems"_#11_1 -11.2 "Reporting bugs"_#11_2 -11.3 "Error & warning messages"_#11_3 :all(b) +12.1 "Common problems"_#err_1 +12.2 "Reporting bugs"_#err_2 +12.3 "Error & warning messages"_#err_3 :all(b) :line -11.1 Common problems :link(11_1),h4 +12.1 Common problems :link(err_1),h4 If two LAMMPS runs do not produce the same answer on different machines or different numbers of processors, this is typically not a @@ -78,7 +78,7 @@ decide if the WARNING is important or not. A WARNING message that is generated in the middle of a run is only printed to the screen, not to the logfile, to avoid cluttering up thermodynamic output. If LAMMPS crashes or hangs without spitting out an error message first then it -could be a bug (see "this section"_#11_2) or one of the following +could be a bug (see "this section"_#err_2) or one of the following cases: LAMMPS runs in the available memory a processor allows to be @@ -109,7 +109,7 @@ buffering or boost the sizes of messages that can be buffered. :line -11.2 Reporting bugs :link(11_2),h4 +12.2 Reporting bugs :link(err_2),h4 If you are confident that you have found a bug in LAMMPS, follow these steps. @@ -139,18 +139,22 @@ As a last resort, you can send an email directly to the :line -11.3 Error & warning messages :h4,link(11_3) +12.3 Error & warning messages :h4,link(err_3) These are two alphabetic lists of the "ERROR"_#error and "WARNING"_#warn messages LAMMPS prints out and the reason why. If the explanation here is not sufficient, the documentation for the -offending command may help. Grepping the source files for the text of -the error message and staring at the source code and comments is also -not a bad idea! Note that sometimes the same message can be printed -from multiple places in the code. +offending command may help. +Error and warning messages also list the source file and line number +where the error was generated. For example, this message -Also note that error messages from "user-contributed -packages"_Section_start.html#2_3 are not listed here. Is such an +ERROR: Illegal velocity command (velocity.cpp:78) + +means that line #78 in the file src/velocity.cpp generated the error. +Looking in the source code may help you figure out what went wrong. + +Note that error messages from "user-contributed +packages"_Section_start.html#start_3 are not listed here. If such an error occurs and is not self-explanatory, you'll need to look in the source code or contact the author of the package. diff --git a/doc/Section_example.html b/doc/Section_example.html index 5e32f0ca3c..94e2d95d64 100644 --- a/doc/Section_example.html +++ b/doc/Section_example.html @@ -9,7 +9,7 @@
          -

          5. Example problems +

          7. Example problems

          The LAMMPS distribution includes an examples sub-directory with several sample problems. Each problem is in a sub-directory of its diff --git a/doc/Section_example.txt b/doc/Section_example.txt index 241f01f70b..947c7957c7 100644 --- a/doc/Section_example.txt +++ b/doc/Section_example.txt @@ -6,7 +6,7 @@ :line -5. Example problems :h3 +7. Example problems :h3 The LAMMPS distribution includes an examples sub-directory with several sample problems. Each problem is in a sub-directory of its diff --git a/doc/Section_history.html b/doc/Section_history.html index 399b4dc23d..522e4e1220 100644 --- a/doc/Section_history.html +++ b/doc/Section_history.html @@ -1,5 +1,7 @@ -

          Previous Section - LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands - Next Section +
          Previous Section - LAMMPS WWW Site - +LAMMPS Documentation - LAMMPS Commands - Next +Section
          @@ -9,69 +11,59 @@
          -

          12. Future and history +

          13. Future and history

          This section lists features we are planning to add to LAMMPS, features of previous versions of LAMMPS, and features of other parallel molecular dynamics codes I've distributed.

          -12.1 Coming attractions
          -12.2 Past versions
          +13.1 Coming attractions
          +13.2 Past versions

          -

          12.1 Coming attractions +

          13.1 Coming attractions

          -

          The current version of LAMMPS incorporates nearly all the features -from previous parallel MD codes developed at Sandia. These include -earlier versions of LAMMPS itself, Warp and ParaDyn for metals, and -GranFlow for granular materials. +

          The Wish list link on the +LAMMPS WWW page gives a list of features we are hoping to add to +LAMMPS in the future, including contact names of individuals you can +email if you are interested in contributing to the developement or +would be a future user of that feature.

          -

          These are new features we'd like to eventually add to LAMMPS. Some -are being worked on; some haven't been implemented because of lack of -time or interest; others are just a lot of work! See this -page on the LAMMPS WWW site for more details. +

          You can also send email to the +developers if you want to add +your wish to the list.

          - - -
          • Coupling to finite elements for streess-strain -
          • New ReaxFF implementation -
          • Nudged elastic band -
          • Temperature accelerated dynamics -
          • Triangulated particles -
          • Stochastic rotation dynamics -
          • Stokesian dynamics via fast lubrication dynamics -
          • Long-range point-dipole solver -
          • Per-atom energy and stress for long-range Coulombics -
          • Long-range Coulombics via Ewald and PPPM for triclinic boxes -
          • Metadynamics -
          • Direct Simulation Monte Carlo - DSMC -

          -

          12.2 Past versions +

          13.2 Past versions

          LAMMPS development began in the mid 1990s under a cooperative research & development agreement (CRADA) between two DOE labs (Sandia and LLNL) -and 3 companies (Cray, Bristol Myers Squibb, and Dupont). Soon after -the CRADA ended, a final F77 version of the code, LAMMPS 99, was -released. As development of LAMMPS continued at Sandia, the memory -management in the code was converted to F90; a final F90 version was -released as LAMMPS 2001. +and 3 companies (Cray, Bristol Myers Squibb, and Dupont). The goal was +to develop a large-scale parallel classical MD code; the coding effort +was led by Steve Plimpton at Sandia. +

          +

          After the CRADA ended, a final F77 version, LAMMPS 99, was +released. As development of LAMMPS continued at Sandia, its memory +management was converted to F90; a final F90 version was released as +LAMMPS 2001.

          The current LAMMPS is a rewrite in C++ and was first publicly released -in 2004. It includes many new features, including features from other -parallel molecular dynamics codes written at Sandia, namely ParaDyn, -Warp, and GranFlow. ParaDyn is a parallel implementation of the -popular serial DYNAMO code developed by Stephen Foiles and Murray Daw -for their embedded atom method (EAM) metal potentials. ParaDyn uses -atom- and force-decomposition algorithms to run in parallel. Warp is -also a parallel implementation of the EAM potentials designed for -large problems, with boundary conditions specific to shearing solids -in varying geometries. GranFlow is a granular materials code with -potentials and boundary conditions peculiar to granular systems. All -of these codes (except ParaDyn) use spatial-decomposition techniques -for their parallelism. +as an open source code in 2004. It includes many new features beyond +those in LAMMPS 99 or 2001. It also includes features from older +parallel MD codes written at Sandia, namely ParaDyn, Warp, and +GranFlow (see below). +

          +

          In late 2006 we began merging new capabilities into LAMMPS that were +developed by Aidan Thompson at Sandia for his MD code GRASP, which has +a parallel framework similar to LAMMPS. Most notably, these have +included many-body potentials - Stillinger-Weber, Tersoff, ReaxFF - +and the associated charge-equilibration routines needed for ReaxFF. +

          +

          The History link on the +LAMMPS WWW page gives a timeline of features added to the +C++ open-source version of LAMMPS over the last several years.

          These older codes are available for download from the LAMMPS WWW site, except for Warp & GranFlow which were primarily used diff --git a/doc/Section_history.txt b/doc/Section_history.txt index f3887b7e09..92600b7e22 100644 --- a/doc/Section_history.txt +++ b/doc/Section_history.txt @@ -1,4 +1,6 @@ -"Previous Section"_Section_errors.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Manual.html :c +"Previous Section"_Section_errors.html - "LAMMPS WWW Site"_lws - +"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next +Section"_Manual.html :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) @@ -6,69 +8,59 @@ :line -12. Future and history :h3 +13. Future and history :h3 This section lists features we are planning to add to LAMMPS, features of previous versions of LAMMPS, and features of other parallel molecular dynamics codes I've distributed. -12.1 "Coming attractions"_#12_1 -12.2 "Past versions"_#12_2 :all(b) +13.1 "Coming attractions"_#hist_1 +13.2 "Past versions"_#hist_2 :all(b) :line -12.1 Coming attractions :h4,link(12_1) +13.1 Coming attractions :h4,link(hist_1) -The current version of LAMMPS incorporates nearly all the features -from previous parallel MD codes developed at Sandia. These include -earlier versions of LAMMPS itself, Warp and ParaDyn for metals, and -GranFlow for granular materials. +The "Wish list link"_http://lammps.sandia.gov/future.html on the +LAMMPS WWW page gives a list of features we are hoping to add to +LAMMPS in the future, including contact names of individuals you can +email if you are interested in contributing to the developement or +would be a future user of that feature. -These are new features we'd like to eventually add to LAMMPS. Some -are being worked on; some haven't been implemented because of lack of -time or interest; others are just a lot of work! See "this -page"_lwsfuture on the LAMMPS WWW site for more details. - -:link(lwsfuture,http://lammps.sandia.gov/future.html) - -Coupling to finite elements for streess-strain -New ReaxFF implementation -Nudged elastic band -Temperature accelerated dynamics -Triangulated particles -Stochastic rotation dynamics -Stokesian dynamics via fast lubrication dynamics -Long-range point-dipole solver -Per-atom energy and stress for long-range Coulombics -Long-range Coulombics via Ewald and PPPM for triclinic boxes -Metadynamics -Direct Simulation Monte Carlo - DSMC :ul +You can also send "email to the +developers"_http://lammps.sandia.gov/authors.html if you want to add +your wish to the list. :line -12.2 Past versions :h4,link(12_2) +13.2 Past versions :h4,link(hist_2) LAMMPS development began in the mid 1990s under a cooperative research & development agreement (CRADA) between two DOE labs (Sandia and LLNL) -and 3 companies (Cray, Bristol Myers Squibb, and Dupont). Soon after -the CRADA ended, a final F77 version of the code, LAMMPS 99, was -released. As development of LAMMPS continued at Sandia, the memory -management in the code was converted to F90; a final F90 version was -released as LAMMPS 2001. +and 3 companies (Cray, Bristol Myers Squibb, and Dupont). The goal was +to develop a large-scale parallel classical MD code; the coding effort +was led by Steve Plimpton at Sandia. + +After the CRADA ended, a final F77 version, LAMMPS 99, was +released. As development of LAMMPS continued at Sandia, its memory +management was converted to F90; a final F90 version was released as +LAMMPS 2001. The current LAMMPS is a rewrite in C++ and was first publicly released -in 2004. It includes many new features, including features from other -parallel molecular dynamics codes written at Sandia, namely ParaDyn, -Warp, and GranFlow. ParaDyn is a parallel implementation of the -popular serial DYNAMO code developed by Stephen Foiles and Murray Daw -for their embedded atom method (EAM) metal potentials. ParaDyn uses -atom- and force-decomposition algorithms to run in parallel. Warp is -also a parallel implementation of the EAM potentials designed for -large problems, with boundary conditions specific to shearing solids -in varying geometries. GranFlow is a granular materials code with -potentials and boundary conditions peculiar to granular systems. All -of these codes (except ParaDyn) use spatial-decomposition techniques -for their parallelism. +as an open source code in 2004. It includes many new features beyond +those in LAMMPS 99 or 2001. It also includes features from older +parallel MD codes written at Sandia, namely ParaDyn, Warp, and +GranFlow (see below). + +In late 2006 we began merging new capabilities into LAMMPS that were +developed by Aidan Thompson at Sandia for his MD code GRASP, which has +a parallel framework similar to LAMMPS. Most notably, these have +included many-body potentials - Stillinger-Weber, Tersoff, ReaxFF - +and the associated charge-equilibration routines needed for ReaxFF. + +The "History link"_http://lammps.sandia.gov/history.html on the +LAMMPS WWW page gives a timeline of features added to the +C++ open-source version of LAMMPS over the last several years. These older codes are available for download from the "LAMMPS WWW site"_lws, except for Warp & GranFlow which were primarily used diff --git a/doc/Section_howto.html b/doc/Section_howto.html index 1bc6d97ec4..7f200f929e 100644 --- a/doc/Section_howto.html +++ b/doc/Section_howto.html @@ -1,5 +1,5 @@ -

          Previous Section - LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands - Next Section +
          Previous Section - LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands - Next Section
          @@ -9,32 +9,32 @@
          -

          4. How-to discussions +

          6. How-to discussions

          The following sections describe how to use various options within LAMMPS.

          -4.1 Restarting a simulation
          -4.2 2d simulations
          -4.3 CHARMM, AMBER, and DREIDING force fields
          -4.4 Running multiple simulations from one input script
          -4.5 Multi-replica simulations
          -4.6 Granular models
          -4.7 TIP3P water model
          -4.8 TIP4P water model
          -4.9 SPC water model
          -4.10 Coupling LAMMPS to other codes
          -4.11 Visualizing LAMMPS snapshots
          -4.12 Triclinic (non-orthogonal) simulation boxes
          -4.13 NEMD simulations
          -4.14 Extended spherical and aspherical particles
          -4.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables)
          -4.16 Thermostatting, barostatting and computing temperature
          -4.17 Walls
          -4.18 Elastic constants
          -4.19 Library interface to LAMMPS
          -4.20 Calculating thermal conductivity
          -4.21 Calculating viscosity
          +6.1 Restarting a simulation
          +6.2 2d simulations
          +6.3 CHARMM, AMBER, and DREIDING force fields
          +6.4 Running multiple simulations from one input script
          +6.5 Multi-replica simulations
          +6.6 Granular models
          +6.7 TIP3P water model
          +6.8 TIP4P water model
          +6.9 SPC water model
          +6.10 Coupling LAMMPS to other codes
          +6.11 Visualizing LAMMPS snapshots
          +6.12 Triclinic (non-orthogonal) simulation boxes
          +6.13 NEMD simulations
          +6.14 Extended spherical and aspherical particles
          +6.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables)
          +6.16 Thermostatting, barostatting and computing temperature
          +6.17 Walls
          +6.18 Elastic constants
          +6.19 Library interface to LAMMPS
          +6.20 Calculating thermal conductivity
          +6.21 Calculating viscosity

          The example input scripts included in the LAMMPS distribution and highlighted in this section also show how to @@ -42,7 +42,7 @@ setup and run various kinds of simulations.


          -

          4.1 Restarting a simulation +

          6.1 Restarting a simulation

          There are 3 ways to continue a long LAMMPS simulation. Multiple run commands can be used in the same input script. Each @@ -134,7 +134,7 @@ but not in data files.


          -

          4.2 2d simulations +

          6.2 2d simulations

          Use the dimension command to specify a 2d simulation.

          @@ -169,7 +169,7 @@ the same as in 3d.


          -

          4.3 CHARMM, AMBER, and DREIDING force fields +

          6.3 CHARMM, AMBER, and DREIDING force fields

          A force field has 2 parts: the formulas that define it and the coefficients used for a particular system. Here we only discuss @@ -246,7 +246,7 @@ documentation for the formula it computes.


          -

          4.4 Running multiple simulations from one input script +

          6.4 Running multiple simulations from one input script

          This can be done in several ways. See the documentation for individual commands for more details on how these examples work. @@ -318,7 +318,7 @@ jump in.polymer

          All of the above examples work whether you are running on 1 or multiple processors, but assumed you are running LAMMPS on a single partition of processors. LAMMPS can be run on multiple partitions via -the "-partition" command-line switch as described in this +the "-partition" command-line switch as described in this section of the manual.

          In the last 2 examples, if LAMMPS were run on 3 partitions, the same @@ -334,7 +334,7 @@ the 4th simulation, and so forth, until all 8 were completed.


          -

          4.5 Multi-replica simulations +

          6.5 Multi-replica simulations

          Several commands in LAMMPS run mutli-replica simulations, meaning that multiple instances (replicas) of your simulation are run @@ -355,12 +355,12 @@ runs different replicas at a series of temperature to facilitate rare-event sampling.

          These command can only be used if LAMMPS was built with the "replica" -package. See the Making LAMMPS section for -more info on packages. +package. See the Making LAMMPS section +for more info on packages.

          In all these cases, you must run with one or more processors per replica. The processors assigned to each replica are determined at -run-time by using the -partition command-line +run-time by using the -partition command-line switch to launch LAMMPS on multiple partitions, which in this context are the same as replicas. E.g. these commands: @@ -369,8 +369,8 @@ these commands: mpirun -np 8 lmp_linux -partition 8x1 -in in.neb

          would each run 8 replicas, on either 16 or 8 processors. Note the use -of the -in command-line switch to specify the -input script which is required when running in multi-replica mode. +of the -in command-line switch to specify +the input script which is required when running in multi-replica mode.

          Also note that with MPI installed on a machine (e.g. your desktop), you can run on more (virtual) processors than you have physical @@ -381,7 +381,7 @@ physical processors.


          -

          4.6 Granular models +

          6.6 Granular models

          Granular system are composed of spherical particles with a diameter, as opposed to point particles. This means they have an angular @@ -398,7 +398,7 @@ the following commands:

          -

          calculates rotational kinetic energy which can be output with +

          calculates rotational kinetic energy which can be output with thermodynamic info.

          Use one of these 3 pair potentials, which compute forces and torques @@ -426,7 +426,7 @@ computations between frozen atoms by using this command:


          -

          4.7 TIP3P water model +

          6.7 TIP3P water model

          The TIP3P water model as implemented in CHARMM (MacKerell) specifies a 3-site rigid water molecule with @@ -486,7 +486,7 @@ models.


          -

          4.8 TIP4P water model +

          6.8 TIP4P water model

          The four-point TIP4P rigid water model extends the traditional three-point TIP3P model by adding an additional site, usually @@ -545,7 +545,7 @@ models.


          -

          4.9 SPC water model +

          6.9 SPC water model

          The SPC water model specifies a 3-site rigid water molecule with charges and Lennard-Jones parameters assigned to each of the 3 atoms. @@ -590,7 +590,7 @@ models.


          -

          4.10 Coupling LAMMPS to other codes +

          6.10 Coupling LAMMPS to other codes

          LAMMPS is designed to allow it to be coupled to other codes. For example, a quantum mechanics code might compute forces on a subset of @@ -660,10 +660,10 @@ strain induced across grain boundaries -

          This section of the documentation describes -how to build LAMMPS as a library. Once this is done, you can -interface with LAMMPS either via C++, C, Fortran, or Python (or any -other language that supports a vanilla C-like interface). For +

          This section of the documentation +describes how to build LAMMPS as a library. Once this is done, you +can interface with LAMMPS either via C++, C, Fortran, or Python (or +any other language that supports a vanilla C-like interface). For example, from C++ you could create one (or more) "instances" of LAMMPS, pass it an input script to process, or execute individual commands, all by invoking the correct class methods in LAMMPS. From C @@ -673,7 +673,7 @@ the Python wrapper provided with LAMMPS that operates through the LAMMPS library interface.

          The files src/library.cpp and library.h contain the C-style interface -to LAMMPS. See this section of the manual +to LAMMPS. See this section of the manual for a description of the interface and how to extend it for your needs.

          @@ -690,7 +690,7 @@ instances of LAMMPS to perform different calculations.


          -

          4.11 Visualizing LAMMPS snapshots +

          6.11 Visualizing LAMMPS snapshots

          LAMMPS itself does not do visualization, but snapshots from LAMMPS simulations can be visualized (and analyzed) in a variety of ways. @@ -749,7 +749,7 @@ See the dump command for more information on XTC files


          -

          4.12 Triclinic (non-orthogonal) simulation boxes +

          6.12 Triclinic (non-orthogonal) simulation boxes

          By default, LAMMPS uses an orthogonal simulation box to encompass the particles. The boundary command sets the boundary @@ -882,7 +882,7 @@ on non-equilibrium MD (NEMD) simulations.


          -

          4.13 NEMD simulations +

          6.13 NEMD simulations

          Non-equilibrium molecular dynamics or NEMD simulations are typically used to measure a fluid's rheological properties such as viscosity. @@ -920,7 +920,7 @@ profile consistent with the applied shear strain rate.


          -

          4.14 Extended spherical and aspherical particles +

          6.14 Extended spherical and aspherical particles

          Typical MD models treat atoms or particles as point masses. Sometimes, however, it is desirable to have a model with finite-size @@ -1100,7 +1100,7 @@ particles are point masses.


          -

          4.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables) +

          6.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables)

          There are four basic kinds of LAMMPS output:

          @@ -1394,7 +1394,7 @@ vector input could be a column of an array.
          -

          4.16 Thermostatting, barostatting, and computing temperature +

          6.16 Thermostatting, barostatting, and computing temperature

          Thermostatting means controlling the temperature of particles in an MD simulation. Barostatting means controlling the pressure. Since the @@ -1455,7 +1455,7 @@ thermostatting can be invoked via the dpd/tstat pair style:

          Fix nvt only thermostats the translational velocity of particles. Fix nvt/sllod also does this, except that it subtracts out a velocity bias due to a deforming box and -integrates the SLLOD equations of motion. See the NEMD +integrates the SLLOD equations of motion. See the NEMD simulations section of this page for further details. Fix nvt/sphere and fix nvt/asphere thermostat not only translation @@ -1545,7 +1545,7 @@ thermodynamic output.


          -

          4.17 Walls +

          6.17 Walls

          Walls in an MD simulation are typically used to bound particle motion, i.e. to serve as a boundary condition. @@ -1619,7 +1619,7 @@ frictional walls, as well as triangulated surfaces.


          -

          4.18 Elastic constants +

          6.18 Elastic constants

          Elastic constants characterize the stiffness of a material. The formal definition is provided by the linear relation that holds between the @@ -1655,12 +1655,12 @@ converge and requires careful post-processing (Shinoda)


          -

          4.19 Library interface to LAMMPS +

          6.19 Library interface to LAMMPS

          -

          As described in this section, LAMMPS can be -built as a library, so that it can be called by another code, used in -a coupled manner with other codes, or driven -through a Python interface. +

          As described in this section, LAMMPS can +be built as a library, so that it can be called by another code, used +in a coupled manner with other codes, or +driven through a Python interface.

          All of these methodologies use a C-style interface to LAMMPS that is provided in the files src/library.cpp and src/library.h. The @@ -1679,11 +1679,12 @@ void lammps_file(void *, char *); char *lammps_command(void *, char *);

          The lammps_open() function is used to initialize LAMMPS, passing in a -list of strings as if they were command-line arguments when -LAMMPS is run in stand-alone mode from the command line, and a MPI -communicator for LAMMPS to run under. It returns a ptr to the LAMMPS -object that is created, and which is used in subsequent library calls. -The lammps_open() function can be called multiple times, to create +list of strings as if they were command-line +arguments when LAMMPS is run in +stand-alone mode from the command line, and a MPI communicator for +LAMMPS to run under. It returns a ptr to the LAMMPS object that is +created, and which is used in subsequent library calls. The +lammps_open() function can be called multiple times, to create multiple instances of LAMMPS.

          LAMMPS will run on the set of processors in the communicator. This @@ -1735,10 +1736,10 @@ grab data from LAMMPS, change it, and put it back into LAMMPS.


          -

          4.20 Calculating thermal conductivity +

          6.20 Calculating thermal conductivity

          The thermal conductivity kappa of a material can be measured in at -least 3 ways using various options in LAMMPS. (See this +least 3 ways using various options in LAMMPS. (See this section of the manual for an analogous discussion for viscosity). The thermal conducitivity tensor kappa is a measure of the propensity of a material to transmit heat energy in a @@ -1755,7 +1756,7 @@ scalar.

          The first method is to setup two thermostatted regions at opposite ends of a simulation box, or one in the middle and one at the end of a periodic box. By holding the two regions at different temperatures -with a thermostatting fix, the energy added +with a thermostatting fix, the energy added to the hot region should equal the energy subtracted from the cold region and be proportional to the heat flux moving between the regions. See the paper by Ikeshoji and Hafskjold for @@ -1800,10 +1801,10 @@ formalism.


          -

          4.21 Calculating viscosity +

          6.21 Calculating viscosity

          The shear viscosity eta of a fluid can be measured in at least 3 ways -using various options in LAMMPS. (See this +using various options in LAMMPS. (See this section of the manual for an analogous discussion for thermal conductivity). Eta is a measure of the propensity of a fluid to transmit momentum in a direction @@ -1829,7 +1830,7 @@ y-direction of the Vx component of fluid motion or grad(Vstream) = dVx/dy. In this case, the Pxy off-diagonal component of the pressure or stress tensor, as calculated by the compute pressure command, can also be monitored, which -is the J term in the equation above. See this +is the J term in the equation above. See this section of the manual for details on NEMD simulations.

          diff --git a/doc/Section_howto.txt b/doc/Section_howto.txt index b6337c7de3..65131975fb 100644 --- a/doc/Section_howto.txt +++ b/doc/Section_howto.txt @@ -1,4 +1,4 @@ -"Previous Section"_Section_commands.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_example.html :c +"Previous Section"_Section_accelerate.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_example.html :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) @@ -6,32 +6,32 @@ :line -4. How-to discussions :h3 +6. How-to discussions :h3 The following sections describe how to use various options within LAMMPS. -4.1 "Restarting a simulation"_#4_1 -4.2 "2d simulations"_#4_2 -4.3 "CHARMM, AMBER, and DREIDING force fields"_#4_3 -4.4 "Running multiple simulations from one input script"_#4_4 -4.5 "Multi-replica simulations"_#4_5 -4.6 "Granular models"_#4_6 -4.7 "TIP3P water model"_#4_7 -4.8 "TIP4P water model"_#4_8 -4.9 "SPC water model"_#4_9 -4.10 "Coupling LAMMPS to other codes"_#4_10 -4.11 "Visualizing LAMMPS snapshots"_#4_11 -4.12 "Triclinic (non-orthogonal) simulation boxes"_#4_12 -4.13 "NEMD simulations"_#4_13 -4.14 "Extended spherical and aspherical particles"_#4_14 -4.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_#4_15 -4.16 "Thermostatting, barostatting and computing temperature"_#4_16 -4.17 "Walls"_#4_17 -4.18 "Elastic constants"_#4_18 -4.19 "Library interface to LAMMPS"_#4_19 -4.20 "Calculating thermal conductivity"_#4_20 -4.21 "Calculating viscosity"_#4_21 :all(b) +6.1 "Restarting a simulation"_#howto_1 +6.2 "2d simulations"_#howto_2 +6.3 "CHARMM, AMBER, and DREIDING force fields"_#howto_3 +6.4 "Running multiple simulations from one input script"_#howto_4 +6.5 "Multi-replica simulations"_#howto_5 +6.6 "Granular models"_#howto_6 +6.7 "TIP3P water model"_#howto_7 +6.8 "TIP4P water model"_#howto_8 +6.9 "SPC water model"_#howto_9 +6.10 "Coupling LAMMPS to other codes"_#howto_10 +6.11 "Visualizing LAMMPS snapshots"_#howto_11 +6.12 "Triclinic (non-orthogonal) simulation boxes"_#howto_12 +6.13 "NEMD simulations"_#howto_13 +6.14 "Extended spherical and aspherical particles"_#howto_14 +6.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_#howto_15 +6.16 "Thermostatting, barostatting and computing temperature"_#howto_16 +6.17 "Walls"_#howto_17 +6.18 "Elastic constants"_#howto_18 +6.19 "Library interface to LAMMPS"_#howto_19 +6.20 "Calculating thermal conductivity"_#howto_20 +6.21 "Calculating viscosity"_#howto_21 :all(b) The example input scripts included in the LAMMPS distribution and highlighted in "this section"_Section_example.html also show how to @@ -39,7 +39,7 @@ setup and run various kinds of simulations. :line -4.1 Restarting a simulation :link(4_1),h4 +6.1 Restarting a simulation :link(howto_1),h4 There are 3 ways to continue a long LAMMPS simulation. Multiple "run"_run.html commands can be used in the same input script. Each @@ -131,7 +131,7 @@ but not in data files. :line -4.2 2d simulations :link(4_2),h4 +6.2 2d simulations :link(howto_2),h4 Use the "dimension"_dimension.html command to specify a 2d simulation. @@ -166,7 +166,7 @@ the same as in 3d. :line -4.3 CHARMM, AMBER, and DREIDING force fields :link(4_3),h4 +6.3 CHARMM, AMBER, and DREIDING force fields :link(howto_3),h4 A force field has 2 parts: the formulas that define it and the coefficients used for a particular system. Here we only discuss @@ -242,7 +242,7 @@ documentation for the formula it computes. :line -4.4 Running multiple simulations from one input script :link(4_4),h4 +6.4 Running multiple simulations from one input script :link(howto_4),h4 This can be done in several ways. See the documentation for individual commands for more details on how these examples work. @@ -315,7 +315,7 @@ All of the above examples work whether you are running on 1 or multiple processors, but assumed you are running LAMMPS on a single partition of processors. LAMMPS can be run on multiple partitions via the "-partition" command-line switch as described in "this -section"_Section_start.html#2_6 of the manual. +section"_Section_start.html#start_6 of the manual. In the last 2 examples, if LAMMPS were run on 3 partitions, the same scripts could be used if the "index" and "loop" variables were @@ -330,7 +330,7 @@ the 4th simulation, and so forth, until all 8 were completed. :line -4.5 Multi-replica simulations :link(4_5),h4 +6.5 Multi-replica simulations :link(howto_5),h4 Several commands in LAMMPS run mutli-replica simulations, meaning that multiple instances (replicas) of your simulation are run @@ -351,13 +351,13 @@ runs different replicas at a series of temperature to facilitate rare-event sampling. These command can only be used if LAMMPS was built with the "replica" -package. See the "Making LAMMPS"_Section_start.html#2_3 section for -more info on packages. +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. In all these cases, you must run with one or more processors per replica. The processors assigned to each replica are determined at run-time by using the "-partition command-line -switch"_Section_start.html#2_6 to launch LAMMPS on multiple +switch"_Section_start.html#start_6 to launch LAMMPS on multiple partitions, which in this context are the same as replicas. E.g. these commands: @@ -365,8 +365,8 @@ mpirun -np 16 lmp_linux -partition 8x2 -in in.temper mpirun -np 8 lmp_linux -partition 8x1 -in in.neb :pre would each run 8 replicas, on either 16 or 8 processors. Note the use -of the "-in command-line switch"_Section_start.html#2_6 to specify the -input script which is required when running in multi-replica mode. +of the "-in command-line switch"_Section_start.html#start_6 to specify +the input script which is required when running in multi-replica mode. Also note that with MPI installed on a machine (e.g. your desktop), you can run on more (virtual) processors than you have physical @@ -377,7 +377,7 @@ physical processors. :line -4.6 Granular models :link(4_6),h4 +6.6 Granular models :link(howto_6),h4 Granular system are composed of spherical particles with a diameter, as opposed to point particles. This means they have an angular @@ -395,7 +395,7 @@ This compute "compute erotate/sphere"_compute_erotate_sphere.html :ul calculates rotational kinetic energy which can be "output with -thermodynamic info"_Section_howto.html#4_15. +thermodynamic info"_Section_howto.html#howto_15. Use one of these 3 pair potentials, which compute forces and torques between interacting pairs of particles: @@ -422,7 +422,7 @@ computations between frozen atoms by using this command: :line -4.7 TIP3P water model :link(4_7),h4 +6.7 TIP3P water model :link(howto_7),h4 The TIP3P water model as implemented in CHARMM "(MacKerell)"_#MacKerell specifies a 3-site rigid water molecule with @@ -482,7 +482,7 @@ models"_http://en.wikipedia.org/wiki/Water_model. :line -4.8 TIP4P water model :link(4_8),h4 +6.8 TIP4P water model :link(howto_8),h4 The four-point TIP4P rigid water model extends the traditional three-point TIP3P model by adding an additional site, usually @@ -541,7 +541,7 @@ models"_http://en.wikipedia.org/wiki/Water_model. :line -4.9 SPC water model :link(4_9),h4 +6.9 SPC water model :link(howto_9),h4 The SPC water model specifies a 3-site rigid water molecule with charges and Lennard-Jones parameters assigned to each of the 3 atoms. @@ -586,7 +586,7 @@ models"_http://en.wikipedia.org/wiki/Water_model. :line -4.10 Coupling LAMMPS to other codes :link(4_10),h4 +6.10 Coupling LAMMPS to other codes :link(howto_10),h4 LAMMPS is designed to allow it to be coupled to other codes. For example, a quantum mechanics code might compute forces on a subset of @@ -655,10 +655,10 @@ strain induced across grain boundaries :l,ule :link(quest,http://dft.sandia.gov/Quest) :link(spparks,http://www.sandia.gov/~sjplimp/spparks.html) -"This section"_Section_start.html#2_4 of the documentation describes -how to build LAMMPS as a library. Once this is done, you can -interface with LAMMPS either via C++, C, Fortran, or Python (or any -other language that supports a vanilla C-like interface). For +"This section"_Section_start.html#start_4 of the documentation +describes how to build LAMMPS as a library. Once this is done, you +can interface with LAMMPS either via C++, C, Fortran, or Python (or +any other language that supports a vanilla C-like interface). For example, from C++ you could create one (or more) "instances" of LAMMPS, pass it an input script to process, or execute individual commands, all by invoking the correct class methods in LAMMPS. From C @@ -668,7 +668,7 @@ the Python wrapper provided with LAMMPS that operates through the LAMMPS library interface. The files src/library.cpp and library.h contain the C-style interface -to LAMMPS. See "this section"_Section_howto.html#4_19 of the manual +to LAMMPS. See "this section"_Section_howto.html#howto_19 of the manual for a description of the interface and how to extend it for your needs. @@ -685,7 +685,7 @@ instances of LAMMPS to perform different calculations. :line -4.11 Visualizing LAMMPS snapshots :link(4_11),h4 +6.11 Visualizing LAMMPS snapshots :link(howto_11),h4 LAMMPS itself does not do visualization, but snapshots from LAMMPS simulations can be visualized (and analyzed) in a variety of ways. @@ -741,7 +741,7 @@ See the "dump"_dump.html command for more information on XTC files. :line -4.12 Triclinic (non-orthogonal) simulation boxes :link(4_12),h4 +6.12 Triclinic (non-orthogonal) simulation boxes :link(howto_12),h4 By default, LAMMPS uses an orthogonal simulation box to encompass the particles. The "boundary"_boundary.html command sets the boundary @@ -874,7 +874,7 @@ on non-equilibrium MD (NEMD) simulations. :line -4.13 NEMD simulations :link(4_13),h4 +6.13 NEMD simulations :link(howto_13),h4 Non-equilibrium molecular dynamics or NEMD simulations are typically used to measure a fluid's rheological properties such as viscosity. @@ -912,7 +912,7 @@ An alternative method for calculating viscosities is provided via the :line -4.14 Extended spherical and aspherical particles :link(4_14),h4 +6.14 Extended spherical and aspherical particles :link(howto_14),h4 Typical MD models treat atoms or particles as point masses. Sometimes, however, it is desirable to have a model with finite-size @@ -1092,7 +1092,7 @@ particles are point masses. :line -4.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables) :link(4_15),h4 +6.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables) :link(howto_15),h4 There are four basic kinds of LAMMPS output: @@ -1382,7 +1382,7 @@ Command: Input: Output: :line -4.16 Thermostatting, barostatting, and computing temperature :link(4_16),h4 +6.16 Thermostatting, barostatting, and computing temperature :link(howto_16),h4 Thermostatting means controlling the temperature of particles in an MD simulation. Barostatting means controlling the pressure. Since the @@ -1444,7 +1444,7 @@ thermostatting can be invoked via the {dpd/tstat} pair style: particles. "Fix nvt/sllod"_fix_nvt_sllod.html also does this, except that it subtracts out a velocity bias due to a deforming box and integrates the SLLOD equations of motion. See the "NEMD -simulations"_#4_13 section of this page for further details. "Fix +simulations"_#howto_13 section of this page for further details. "Fix nvt/sphere"_fix_nvt_sphere.html and "fix nvt/asphere"_fix_nvt_asphere.html thermostat not only translation velocities but also rotational velocities for spherical and aspherical @@ -1533,7 +1533,7 @@ thermodynamic output. :line -4.17 Walls :link(4_17),h4 +6.17 Walls :link(howto_17),h4 Walls in an MD simulation are typically used to bound particle motion, i.e. to serve as a boundary condition. @@ -1607,7 +1607,7 @@ frictional walls, as well as triangulated surfaces. :line -4.18 Elastic constants :link(4_18),h4 +6.18 Elastic constants :link(howto_18),h4 Elastic constants characterize the stiffness of a material. The formal definition is provided by the linear relation that holds between the @@ -1643,12 +1643,12 @@ converge and requires careful post-processing "(Shinoda)"_#Shinoda :line -4.19 Library interface to LAMMPS :link(4_19),h4 +6.19 Library interface to LAMMPS :link(howto_19),h4 -As described in "this section"_Section_start.html#2_4, LAMMPS can be -built as a library, so that it can be called by another code, used in -a "coupled manner"_Section_howto.html#4_10 with other codes, or driven -through a "Python interface"_Section_python.html. +As described in "this section"_Section_start.html#start_4, LAMMPS can +be built as a library, so that it can be called by another code, used +in a "coupled manner"_Section_howto.html#howto_10 with other codes, or +driven through a "Python interface"_Section_python.html. All of these methodologies use a C-style interface to LAMMPS that is provided in the files src/library.cpp and src/library.h. The @@ -1667,11 +1667,12 @@ void lammps_file(void *, char *); char *lammps_command(void *, char *); :pre The lammps_open() function is used to initialize LAMMPS, passing in a -list of strings as if they were "command-line arguments"_#2_6 when -LAMMPS is run in stand-alone mode from the command line, and a MPI -communicator for LAMMPS to run under. It returns a ptr to the LAMMPS -object that is created, and which is used in subsequent library calls. -The lammps_open() function can be called multiple times, to create +list of strings as if they were "command-line +arguments"_Section_start.html#start_6 when LAMMPS is run in +stand-alone mode from the command line, and a MPI communicator for +LAMMPS to run under. It returns a ptr to the LAMMPS object that is +created, and which is used in subsequent library calls. The +lammps_open() function can be called multiple times, to create multiple instances of LAMMPS. LAMMPS will run on the set of processors in the communicator. This @@ -1723,11 +1724,11 @@ grab data from LAMMPS, change it, and put it back into LAMMPS. :line -4.20 Calculating thermal conductivity :link(4_20),h4 +6.20 Calculating thermal conductivity :link(howto_20),h4 The thermal conductivity kappa of a material can be measured in at least 3 ways using various options in LAMMPS. (See "this -section"_Section_howto.html#4_21 of the manual for an analogous +section"_Section_howto.html#howto_21 of the manual for an analogous discussion for viscosity). The thermal conducitivity tensor kappa is a measure of the propensity of a material to transmit heat energy in a diffusive manner as given by Fourier's law @@ -1743,7 +1744,7 @@ scalar. The first method is to setup two thermostatted regions at opposite ends of a simulation box, or one in the middle and one at the end of a periodic box. By holding the two regions at different temperatures -with a "thermostatting fix"_Section_howto.html#4_13, the energy added +with a "thermostatting fix"_Section_howto.html#howto_13, the energy added to the hot region should equal the energy subtracted from the cold region and be proportional to the heat flux moving between the regions. See the paper by "Ikeshoji and Hafskjold"_#Ikeshoji for @@ -1788,11 +1789,11 @@ formalism. :line -4.21 Calculating viscosity :link(4_21),h4 +6.21 Calculating viscosity :link(howto_21),h4 The shear viscosity eta of a fluid can be measured in at least 3 ways using various options in LAMMPS. (See "this -section"_Section_howto.html#4_20 of the manual for an analogous +section"_Section_howto.html#howto_20 of the manual for an analogous discussion for thermal conductivity). Eta is a measure of the propensity of a fluid to transmit momentum in a direction perpendicular to the direction of velocity or momentum flow. @@ -1818,7 +1819,7 @@ dVx/dy. In this case, the Pxy off-diagonal component of the pressure or stress tensor, as calculated by the "compute pressure"_compute_pressure.html command, can also be monitored, which is the J term in the equation above. See "this -section"_Section_howto.html#4_13 of the manual for details on NEMD +section"_Section_howto.html#howto_13 of the manual for details on NEMD simulations. The second method is to perform a reverse non-equilibrium MD diff --git a/doc/Section_intro.html b/doc/Section_intro.html index db64d2821a..3b659cf8e7 100644 --- a/doc/Section_intro.html +++ b/doc/Section_intro.html @@ -16,15 +16,15 @@ describe what it means for LAMMPS to be an open-source code, and acknowledge the funding and people who have contributed to LAMMPS over the years.

          -1.1 What is LAMMPS
          -1.2 LAMMPS features
          -1.3 LAMMPS non-features
          -1.4 Open source distribution
          -1.5 Acknowledgments and citations
          +1.1 What is LAMMPS
          +1.2 LAMMPS features
          +1.3 LAMMPS non-features
          +1.4 Open source distribution
          +1.5 Acknowledgments and citations

          -

          1.1 What is LAMMPS +

          1.1 What is LAMMPS

          LAMMPS is a classical molecular dynamics code that models an ensemble of particles in a liquid, solid, or gaseous state. It can model @@ -49,7 +49,7 @@ WWW Site.

          LAMMPS is a freely-available open-source code, distributed under the terms of the GNU Public License, which means you can use or -modify the code however you wish. See this section for a brief +modify the code however you wish. See this section for a brief discussion of the open-source philosophy.

          @@ -67,7 +67,7 @@ downloaded from the LAMMPS WWW Site.

          LAMMPS was originally developed under a US Department of Energy CRADA (Cooperative Research and Development Agreement) between two DOE labs and 3 companies. It is distributed by Sandia National Labs. -See this section for more information on LAMMPS funding and +See this section for more information on LAMMPS funding and individuals who have contributed to LAMMPS.

          @@ -86,11 +86,11 @@ communicate and store "ghost" atom information for atoms that border their sub-domain. LAMMPS is most efficient (in a parallel sense) for systems whose particles fill a 3d rectangular box with roughly uniform density. Papers with technical details of the algorithms used in -LAMMPS are listed in this section. +LAMMPS are listed in this section.


          -

          1.2 LAMMPS features +

          1.2 LAMMPS features

          This section highlights LAMMPS features, with pointers to specific commands which give more details. If LAMMPS doesn't have your @@ -125,7 +125,8 @@ LAMMPS.

        • metals
        • granular materials
        • coarse-grained mesoscale models -
        • extended spherical and ellipsoidal particles +
        • finite-size spherical and ellipsoidal particles +
        • finite-size line segment (2d) and triangle (3d) particles
        • point dipolar particles
        • rigid collections of particles
        • hybrid combinations of these @@ -139,10 +140,10 @@ commands)

          • pairwise potentials: Lennard-Jones, Buckingham, Morse, Born-Mayer-Huggins, Yukawa, soft, class 2 (COMPASS), hydrogen bond, tabulated
          • charged pairwise potentials: Coulombic, point-dipole -
          • manybody potentials: EAM, Finnis/Sinclair EAM, modified EAM (MEAM), embedded ion method (EIM), ADP, Stillinger-Weber, Tersoff, REBO, AIREBO, ReaxFF, COMB +
          • manybody potentials: EAM, Finnis/Sinclair EAM, modified EAM (MEAM), embedded ion method (EIM), EDIP, ADP, Stillinger-Weber, Tersoff, REBO, AIREBO, ReaxFF, COMB
          • electron force field (eFF, AWPMD)
          • coarse-grained potentials: DPD, GayBerne, REsquared, colloidal, DLVO -
          • mesoscopic potentials: granular, Peridynamics +
          • mesoscopic potentials: granular, Peridynamics, SPH
          • bond potentials: harmonic, FENE, Morse, nonlinear, class 2, quartic (breakable)
          • angle potentials: harmonic, CHARMM, cosine, cosine/squared, cosine/periodic, class 2 (COMPASS)
          • dihedral potentials: harmonic, CHARMM, multi-harmonic, helix, class 2 (COMPASS), OPLS @@ -246,6 +247,7 @@ molecular dynamics options:
          • real-time visualization and interactive MD
          • atom-to-continuum coupling with finite elements
          • coupled rigid body integration via the POEMS library +
          • grand canonical Monte Carlo insertions/deletions
          • Direct Simulation Monte Carlo for low-density fluids
          • Peridynamics mesoscale modeling
          • targeted and steered molecular dynamics @@ -253,7 +255,7 @@ molecular dynamics options:

          -

          1.3 LAMMPS non-features +

          1.3 LAMMPS non-features

          LAMMPS is designed to efficiently compute Newton's equations of motion for a system of interacting particles. Many of the tools needed to @@ -371,7 +373,7 @@ spatial-decomposition version exist.


          -

          1.4 Open source distribution +

          1.4 Open source distribution

          LAMMPS comes with no warranty of any kind. As each source file states in its header, it is a copyrighted code that is distributed free-of- @@ -416,7 +418,7 @@ Site, or have a suggestion for something to clarify or include, send an email to the developers. -

        • If you find a bug, this section describes +
        • If you find a bug, this section describes how to report it.
        • If you publish a paper using LAMMPS results, send the citation (and @@ -454,7 +456,7 @@ encouraged.
          -

          1.5 Acknowledgments and citations +

          1.5 Acknowledgments and citations

          LAMMPS development has been funded by the US Department of Energy (DOE), through its CRADA, LDRD, ASCI, and Genomes-to-Life @@ -476,154 +478,58 @@ Hierarchical Modeling". -

          The following papers describe the parallel algorithms used in LAMMPS. +

          The following paper describe the basic parallel algorithms used in +LAMMPS. If you use LAMMPS results in your published work, please cite +this paper and include a pointer to the LAMMPS WWW Site +(http://lammps.sandia.gov):

          S. J. Plimpton, Fast Parallel Algorithms for Short-Range Molecular Dynamics, J Comp Phys, 117, 1-19 (1995).

          -

          S. J. Plimpton, R. Pollock, M. Stevens, Particle-Mesh Ewald and -rRESPA for Parallel Molecular Dynamics Simulations, in Proc of the -Eighth SIAM Conference on Parallel Processing for Scientific -Computing, Minneapolis, MN (March 1997). +

          Other papers describing specific algorithms used in LAMMPS are listed +under the Citing LAMMPS link of +the LAMMPS WWW page.

          -

          If you use LAMMPS results in your published work, please cite the J -Comp Phys reference and include a pointer to the LAMMPS WWW Site -(http://lammps.sandia.gov). +

          The Publications link on the +LAMMPS WWW page lists papers that have cited LAMMPS. If your paper is +not listed there for some reason, feel free to send us the info. If +the simulations in your paper produced cool pictures or animations, +we'll be pleased to add them to the +Pictures or +Movies pages of the LAMMPS WWW +site.

          -

          If you send is information about your publication, we'll be pleased to -add it to the Publications page of the LAMMPS WWW Site. Ditto -for a picture or movie for the Pictures or Movies pages. +

          The core group of LAMMPS developers is at Sandia National Labs:

          -

          The core group of LAMMPS developers is at Sandia National Labs. They -include Steve Plimpton, Paul Crozier, and Aidan Thompson and can -be contacted via email: sjplimp, pscrozi, athomps at sandia.gov. +

          • Steve Plimpton, sjplimp at sandia.gov +
          • Aidan Thompson, athomps at sandia.gov +
          • Paul Crozier, pscrozi at sandia.gov +
          +

          The following folks are responsible for significant contributions to +the code, or other aspects of the LAMMPS development effort. Many of +the packages they have written are somewhat unique to LAMMPS and the +code would not be as general-purpose as it is without their expertise +and efforts.

          -

          Here are various folks who have made significant contributions to -features in LAMMPS. The most recent contributions are at the top of -the list. -

          - - -
          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          pppm GPU single and double Mike Brown (ORNL)
          pair_style lj/cut/expand Inderaj Bains (NVIDIA)
          temperature accelerated dynamics (TAD) Aidan Thompson (Sandia)
          pair reax/c and fix qeq/reax Metin Aktulga (Purdue, now LBNL)
          DREIDING force field, pair_style hbond/dreiding, etc Tod Pascal (CalTech)
          fix adapt and compute ti for thermodynamic integreation for free energies Sai Jayaraman (Sandia)
          pair born and pair gauss Sai Jayaraman (Sandia)
          stochastic rotation dynamics (SRD) via fix srd Jemery Lechman (Sandia) and Pieter in 't Veld (BASF)
          ipp Perl script tool Reese Jones (Sandia)
          eam_database and createatoms tools Xiaowang Zhou (Sandia)
          electron force field (eFF) Andres Jaramillo-Botero and Julius Su (Caltech)
          embedded ion method (EIM) potential Xiaowang Zhou (Sandia)
          COMB potential with charge equilibration Tzu-Ray Shan (U Florida)
          fix ave/correlate Benoit Leblanc, Dave Rigby, Paul Saxe (Materials Design) and Reese Jones (Sandia)
          pair_style peri/lps Mike Parks (Sandia)
          fix msst Lawrence Fried (LLNL), Evan Reed (LLNL, Stanford)
          thermo_style custom tpcpu & spcpu keywords Axel Kohlmeyer (Temple U)
          fix rigid/nve, fix rigid/nvt Tony Sheh and Trung Dac Nguyen (U Michigan)
          public SVN & Git repositories for LAMMPS Axel Kohlmeyer (Temple U) and Bill Goldman (Sandia)
          fix nvt, fix nph, fix npt, Parinello/Rahman dynamics, fix box/relax Aidan Thompson (Sandia)
          compute heat/flux German Samolyuk (ORNL) and Mario Pinto (Computational Research Lab, Pune, India)
          pair yukawa/colloid Randy Schunk (Sandia)
          fix wall/colloid Jeremy Lechman (Sandia)
          pair_style dsmc for Direct Simulation Monte Carlo (DSMC) modeling Paul Crozier (Sandia)
          fix imd for real-time viz and interactive MD Axel Kohlmeyer (Temple Univ)
          concentration-dependent EAM potential Alexander Stukowski (Technical University of Darmstadt)
          parallel replica dymamics (PRD) Mike Brown (Sandia)
          min_style hftn Todd Plantenga (Sandia)
          fix atc Reese Jones, Jon Zimmerman, Jeremy Templeton (Sandia)
          dump cfg Liang Wan (Chinese Academy of Sciences)
          fix nvt with Nose/Hoover chains Andy Ballard (U Maryland)
          pair_style lj/cut/gpu, pair_style gayberne/gpu Mike Brown (Sandia)
          pair_style lj96/cut, bond_style table, angle_style table Chuanfu Luo
          fix langevin tally Carolyn Phillips (U Michigan)
          compute heat/flux for Green-Kubo Reese Jones (Sandia), Philip Howell (Siemens), Vikas Varsney (AFRL)
          region cone Pim Schravendijk
          fix reax/bonds Aidan Thompson (Sandia)
          pair born/coul/long Ahmed Ismail (Sandia)
          fix ttm Paul Crozier (Sandia) and Carolyn Phillips (U Michigan)
          fix box/relax Aidan Thompson and David Olmsted (Sandia)
          ReaxFF potential Aidan Thompson (Sandia) and Hansohl Cho (MIT)
          compute cna/atom Wan Liang (Chinese Academy of Sciences)
          Tersoff/ZBL potential Dave Farrell (Northwestern U)
          peridynamics Mike Parks (Sandia)
          fix smd for steered MD Axel Kohlmeyer (U Penn)
          GROMACS pair potentials Mark Stevens (Sandia)
          lmp2vmd tool Axel Kohlmeyer (U Penn)
          compute group/group Naveen Michaud-Agrawal (Johns Hopkins U)
          CG-CMM user package for coarse-graining Axel Kohlmeyer (U Penn)
          cosine/delta angle potential Axel Kohlmeyer (U Penn)
          VIM editor add-ons for LAMMPS input scripts Gerolf Ziegenhain
          pair lubricate Randy Schunk (Sandia)
          compute ackland/atom Gerolf Zeigenhain
          kspace_style ewald/n, pair_style lj/coul, pair_style buck/coul Pieter in 't Veld (Sandia)
          AIREBO bond-order potential Ase Henry (MIT)
          making LAMMPS a true "object" that can be instantiated multiple times, e.g. as a library Ben FrantzDale (RPI)
          pymol_asphere viz tool Mike Brown (Sandia)
          NEMD SLLOD integration Pieter in 't Veld (Sandia)
          tensile and shear deformations Pieter in 't Veld (Sandia)
          GayBerne potential Mike Brown (Sandia)
          ellipsoidal particles Mike Brown (Sandia)
          colloid potentials Pieter in 't Veld (Sandia)
          fix heat Paul Crozier and Ed Webb (Sandia)
          neighbor multi and communicate multi Pieter in 't Veld (Sandia)
          MATLAB post-processing scripts Arun Subramaniyan (Purdue)
          triclinic (non-orthogonal) simulation domains Pieter in 't Veld (Sandia)
          thermo_extract tool Vikas Varshney (Wright Patterson AFB)
          fix ave/time and fix ave/spatial Pieter in 't Veld (Sandia)
          MEAM potential Greg Wagner (Sandia)
          optimized pair potentials for lj/cut, charmm/long, eam, morse James Fischer (High Performance Technologies), David Richie and Vincent Natoli (Stone Ridge Technologies)
          fix wall/lj126 Mark Stevens (Sandia)
          Stillinger-Weber and Tersoff potentials Aidan Thompson and Xiaowang Zhou (Sandia)
          region prism Pieter in 't Veld (Sandia)
          LJ tail corrections for energy/pressure Paul Crozier (Sandia)
          fix momentum and recenter Naveen Michaud-Agrawal (Johns Hopkins U)
          multi-letter variable names Naveen Michaud-Agrawal (Johns Hopkins U)
          OPLS dihedral potential Mark Stevens (Sandia)
          POEMS coupled rigid body integrator Rudranarayan Mukherjee (RPI)
          faster pair hybrid potential James Fischer (High Performance Technologies, Inc), Vincent Natoli and David Richie (Stone Ridge Technology)
          breakable bond quartic potential Chris Lorenz and Mark Stevens (Sandia)
          DCD and XTC dump styles Naveen Michaud-Agrawal (Johns Hopkins U)
          grain boundary orientation fix Koenraad Janssens and David Olmsted (Sandia)
          lj/smooth pair potential Craig Maloney (UCSB)
          radius-of-gyration spring fix Naveen Michaud-Agrawal (Johns Hopkins U) and Paul Crozier (Sandia)
          self spring fix Naveen Michaud-Agrawal (Johns Hopkins U)
          EAM CoAl and AlCu potentials Kwang-Reoul Lee (KIST, Korea)
          cosine/squared angle potential Naveen Michaud-Agrawal (Johns Hopkins U)
          helix dihedral potential Naveen Michaud-Agrawal (Johns Hopkins U) and Mark Stevens (Sandia)
          Finnis/Sinclair EAM Tim Lau (MIT)
          dissipative particle dynamics (DPD) potentials Kurt Smith (U Pitt) and Frank van Swol (Sandia)
          TIP4P potential (4-site water) Ahmed Ismail and Amalie Frischknecht (Sandia)
          uniaxial strain fix Carsten Svaneborg (Max Planck Institute)
          thermodynamics enhanced by fix quantities Aidan Thompson (Sandia)
          compressed dump files Erik Luijten (U Illinois)
          cylindrical indenter fix Ravi Agrawal (Northwestern U)
          electric field fix Christina Payne (Vanderbilt U)
          AMBER <-> LAMMPS tool Keir Novik (Univ College London) and Vikas Varshney (U Akron)
          CHARMM <-> LAMMPS tool Pieter in 't Veld and Paul Crozier (Sandia)
          Morse bond potential Jeff Greathouse (Sandia)
          radial distribution functions Paul Crozier & Jeff Greathouse (Sandia)
          force tables for long-range Coulombics Paul Crozier (Sandia)
          targeted molecular dynamics (TMD) Paul Crozier (Sandia) and Christian Burisch (Bochum University, Germany)
          FFT support for SGI SCSL (Altix) Jim Shepherd (Ga Tech)
          lmp2cfg and lmp2traj tools Ara Kooser, Jeff Greathouse, Andrey Kalinichev (Sandia)
          parallel tempering Mark Sears (Sandia)
          embedded atom method (EAM) potential Stephen Foiles (Sandia)
          multi-harmonic dihedral potential Mathias Puetz (Sandia)
          granular force fields and BC Leo Silbert & Gary Grest (Sandia)
          2d Ewald/PPPM Paul Crozier (Sandia)
          CHARMM force fields Paul Crozier (Sandia)
          msi2lmp tool Steve Lustig (Dupont), Mike Peachey & John Carpenter (Cray)
          HTFN energy minimizer Todd Plantenga (Sandia)
          class 2 force fields Eric Simon (Cray)
          NVT/NPT integrators Mark Stevens (Sandia)
          rRESPA Mark Stevens & Paul Crozier (Sandia)
          Ewald and PPPM solvers Roy Pollock (LLNL) -
          - -

          Other CRADA partners involved in the design and testing of LAMMPS were +

          • Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CG-CMM and USER-OMP packages +
          • Roy Pollock (LLNL), Ewald and PPPM solvers +
          • Mike Brown (ORNL), brownw at ornl.gov, GPU package +
          • Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential +
          • Mike Parks (Sandia), mlparks at sandia.gov, PERI package for Peridynamics +
          • Rudra Mukherjee (JPL), Rudranarayan.M.Mukherjee at jpl.nasa.gov, POEMS package for articulated rigid body motion +
          • Reese Jones (Sandia) and collaborators, rjones at sandia.gov, USER-ATC package for atom/continuum coupling +
          • Ilya Valuev (JIHT), valuev at physik.hu-berlin.de, USER-AWPMD package for wave-packet MD +
          • Christian Trott (U Tech Ilmenau), christian.trott at tu-ilmenau.de, USER-CUDA package +
          • Andres Jaramillo-Botero (Caltech), ajaramil at wag.caltech.edu, USER-EFF package for electron force field +
          • Pieter in' t Veld (BASF), pieter.intveld at basf.com, USER-EWALDN package for 1/r^N long-range solvers +
          • Christoph Kloss (JKU), Christoph.Kloss at jku.at, USER-LIGGGHTS package for granular models and granular/fluid coupling +
          • Metin Aktulga (LBL), hmaktulga at lbl.gov, USER-REAXC package for C version of ReaxFF +
          • Georg Gunzenmuller (EMI), georg.ganzenmueller at emi.fhg.de, USER-SPH package +
          +

          As discussed in this section, LAMMPS originated +as a cooperative project between DOE labs and industrial +partners. Folks involved in the design and testing of the original +version of LAMMPS were the following:

          • John Carpenter (Mayo Clinic, formerly at Cray Research)
          • Terry Stouch (Lexicon Pharmaceuticals, formerly at Bristol Myers Squibb) diff --git a/doc/Section_intro.txt b/doc/Section_intro.txt index 28c9a1a9d9..2ceb4f78d4 100644 --- a/doc/Section_intro.txt +++ b/doc/Section_intro.txt @@ -13,15 +13,15 @@ describe what it means for LAMMPS to be an open-source code, and acknowledge the funding and people who have contributed to LAMMPS over the years. -1.1 "What is LAMMPS"_#1_1 -1.2 "LAMMPS features"_#1_2 -1.3 "LAMMPS non-features"_#1_3 -1.4 "Open source distribution"_#1_4 -1.5 "Acknowledgments and citations"_#1_5 :all(b) +1.1 "What is LAMMPS"_#intro_1 +1.2 "LAMMPS features"_#intro_2 +1.3 "LAMMPS non-features"_#intro_3 +1.4 "Open source distribution"_#intro_4 +1.5 "Acknowledgments and citations"_#intro_5 :all(b) :line -1.1 What is LAMMPS :link(1_1),h4 +1.1 What is LAMMPS :link(intro_1),h4 LAMMPS is a classical molecular dynamics code that models an ensemble of particles in a liquid, solid, or gaseous state. It can model @@ -46,7 +46,7 @@ WWW Site"_lws. LAMMPS is a freely-available open-source code, distributed under the terms of the "GNU Public License"_gnu, which means you can use or -modify the code however you wish. See "this section"_#1_4 for a brief +modify the code however you wish. See "this section"_#intro_4 for a brief discussion of the open-source philosophy. :link(gnu,http://www.gnu.org/copyleft/gpl.html) @@ -64,7 +64,7 @@ downloaded from the "LAMMPS WWW Site"_lws. LAMMPS was originally developed under a US Department of Energy CRADA (Cooperative Research and Development Agreement) between two DOE labs and 3 companies. It is distributed by "Sandia National Labs"_snl. -See "this section"_#1_5 for more information on LAMMPS funding and +See "this section"_#intro_5 for more information on LAMMPS funding and individuals who have contributed to LAMMPS. :link(snl,http://www.sandia.gov) @@ -83,11 +83,11 @@ communicate and store "ghost" atom information for atoms that border their sub-domain. LAMMPS is most efficient (in a parallel sense) for systems whose particles fill a 3d rectangular box with roughly uniform density. Papers with technical details of the algorithms used in -LAMMPS are listed in "this section"_#1_5. +LAMMPS are listed in "this section"_#intro_5. :line -1.2 LAMMPS features :link(1_2),h4 +1.2 LAMMPS features :link(intro_2),h4 This section highlights LAMMPS features, with pointers to specific commands which give more details. If LAMMPS doesn't have your @@ -121,7 +121,8 @@ Particle and model types :h4 metals granular materials coarse-grained mesoscale models - extended spherical and ellipsoidal particles + finite-size spherical and ellipsoidal particles + finite-size line segment (2d) and triangle (3d) particles point dipolar particles rigid collections of particles hybrid combinations of these :ul @@ -136,10 +137,10 @@ commands) Yukawa, soft, class 2 (COMPASS), hydrogen bond, tabulated charged pairwise potentials: Coulombic, point-dipole manybody potentials: EAM, Finnis/Sinclair EAM, modified EAM (MEAM), \ - embedded ion method (EIM), ADP, Stillinger-Weber, Tersoff, REBO, AIREBO, ReaxFF, COMB + embedded ion method (EIM), EDIP, ADP, Stillinger-Weber, Tersoff, REBO, AIREBO, ReaxFF, COMB electron force field (eFF, AWPMD) coarse-grained potentials: DPD, GayBerne, REsquared, colloidal, DLVO - mesoscopic potentials: granular, Peridynamics + mesoscopic potentials: granular, Peridynamics, SPH bond potentials: harmonic, FENE, Morse, nonlinear, class 2, \ quartic (breakable) angle potentials: harmonic, CHARMM, cosine, cosine/squared, cosine/periodic, \ @@ -242,6 +243,7 @@ molecular dynamics options: "real-time visualization and interactive MD"_fix_imd.html "atom-to-continuum coupling"_fix_atc.html with finite elements coupled rigid body integration via the "POEMS"_fix_poems.html library +"grand canonical Monte Carlo"_doc/fix_gcmc.html insertions/deletions "Direct Simulation Monte Carlo"_pair_dsmc.html for low-density fluids "Peridynamics mesoscale modeling"_pair_peri.html "targeted"_fix_tmd.html and "steered"_fix_smd.html molecular dynamics @@ -249,7 +251,7 @@ coupled rigid body integration via the "POEMS"_fix_poems.html library :line -1.3 LAMMPS non-features :link(1_3),h4 +1.3 LAMMPS non-features :link(intro_3),h4 LAMMPS is designed to efficiently compute Newton's equations of motion for a system of interacting particles. Many of the tools needed to @@ -362,7 +364,7 @@ spatial-decomposition version exist. :line -1.4 Open source distribution :link(1_4),h4 +1.4 Open source distribution :link(intro_4),h4 LAMMPS comes with no warranty of any kind. As each source file states in its header, it is a copyrighted code that is distributed free-of- @@ -406,7 +408,7 @@ Site"_lws, or have a suggestion for something to clarify or include, send an email to the "developers"_http://lammps.sandia.gov/authors.html. :l -If you find a bug, "this section"_Section_errors.html#10_2 describes +If you find a bug, "this section"_Section_errors.html#err_2 describes how to report it. :l If you publish a paper using LAMMPS results, send the citation (and @@ -444,7 +446,7 @@ encouraged. :ule,l :line -1.5 Acknowledgments and citations :h4,link(1_5) +1.5 Acknowledgments and citations :h4,link(intro_5) LAMMPS development has been funded by the "US Department of Energy"_doe (DOE), through its CRADA, LDRD, ASCI, and Genomes-to-Life @@ -462,165 +464,59 @@ Hierarchical Modeling". :link(oascr,http://www.sc.doe.gov/ascr/home.html) :link(ober,http://www.er.doe.gov/production/ober/ober_top.html) -The following papers describe the parallel algorithms used in LAMMPS. +The following paper describe the basic parallel algorithms used in +LAMMPS. If you use LAMMPS results in your published work, please cite +this paper and include a pointer to the "LAMMPS WWW Site"_lws +(http://lammps.sandia.gov): S. J. Plimpton, [Fast Parallel Algorithms for Short-Range Molecular Dynamics], J Comp Phys, 117, 1-19 (1995). -S. J. Plimpton, R. Pollock, M. Stevens, [Particle-Mesh Ewald and -rRESPA for Parallel Molecular Dynamics Simulations], in Proc of the -Eighth SIAM Conference on Parallel Processing for Scientific -Computing, Minneapolis, MN (March 1997). +Other papers describing specific algorithms used in LAMMPS are listed +under the "Citing LAMMPS link"_http://lammps.sandia.gov/cite.html of +the LAMMPS WWW page. -If you use LAMMPS results in your published work, please cite the J -Comp Phys reference and include a pointer to the "LAMMPS WWW Site"_lws -(http://lammps.sandia.gov). +The "Publications link"_http://lammps.sandia.gov/papers.html on the +LAMMPS WWW page lists papers that have cited LAMMPS. If your paper is +not listed there for some reason, feel free to send us the info. If +the simulations in your paper produced cool pictures or animations, +we'll be pleased to add them to the +"Pictures"_http://lammps.sandia.gov/pictures.html or +"Movies"_http://lammps.sandia.gov/movies.html pages of the LAMMPS WWW +site. -If you send is information about your publication, we'll be pleased to -add it to the Publications page of the "LAMMPS WWW Site"_lws. Ditto -for a picture or movie for the Pictures or Movies pages. +The core group of LAMMPS developers is at Sandia National Labs: -The core group of LAMMPS developers is at Sandia National Labs. They -include "Steve Plimpton"_sjp, Paul Crozier, and Aidan Thompson and can -be contacted via email: sjplimp, pscrozi, athomps at sandia.gov. +Steve Plimpton, sjplimp at sandia.gov +Aidan Thompson, athomps at sandia.gov +Paul Crozier, pscrozi at sandia.gov :ul -Here are various folks who have made significant contributions to -features in LAMMPS. The most recent contributions are at the top of -the list. +The following folks are responsible for significant contributions to +the code, or other aspects of the LAMMPS development effort. Many of +the packages they have written are somewhat unique to LAMMPS and the +code would not be as general-purpose as it is without their expertise +and efforts. -:link(sjp,http://www.sandia.gov/~sjplimp) +Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CG-CMM and USER-OMP packages +Roy Pollock (LLNL), Ewald and PPPM solvers +Mike Brown (ORNL), brownw at ornl.gov, GPU package +Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential +Mike Parks (Sandia), mlparks at sandia.gov, PERI package for Peridynamics +Rudra Mukherjee (JPL), Rudranarayan.M.Mukherjee at jpl.nasa.gov, POEMS package for articulated rigid body motion +Reese Jones (Sandia) and collaborators, rjones at sandia.gov, USER-ATC package for atom/continuum coupling +Ilya Valuev (JIHT), valuev at physik.hu-berlin.de, USER-AWPMD package for wave-packet MD +Christian Trott (U Tech Ilmenau), christian.trott at tu-ilmenau.de, USER-CUDA package +Andres Jaramillo-Botero (Caltech), ajaramil at wag.caltech.edu, USER-EFF package for electron force field +Pieter in' t Veld (BASF), pieter.intveld at basf.com, USER-EWALDN package for 1/r^N long-range solvers +Christoph Kloss (JKU), Christoph.Kloss at jku.at, USER-LIGGGHTS package for granular models and granular/fluid coupling +Metin Aktulga (LBL), hmaktulga at lbl.gov, USER-REAXC package for C version of ReaxFF +Georg Gunzenmuller (EMI), georg.ganzenmueller at emi.fhg.de, USER-SPH package :ul -pppm GPU single and double : Mike Brown (ORNL) -pair_style lj/cut/expand : Inderaj Bains (NVIDIA) -temperature accelerated dynamics (TAD) : Aidan Thompson (Sandia) -pair reax/c and fix qeq/reax : Metin Aktulga (Purdue, now LBNL) -DREIDING force field, pair_style hbond/dreiding, etc : Tod Pascal (CalTech) -fix adapt and compute ti for thermodynamic integreation for free energies : Sai Jayaraman (Sandia) -pair born and pair gauss : Sai Jayaraman (Sandia) -stochastic rotation dynamics (SRD) via fix srd : Jemery Lechman (Sandia) and Pieter in 't Veld (BASF) -ipp Perl script tool : Reese Jones (Sandia) -eam_database and createatoms tools : Xiaowang Zhou (Sandia) -electron force field (eFF) : Andres Jaramillo-Botero and Julius Su (Caltech) -embedded ion method (EIM) potential : Xiaowang Zhou (Sandia) -COMB potential with charge equilibration : Tzu-Ray Shan (U Florida) -fix ave/correlate : Benoit Leblanc, Dave Rigby, Paul Saxe (Materials Design) and Reese Jones (Sandia) -pair_style peri/lps : Mike Parks (Sandia) -fix msst : Lawrence Fried (LLNL), Evan Reed (LLNL, Stanford) -thermo_style custom tpcpu & spcpu keywords : Axel Kohlmeyer (Temple U) -fix rigid/nve, fix rigid/nvt : Tony Sheh and Trung Dac Nguyen (U Michigan) -public SVN & Git repositories for LAMMPS : Axel Kohlmeyer (Temple U) and Bill Goldman (Sandia) -fix nvt, fix nph, fix npt, Parinello/Rahman dynamics, fix box/relax : Aidan Thompson (Sandia) -compute heat/flux : German Samolyuk (ORNL) and Mario Pinto (Computational Research Lab, Pune, India) -pair yukawa/colloid : Randy Schunk (Sandia) -fix wall/colloid : Jeremy Lechman (Sandia) -pair_style dsmc for Direct Simulation Monte Carlo (DSMC) modeling : Paul Crozier (Sandia) -fix imd for real-time viz and interactive MD : Axel Kohlmeyer (Temple Univ) -concentration-dependent EAM potential : Alexander Stukowski (Technical University of Darmstadt) -parallel replica dymamics (PRD) : Mike Brown (Sandia) -min_style hftn : Todd Plantenga (Sandia) -fix atc : Reese Jones, Jon Zimmerman, Jeremy Templeton (Sandia) -dump cfg : Liang Wan (Chinese Academy of Sciences) -fix nvt with Nose/Hoover chains : Andy Ballard (U Maryland) -pair_style lj/cut/gpu, pair_style gayberne/gpu : Mike Brown (Sandia) -pair_style lj96/cut, bond_style table, angle_style table : Chuanfu Luo -fix langevin tally : Carolyn Phillips (U Michigan) -compute heat/flux for Green-Kubo : Reese Jones (Sandia), Philip Howell (Siemens), Vikas Varsney (AFRL) -region cone : Pim Schravendijk -fix reax/bonds : Aidan Thompson (Sandia) -pair born/coul/long : Ahmed Ismail (Sandia) -fix ttm : Paul Crozier (Sandia) and Carolyn Phillips (U Michigan) -fix box/relax : Aidan Thompson and David Olmsted (Sandia) -ReaxFF potential : Aidan Thompson (Sandia) and Hansohl Cho (MIT) -compute cna/atom : Wan Liang (Chinese Academy of Sciences) -Tersoff/ZBL potential : Dave Farrell (Northwestern U) -peridynamics : Mike Parks (Sandia) -fix smd for steered MD : Axel Kohlmeyer (U Penn) -GROMACS pair potentials : Mark Stevens (Sandia) -lmp2vmd tool : Axel Kohlmeyer (U Penn) -compute group/group : Naveen Michaud-Agrawal (Johns Hopkins U) -CG-CMM user package for coarse-graining : Axel Kohlmeyer (U Penn) -cosine/delta angle potential : Axel Kohlmeyer (U Penn) -VIM editor add-ons for LAMMPS input scripts : Gerolf Ziegenhain -pair lubricate : Randy Schunk (Sandia) -compute ackland/atom : Gerolf Zeigenhain -kspace_style ewald/n, pair_style lj/coul, pair_style buck/coul : \ - Pieter in 't Veld (Sandia) -AIREBO bond-order potential : Ase Henry (MIT) -making LAMMPS a true "object" that can be instantiated multiple times, \ - e.g. as a library : Ben FrantzDale (RPI) -pymol_asphere viz tool : Mike Brown (Sandia) -NEMD SLLOD integration : Pieter in 't Veld (Sandia) -tensile and shear deformations : Pieter in 't Veld (Sandia) -GayBerne potential : Mike Brown (Sandia) -ellipsoidal particles : Mike Brown (Sandia) -colloid potentials : Pieter in 't Veld (Sandia) -fix heat : Paul Crozier and Ed Webb (Sandia) -neighbor multi and communicate multi : Pieter in 't Veld (Sandia) -MATLAB post-processing scripts : Arun Subramaniyan (Purdue) -triclinic (non-orthogonal) simulation domains : Pieter in 't Veld (Sandia) -thermo_extract tool: Vikas Varshney (Wright Patterson AFB) -fix ave/time and fix ave/spatial : Pieter in 't Veld (Sandia) -MEAM potential : Greg Wagner (Sandia) -optimized pair potentials for lj/cut, charmm/long, eam, morse : \ - James Fischer (High Performance Technologies), \ - David Richie and Vincent Natoli (Stone Ridge Technologies) -fix wall/lj126 : Mark Stevens (Sandia) -Stillinger-Weber and Tersoff potentials : Aidan Thompson and Xiaowang Zhou (Sandia) -region prism : Pieter in 't Veld (Sandia) -LJ tail corrections for energy/pressure : Paul Crozier (Sandia) -fix momentum and recenter : Naveen Michaud-Agrawal (Johns Hopkins U) -multi-letter variable names : Naveen Michaud-Agrawal (Johns Hopkins U) -OPLS dihedral potential: Mark Stevens (Sandia) -POEMS coupled rigid body integrator: Rudranarayan Mukherjee (RPI) -faster pair hybrid potential: James Fischer \ - (High Performance Technologies, Inc), Vincent Natoli and \ - David Richie (Stone Ridge Technology) -breakable bond quartic potential: Chris Lorenz and Mark Stevens (Sandia) -DCD and XTC dump styles: Naveen Michaud-Agrawal (Johns Hopkins U) -grain boundary orientation fix : Koenraad Janssens and David Olmsted (Sandia) -lj/smooth pair potential : Craig Maloney (UCSB) -radius-of-gyration spring fix : Naveen Michaud-Agrawal (Johns Hopkins U) and \ - Paul Crozier (Sandia) -self spring fix : Naveen Michaud-Agrawal (Johns Hopkins U) -EAM CoAl and AlCu potentials : Kwang-Reoul Lee (KIST, Korea) -cosine/squared angle potential : Naveen Michaud-Agrawal (Johns Hopkins U) -helix dihedral potential : Naveen Michaud-Agrawal (Johns Hopkins U) and \ - Mark Stevens (Sandia) -Finnis/Sinclair EAM: Tim Lau (MIT) -dissipative particle dynamics (DPD) potentials: Kurt Smith (U Pitt) and \ - Frank van Swol (Sandia) -TIP4P potential (4-site water): Ahmed Ismail and Amalie Frischknecht (Sandia) -uniaxial strain fix: Carsten Svaneborg (Max Planck Institute) -thermodynamics enhanced by fix quantities: Aidan Thompson (Sandia) -compressed dump files: Erik Luijten (U Illinois) -cylindrical indenter fix: Ravi Agrawal (Northwestern U) -electric field fix: Christina Payne (Vanderbilt U) -AMBER <-> LAMMPS tool: Keir Novik (Univ College London) and \ - Vikas Varshney (U Akron) -CHARMM <-> LAMMPS tool: Pieter in 't Veld and Paul Crozier (Sandia) -Morse bond potential: Jeff Greathouse (Sandia) -radial distribution functions: Paul Crozier & Jeff Greathouse (Sandia) -force tables for long-range Coulombics: Paul Crozier (Sandia) -targeted molecular dynamics (TMD): Paul Crozier (Sandia) and \ - Christian Burisch (Bochum University, Germany) -FFT support for SGI SCSL (Altix): Jim Shepherd (Ga Tech) -lmp2cfg and lmp2traj tools: Ara Kooser, Jeff Greathouse, \ - Andrey Kalinichev (Sandia) -parallel tempering: Mark Sears (Sandia) -embedded atom method (EAM) potential: Stephen Foiles (Sandia) -multi-harmonic dihedral potential: Mathias Puetz (Sandia) -granular force fields and BC: Leo Silbert & Gary Grest (Sandia) -2d Ewald/PPPM: Paul Crozier (Sandia) -CHARMM force fields: Paul Crozier (Sandia) -msi2lmp tool: Steve Lustig (Dupont), Mike Peachey & John Carpenter (Cray) -HTFN energy minimizer: Todd Plantenga (Sandia) -class 2 force fields: Eric Simon (Cray) -NVT/NPT integrators: Mark Stevens (Sandia) -rRESPA: Mark Stevens & Paul Crozier (Sandia) -Ewald and PPPM solvers: Roy Pollock (LLNL) : :tb(s=:) +As discussed in "this section"_Section_history.html, LAMMPS originated +as a cooperative project between DOE labs and industrial +partners. Folks involved in the design and testing of the original +version of LAMMPS were the following: -Other CRADA partners involved in the design and testing of LAMMPS were - John Carpenter (Mayo Clinic, formerly at Cray Research) Terry Stouch (Lexicon Pharmaceuticals, formerly at Bristol Myers Squibb) Steve Lustig (Dupont) diff --git a/doc/Section_modify.html b/doc/Section_modify.html index 2c975df18f..8e217b40fe 100644 --- a/doc/Section_modify.html +++ b/doc/Section_modify.html @@ -11,7 +11,7 @@ Section
            -

            8. Modifying & extending LAMMPS +

            10. Modifying & extending LAMMPS

            LAMMPS is designed in a modular fashion so as to be easy to modify and extend with new functionality. In fact, about 75% of its source code @@ -22,7 +22,7 @@ with minimal instructions. If you add a new feature to LAMMPS and think it will be of interest to general users, we encourage you to submit it to the developers for inclusion in the released version of LAMMPS. Information about how to do this is provided -below. +below.

            The best way to add a new feature is to find a similar feature in LAMMPS and look at the corresponding source and header files to figure @@ -75,28 +75,9 @@ the executable and can be invoked with a pair_style command like the example above. Arguments like 0.1 and 3.5 can be defined and processed by your new class.

            -

            Here is a list of the new features that can be added in this way, -along with information about how to submit your features for inclusion -in the LAMMPS distribution. -

            - - -

            As illustrated by the pairwise example, these options are referred to -in the LAMMPS documentation as the "style" of a particular command. +

            As illustrated by this pairwise example, many kinds of options are +referred to in the LAMMPS documentation as the "style" of a particular +command.

            The instructions below give the header file for the base class that these styles are derived from. Public variables in that file are ones @@ -108,13 +89,9 @@ LAMMPS expects. Virtual functions that are not set to 0 are functions you can optionally define.

            Additionally, new output options can be added directly to the -thermo.cpp, dump_custom.cpp, and variable.cpp files as explained in -these sections: +thermo.cpp, dump_custom.cpp, and variable.cpp files as explained +below.

            -

            Here are additional guidelines for modifying LAMMPS and adding new @@ -136,52 +113,78 @@ command.

          • If you add something you think is truly useful and doesn't impact LAMMPS performance when it isn't used, send an email to the developers. We might be -interested in adding it to the LAMMPS distribution. +interested in adding it to the LAMMPS distribution. See further +details on this at the bottom of this page.

          +

          Here are the subsequent topics discussed below, most of which are new +features that can be added in the manner just described: +

          +10.1 Atom styles
          +10.2 Bond, angle, dihedral, improper potentials
          +10.3 Compute styles
          +10.4 Dump styles
          +10.5 Dump custom output options
          +10.6 Fix styles which include integrators, temperature and pressure control, force constraints, boundary conditions, diagnostic output, etc
          +10.7 Input script commands
          +10.8 Kspace computations
          +10.9 Minimization styles
          +10.10 Pairwise potentials
          +10.11 Region styles
          +10.12 Thermodynamic output options
          +10.13 Variable options
          +10.14 Submitting new features for inclusion in LAMMPS
          +
          -

          Atom styles +
          + +

          10.1 Atom styles

          -

          Classes that define an atom style are derived from the Atom class. -The atom style determines what quantities are associated with an atom. -A new atom style can be created if one of the existing atom styles -does not define all the arrays you need to store and communicate with -atoms. +

          Classes that define an atom style are derived from the AtomVec class +and managed by the Atom class. The atom style determines what +quantities are associated with an atom. A new atom style can be +created if one of the existing atom styles does not define all +the arrays you need to store and communicate with atoms.

          Atom_vec_atomic.cpp is a simple example of an atom style.

          Here is a brief description of methods you define in your new derived -class. See atom.h for details. +class. See atom_vec.h for details.

          - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          grow re-allocate atom arrays to longer lengths
          copy copy info for one atom to another atom's array locations
          pack_comm store an atom's info in a buffer communicated every timestep
          pack_comm_vel add velocity info to buffer
          pack_comm_one store extra info unique to this atom style
          unpack_comm retrieve an atom's info from the buffer
          unpack_comm_vel also retrieve velocity info
          unpack_comm_one retreive extra info unique to this atom style
          pack_reverse store an atom's info in a buffer communicating partial forces
          pack_reverse_one store extra info unique to this atom style
          unpack_reverse retrieve an atom's info from the buffer
          unpack_reverse_one retreive extra info unique to this atom style
          pack_border store an atom's info in a buffer communicated on neighbor re-builds
          pack_border_vel add velocity info to buffer
          pack_border_one store extra info unique to this atom style
          unpack_border retrieve an atom's info from the buffer
          unpack_border_vel also retrieve velocity info
          unpack_border_one retreive extra info unique to this atom style
          pack_exchange store all an atom's info to migrate to another processor
          unpack_exchange retrieve an atom's info from the buffer
          size_restart number of restart quantities associated with proc's atoms
          pack_restart pack atom quantities into a buffer
          unpack_restart unpack atom quantities from a buffer
          create_atom create an individual atom of this style
          data_atom parse an atom line from the data file
          memory_usage tally memory allocated by atom arrays +
          init one time setup (optional)
          grow re-allocate atom arrays to longer lengths (required)
          grow_reset make array pointers in Atom and AtomVec classes consistent (required)
          copy copy info for one atom to another atom's array locations (required)
          pack_comm store an atom's info in a buffer communicated every timestep (required)
          pack_comm_vel add velocity info to communication buffer (required)
          pack_comm_hybrid store extra info unique to this atom style (optional)
          unpack_comm retrieve an atom's info from the buffer (required)
          unpack_comm_vel also retrieve velocity info (required)
          unpack_comm_hybrid retreive extra info unique to this atom style (optional)
          pack_reverse store an atom's info in a buffer communicating partial forces (required)
          pack_reverse_hybrid store extra info unique to this atom style (optional)
          unpack_reverse retrieve an atom's info from the buffer (required)
          unpack_reverse_hybrid retreive extra info unique to this atom style (optional)
          pack_border store an atom's info in a buffer communicated on neighbor re-builds (required)
          pack_border_vel add velocity info to buffer (required)
          pack_border_hybrid store extra info unique to this atom style (optional)
          unpack_border retrieve an atom's info from the buffer (required)
          unpack_border_vel also retrieve velocity info (required)
          unpack_border_hybrid retreive extra info unique to this atom style (optional)
          pack_exchange store all an atom's info to migrate to another processor (required)
          unpack_exchange retrieve an atom's info from the buffer (required)
          size_restart number of restart quantities associated with proc's atoms (required)
          pack_restart pack atom quantities into a buffer (required)
          unpack_restart unpack atom quantities from a buffer (required)
          create_atom create an individual atom of this style (required)
          data_atom parse an atom line from the data file (required)
          data_atom_hybrid parse additional atom info unique to this atom style (optional)
          data_vel parse one line of velocity information from data file (optional)
          data_vel_hybrid parse additional velocity data unique to this atom style (optional)
          memory_usage tally memory allocated by atom arrays (required)

          The constructor of the derived class sets values for several variables @@ -192,7 +195,7 @@ modify.


          -

          Bond, angle, dihedral, improper potentials +

          10.2 Bond, angle, dihedral, improper potentials

          Classes that compute molecular interactions are derived from the Bond, Angle, Dihedral, and Improper classes. New styles can be created to @@ -202,21 +205,26 @@ add new potentials to LAMMPS. the harmonic forms of the angle, dihedral, and improper style commands.

          -

          Here is a brief description of methods you define in your new derived -bond class. See bond.h, angle.h, dihedral.h, and improper.h for -details. +

          Here is a brief description of common methods you define in your +new derived class. See bond.h, angle.h, dihedral.h, and improper.h +for details and specific additional methods.

          - - - - - + + + + + + + + +
          compute compute the molecular interactions
          coeff set coefficients for one bond type
          equilibrium_distance length of bond, used by SHAKE
          write & read_restart writes/reads coeffs to restart files
          single force and energy of a single bond +
          init check if all coefficients are set, calls init_style (optional)
          init_style check if style specific conditions are met (optional)
          compute compute the molecular interactions (required)
          settings apply global settings for all types (optional)
          coeff set coefficients for one type (required)
          equilibrium_distance length of bond, used by SHAKE (required, bond only)
          equilibrium_angle opening of angle, used by SHAKE (required, angle only)
          write & read_restart writes/reads coeffs to restart files (required)
          single force and energy of a single bond or angle (required, bond or angle only)
          memory_usage tally memory allocated by the style (optional)

          -

          Compute styles +

          10.3 Compute styles

          Classes that compute scalar and vector quantities like temperature and the pressure tensor, as well as classes that compute per-atom @@ -232,21 +240,28 @@ per-atom kinetic energy. class. See compute.h for details.

          - - - - - - - - + + + + + + + + + + + + + +
          compute_scalar compute a scalar quantity
          compute_vector compute a vector of quantities
          compute_peratom compute one or more quantities per atom
          pack_comm pack a buffer with items to communicate
          unpack_comm unpack the buffer
          pack_reverse pack a buffer with items to reverse communicate
          unpack_reverse unpack the buffer
          memory_usage tally memory usage +
          init perform one time setup (required)
          init_list neighbor list setup, if needed (optional)
          compute_scalar compute a scalar quantity (optional)
          compute_vector compute a vector of quantities (optional)
          compute_peratom compute one or more quantities per atom (optional)
          compute_local compute one or more quantities per processor (optional)
          pack_comm pack a buffer with items to communicate (optional)
          unpack_comm unpack the buffer (optional)
          pack_reverse pack a buffer with items to reverse communicate (optional)
          unpack_reverse unpack the buffer (optional)
          remove_bias remove velocity bias from one atom (optional)
          remove_bias_all remove velocity bias from all atoms in group (optional)
          restore_bias restore velocity bias for one atom after remove_bias (optional)
          restore_bias_all same as before, but for all atoms in group (optional)
          memory_usage tally memory usage (optional)

          -

          Dump styles +

          10.4 Dump styles

          -

          Dump custom output options +

          10.5 Dump custom output options

          Classes that dump per-atom info to files are derived from the Dump class. To dump new quantities or in a new format, a new derived dump @@ -277,7 +292,7 @@ half-dozen or so locations where code will need to be added.


          -

          Fix styles +

          10.6 Fix styles

          In LAMMPS, a "fix" is any operation that is computed during timestepping that alters some property of the system. Essentially @@ -297,34 +312,59 @@ implement. derived class. See fix.h for details.

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          setmask determines when the fix is called during the timestep
          init initialization before a run
          setup called immediately before the 1st timestep
          initial_integrate called at very beginning of each timestep
          pre_exchange called before atom exchange on re-neighboring steps
          pre_neighbor called before neighbor list build
          post_force called after pair & molecular forces are computed
          final_integrate called at end of each timestep
          end_of_step called at very end of timestep
          write_restart dumps fix info to restart file
          restart uses info from restart file to re-initialize the fix
          grow_arrays allocate memory for atom-based arrays used by fix
          copy_arrays copy atom info when an atom migrates to a new processor
          memory_usage report memory used by fix
          pack_exchange store atom's data in a buffer
          unpack_exchange retrieve atom's data from a buffer
          pack_restart store atom's data for writing to restart file
          unpack_restart retrieve atom's data from a restart file buffer
          size_restart size of atom's data
          maxsize_restart max size of atom's data
          initial_integrate_respa same as initial_integrate, but for rRESPA
          post_force_respa same as post_force, but for rRESPA
          final_integrate_respa same as final_integrate, but for rRESPA
          pack_comm pack a buffer to communicate a per-atom quantity
          unpack_comm unpack a buffer to communicate a per-atom quantity
          pack_reverse_comm pack a buffer to reverse communicate a per-atom quantity
          unpack_reverse_comm unpack a buffer to reverse communicate a per-atom quantity
          thermo compute quantities for thermodynamic output +
          setmask determines when the fix is called during the timestep (required)
          init initialization before a run (optional)
          setup_pre_exchange called before atom exchange in setup (optional)
          setup_pre_force called before force computation in setup (optional)
          setup called immediately before the 1st timestep and after forces are computed (optional)
          min_setup_pre_force like setup_pre_force, but for minimizations instead of MD runs (optional)
          min_setup like setup, but for minimizations instead of MD runs (optional)
          initial_integrate called at very beginning of each timestep (optional)
          pre_exchange called before atom exchange on re-neighboring steps (optional)
          pre_neighbor called before neighbor list build (optional)
          pre_force called after pair & molecular forces are computed (optional)
          post_force called after pair & molecular forces are computed and communicated (optional)
          final_integrate called at end of each timestep (optional)
          end_of_step called at very end of timestep (optional)
          write_restart dumps fix info to restart file (optional)
          restart uses info from restart file to re-initialize the fix (optional)
          grow_arrays allocate memory for atom-based arrays used by fix (optional)
          copy_arrays copy atom info when an atom migrates to a new processor (optional)
          pack_exchange store atom's data in a buffer (optional)
          unpack_exchange retrieve atom's data from a buffer (optional)
          pack_restart store atom's data for writing to restart file (optional)
          unpack_restart retrieve atom's data from a restart file buffer (optional)
          size_restart size of atom's data (optional)
          maxsize_restart max size of atom's data (optional)
          setup_pre_force_respa same as setup_pre_force, but for rRESPA (optional)
          initial_integrate_respa same as initial_integrate, but for rRESPA (optional)
          post_integrate_respa called after the first half integration step is done in rRESPA (optional)
          pre_force_respa same as pre_force, but for rRESPA (optional)
          post_force_respa same as post_force, but for rRESPA (optional)
          final_integrate_respa same as final_integrate, but for rRESPA (optional)
          min_pre_force called after pair & molecular forces are computed in minimizer (optional)
          min_post_force called after pair & molecular forces are computed and communicated in minmizer (optional)
          min_store store extra data for linesearch based minimization on a LIFO stack (optional)
          min_pushstore push the minimization LIFO stack one element down (optional)
          min_popstore pop the minimization LIFO stack one element up (optional)
          min_clearstore clear minimization LIFO stack (optional)
          min_step reset or move forward on line search minimization (optional)
          min_dof report number of degrees of freedom added by this fix in minimization (optional)
          max_alpha report maximum allowed step size during linesearch minimization (optional)
          pack_comm pack a buffer to communicate a per-atom quantity (optional)
          unpack_comm unpack a buffer to communicate a per-atom quantity (optional)
          pack_reverse_comm pack a buffer to reverse communicate a per-atom quantity (optional)
          unpack_reverse_comm unpack a buffer to reverse communicate a per-atom quantity (optional)
          dof report number of degrees of freedom removed by this fix during MD (optional)
          compute_scalar return a global scalar property that the fix computes (optional)
          compute_vector return a component of a vector property that the fix computes (optional)
          compute_array return a component of an array property that the fix computes (optional)
          deform called when the box size is changed (optional)
          reset_target called when a change of the target temperature is requested during a run (optional)
          reset_dt is called when a change of the time step is requested during a run (optional)
          modify_param called when a fix_modify request is executed (optional)
          memory_usage report memory used by fix (optional)
          thermo compute quantities for thermodynamic output (optional)

          Typically, only a small fraction of these methods are defined for a @@ -355,7 +395,7 @@ quantities and/or to be summed to the potential energy of the system.


          -

          Input script commands +

          10.7 Input script commands

          New commands can be added to LAMMPS input scripts by adding new classes that have a "command" method. For example, the create_atoms, @@ -377,7 +417,7 @@ needed.


          -

          Kspace computations +

          10.8 Kspace computations

          Classes that compute long-range Coulombic interactions via K-space representations (Ewald, PPPM) are derived from the KSpace class. New @@ -397,7 +437,7 @@ class. See kspace.h for details.


          -

          Minimization solvers +

          10.9 Minimization styles

          Classes that perform energy minimization derived from the Min class. New styles can be created to add new minimization algorithms to @@ -416,7 +456,7 @@ class. See min.h for details.


          -

          Pairwise potentials +

          10.10 Pairwise potentials

          Classes that compute pairwise interactions are derived from the Pair class. In LAMMPS, pairwise calculation include manybody potentials @@ -445,7 +485,7 @@ includes some optional methods to enable its use with rRESPA.


          -

          Region styles +

          10.11 Region styles

          Classes that define geometric regions are derived from the Region class. Regions are used elsewhere in LAMMPS to group atoms, delete @@ -463,7 +503,7 @@ class. See region.h for details.


          -

          Thermodynamic output options +

          10.12 Thermodynamic output options

          There is one class that computes and prints thermodynamic information to the screen and log file; see the file thermo.cpp. @@ -492,7 +532,7 @@ by adding a new keyword to the thermo command.


          -

          Variable options +

          10.13 Variable options

          There is one class that computes and stores variable information in LAMMPS; see the file variable.cpp. The value @@ -532,19 +572,21 @@ then be accessed by variables) was discussed


          -

          Submitting new features to the developers to include in LAMMPS +
          + +

          10.14 Submitting new features for inclusion in LAMMPS

          We encourage users to submit new features that they add to LAMMPS to the developers, especially if you think the features will be of interest to other users. If they are broadly useful we may add them as core files to LAMMPS or as part -of a standard package. Else we will add them -as a user-contributed package or file. Examples of user packages are -in src sub-directories that start with USER. The USER-MISC package is -simply a collection of (mostly) unrelated single files, which is the -simplest way to have your contribution quickly added to the LAMMPS -distribution. You can see a list of the both standard and user -packages by typing "make package" in the LAMMPS src directory. +of a standard package. Else we will add +them as a user-contributed package or file. Examples of user packages +are in src sub-directories that start with USER. The USER-MISC +package is simply a collection of (mostly) unrelated single files, +which is the simplest way to have your contribution quickly added to +the LAMMPS distribution. You can see a list of the both standard and +user packages by typing "make package" in the LAMMPS src directory.

          With user packages and files, all we are really providing (aside from the fame and fortune that accompanies having your name in the source diff --git a/doc/Section_modify.txt b/doc/Section_modify.txt index fc72b625e8..789761cbb2 100644 --- a/doc/Section_modify.txt +++ b/doc/Section_modify.txt @@ -8,7 +8,7 @@ Section"_Section_python.html :c :line -8. Modifying & extending LAMMPS :h3 +10. Modifying & extending LAMMPS :h3 LAMMPS is designed in a modular fashion so as to be easy to modify and extend with new functionality. In fact, about 75% of its source code @@ -19,7 +19,7 @@ with minimal instructions. If you add a new feature to LAMMPS and think it will be of interest to general users, we encourage you to submit it to the developers for inclusion in the released version of LAMMPS. Information about how to do this is provided -"below"_#package. +"below"_#mod_14. The best way to add a new feature is to find a similar feature in LAMMPS and look at the corresponding source and header files to figure @@ -72,30 +72,9 @@ the executable and can be invoked with a pair_style command like the example above. Arguments like 0.1 and 3.5 can be defined and processed by your new class. -Here is a list of the new features that can be added in this way, -along with information about how to submit your features for inclusion -in the LAMMPS distribution. - -"Atom styles"_#atom -"Bond, angle, dihedral, improper potentials"_#bond -"Compute styles"_#compute -"Dump styles"_#dump -"Dump custom output options"_#dump -"Fix styles"_#fix which include integrators, \ - temperature and pressure control, force constraints, \ - boundary conditions, diagnostic output, etc -"Input script commands"_#command -"Kspace computations"_#kspace -"Minimization solvers"_#min -"Pairwise potentials"_#pair -"Region styles"_#region -"Thermodynamic output options"_#thermo -"Variable options"_#variable :ul - -"Submitting new features to the developers to include in LAMMPS"_#package :ul - -As illustrated by the pairwise example, these options are referred to -in the LAMMPS documentation as the "style" of a particular command. +As illustrated by this pairwise example, many kinds of options are +referred to in the LAMMPS documentation as the "style" of a particular +command. The instructions below give the header file for the base class that these styles are derived from. Public variables in that file are ones @@ -107,12 +86,8 @@ LAMMPS expects. Virtual functions that are not set to 0 are functions you can optionally define. Additionally, new output options can be added directly to the -thermo.cpp, dump_custom.cpp, and variable.cpp files as explained in -these sections: - -"Dump custom output options"_#dump_custom -"Thermodynamic output options"_#thermo -"Variable options"_#variable :ul +thermo.cpp, dump_custom.cpp, and variable.cpp files as explained +below. :line @@ -135,50 +110,78 @@ command. :l If you add something you think is truly useful and doesn't impact LAMMPS performance when it isn't used, send an email to the "developers"_http://lammps.sandia.gov/authors.html. We might be -interested in adding it to the LAMMPS distribution. :l,ule +interested in adding it to the LAMMPS distribution. See further +details on this at the bottom of this page. :l,ule + +:line + +Here are the subsequent topics discussed below, most of which are new +features that can be added in the manner just described: + +10.1 "Atom styles"_#mod_1 +10.2 "Bond, angle, dihedral, improper potentials"_#mod_2 +10.3 "Compute styles"_#mod_3 +10.4 "Dump styles"_#mod_4 +10.5 "Dump custom output options"_#mod_5 +10.6 "Fix styles"_#mod_6 which include integrators, \ + temperature and pressure control, force constraints, \ + boundary conditions, diagnostic output, etc +10.7 "Input script commands"_mod_7 +10.8 "Kspace computations"_#mod_8 +10.9 "Minimization styles"_#mod_9 +10.10 "Pairwise potentials"_#mod_10 +10.11 "Region styles"_#mod_11 +10.12 "Thermodynamic output options"_#mod_12 +10.13 "Variable options"_#mod_13 +10.14 "Submitting new features for inclusion in LAMMPS"_#mod_14 :all(b) :line :line -Atom styles :link(atom),h4 +10.1 Atom styles :link(mod_1),h4 -Classes that define an atom style are derived from the Atom class. -The atom style determines what quantities are associated with an atom. -A new atom style can be created if one of the existing atom styles -does not define all the arrays you need to store and communicate with -atoms. +Classes that define an atom style are derived from the AtomVec class +and managed by the Atom class. The atom style determines what +quantities are associated with an atom. A new atom style can be +created if one of the existing atom styles does not define all +the arrays you need to store and communicate with atoms. Atom_vec_atomic.cpp is a simple example of an atom style. Here is a brief description of methods you define in your new derived -class. See atom.h for details. +class. See atom_vec.h for details. -grow: re-allocate atom arrays to longer lengths -copy: copy info for one atom to another atom's array locations -pack_comm: store an atom's info in a buffer communicated every timestep -pack_comm_vel: add velocity info to buffer -pack_comm_one: store extra info unique to this atom style -unpack_comm: retrieve an atom's info from the buffer -unpack_comm_vel: also retrieve velocity info -unpack_comm_one: retreive extra info unique to this atom style -pack_reverse: store an atom's info in a buffer communicating partial forces -pack_reverse_one: store extra info unique to this atom style -unpack_reverse: retrieve an atom's info from the buffer -unpack_reverse_one: retreive extra info unique to this atom style -pack_border: store an atom's info in a buffer communicated on neighbor re-builds -pack_border_vel: add velocity info to buffer -pack_border_one: store extra info unique to this atom style -unpack_border: retrieve an atom's info from the buffer -unpack_border_vel: also retrieve velocity info -unpack_border_one: retreive extra info unique to this atom style -pack_exchange: store all an atom's info to migrate to another processor -unpack_exchange: retrieve an atom's info from the buffer -size_restart: number of restart quantities associated with proc's atoms -pack_restart: pack atom quantities into a buffer -unpack_restart: unpack atom quantities from a buffer -create_atom: create an individual atom of this style -data_atom: parse an atom line from the data file -memory_usage: tally memory allocated by atom arrays :tb(s=:) +init: one time setup (optional) +grow: re-allocate atom arrays to longer lengths (required) +grow_reset: make array pointers in Atom and AtomVec classes consistent (required) +copy: copy info for one atom to another atom's array locations (required) +pack_comm: store an atom's info in a buffer communicated every timestep (required) +pack_comm_vel: add velocity info to communication buffer (required) +pack_comm_hybrid: store extra info unique to this atom style (optional) +unpack_comm: retrieve an atom's info from the buffer (required) +unpack_comm_vel: also retrieve velocity info (required) +unpack_comm_hybrid: retreive extra info unique to this atom style (optional) +pack_reverse: store an atom's info in a buffer communicating partial forces (required) +pack_reverse_hybrid: store extra info unique to this atom style (optional) +unpack_reverse: retrieve an atom's info from the buffer (required) +unpack_reverse_hybrid: retreive extra info unique to this atom style (optional) +pack_border: store an atom's info in a buffer communicated on neighbor re-builds (required) +pack_border_vel: add velocity info to buffer (required) +pack_border_hybrid: store extra info unique to this atom style (optional) +unpack_border: retrieve an atom's info from the buffer (required) +unpack_border_vel: also retrieve velocity info (required) +unpack_border_hybrid: retreive extra info unique to this atom style (optional) +pack_exchange: store all an atom's info to migrate to another processor (required) +unpack_exchange: retrieve an atom's info from the buffer (required) +size_restart: number of restart quantities associated with proc's atoms (required) +pack_restart: pack atom quantities into a buffer (required) +unpack_restart: unpack atom quantities from a buffer (required) +create_atom: create an individual atom of this style (required) +data_atom: parse an atom line from the data file (required) +data_atom_hybrid: parse additional atom info unique to this atom style (optional) +data_vel: parse one line of velocity information from data file (optional) +data_vel_hybrid: parse additional velocity data unique to this atom style (optional) +memory_usage: tally memory allocated by atom arrays (required) :tb(s=:) The constructor of the derived class sets values for several variables that you must set when defining a new atom style, which are documented @@ -188,7 +191,7 @@ modify. :line -Bond, angle, dihedral, improper potentials :link(bond),h4 +10.2 Bond, angle, dihedral, improper potentials :link(mod_2),h4 Classes that compute molecular interactions are derived from the Bond, Angle, Dihedral, and Improper classes. New styles can be created to @@ -198,19 +201,24 @@ Bond_harmonic.cpp is the simplest example of a bond style. Ditto for the harmonic forms of the angle, dihedral, and improper style commands. -Here is a brief description of methods you define in your new derived -bond class. See bond.h, angle.h, dihedral.h, and improper.h for -details. +Here is a brief description of common methods you define in your +new derived class. See bond.h, angle.h, dihedral.h, and improper.h +for details and specific additional methods. -compute: compute the molecular interactions -coeff: set coefficients for one bond type -equilibrium_distance: length of bond, used by SHAKE -write & read_restart: writes/reads coeffs to restart files -single: force and energy of a single bond :tb(s=:) +init: check if all coefficients are set, calls {init_style} (optional) +init_style: check if style specific conditions are met (optional) +compute: compute the molecular interactions (required) +settings: apply global settings for all types (optional) +coeff: set coefficients for one type (required) +equilibrium_distance: length of bond, used by SHAKE (required, bond only) +equilibrium_angle: opening of angle, used by SHAKE (required, angle only) +write & read_restart: writes/reads coeffs to restart files (required) +single: force and energy of a single bond or angle (required, bond or angle only) +memory_usage: tally memory allocated by the style (optional) :tb(s=:) :line -Compute styles :link(compute),h4 +10.3 Compute styles :link(mod_3),h4 Classes that compute scalar and vector quantities like temperature and the pressure tensor, as well as classes that compute per-atom @@ -225,19 +233,26 @@ per-atom kinetic energy. Here is a brief description of methods you define in your new derived class. See compute.h for details. -compute_scalar: compute a scalar quantity -compute_vector: compute a vector of quantities -compute_peratom: compute one or more quantities per atom -pack_comm: pack a buffer with items to communicate -unpack_comm: unpack the buffer -pack_reverse: pack a buffer with items to reverse communicate -unpack_reverse: unpack the buffer -memory_usage: tally memory usage :tb(s=:) +init: perform one time setup (required) +init_list: neighbor list setup, if needed (optional) +compute_scalar: compute a scalar quantity (optional) +compute_vector: compute a vector of quantities (optional) +compute_peratom: compute one or more quantities per atom (optional) +compute_local: compute one or more quantities per processor (optional) +pack_comm: pack a buffer with items to communicate (optional) +unpack_comm: unpack the buffer (optional) +pack_reverse: pack a buffer with items to reverse communicate (optional) +unpack_reverse: unpack the buffer (optional) +remove_bias: remove velocity bias from one atom (optional) +remove_bias_all: remove velocity bias from all atoms in group (optional) +restore_bias: restore velocity bias for one atom after remove_bias (optional) +restore_bias_all: same as before, but for all atoms in group (optional) +memory_usage: tally memory usage (optional) :tb(s=:) :line -Dump styles :link(dump),h4 -Dump custom output options :link(dump_custom),h4 +10.4 Dump styles :link(mod_4),h4 +10.5 Dump custom output options :link(mod_5),h4 Classes that dump per-atom info to files are derived from the Dump class. To dump new quantities or in a new format, a new derived dump @@ -266,7 +281,7 @@ half-dozen or so locations where code will need to be added. :line -Fix styles :link(fix),h4 +10.6 Fix styles :link(mod_6),h4 In LAMMPS, a "fix" is any operation that is computed during timestepping that alters some property of the system. Essentially @@ -285,34 +300,59 @@ implement. Here is a brief description of methods you can define in your new derived class. See fix.h for details. -setmask: determines when the fix is called during the timestep -init: initialization before a run -setup: called immediately before the 1st timestep -initial_integrate: called at very beginning of each timestep -pre_exchange: called before atom exchange on re-neighboring steps -pre_neighbor: called before neighbor list build -post_force: called after pair & molecular forces are computed -final_integrate: called at end of each timestep -end_of_step: called at very end of timestep -write_restart: dumps fix info to restart file -restart: uses info from restart file to re-initialize the fix -grow_arrays: allocate memory for atom-based arrays used by fix -copy_arrays: copy atom info when an atom migrates to a new processor -memory_usage: report memory used by fix -pack_exchange: store atom's data in a buffer -unpack_exchange: retrieve atom's data from a buffer -pack_restart: store atom's data for writing to restart file -unpack_restart: retrieve atom's data from a restart file buffer -size_restart: size of atom's data -maxsize_restart: max size of atom's data -initial_integrate_respa: same as initial_integrate, but for rRESPA -post_force_respa: same as post_force, but for rRESPA -final_integrate_respa: same as final_integrate, but for rRESPA -pack_comm: pack a buffer to communicate a per-atom quantity -unpack_comm: unpack a buffer to communicate a per-atom quantity -pack_reverse_comm: pack a buffer to reverse communicate a per-atom quantity -unpack_reverse_comm: unpack a buffer to reverse communicate a per-atom quantity -thermo: compute quantities for thermodynamic output :tb(s=:) +setmask: determines when the fix is called during the timestep (required) +init: initialization before a run (optional) +setup_pre_exchange: called before atom exchange in setup (optional) +setup_pre_force: called before force computation in setup (optional) +setup: called immediately before the 1st timestep and after forces are computed (optional) +min_setup_pre_force: like setup_pre_force, but for minimizations instead of MD runs (optional) +min_setup: like setup, but for minimizations instead of MD runs (optional) +initial_integrate: called at very beginning of each timestep (optional) +pre_exchange: called before atom exchange on re-neighboring steps (optional) +pre_neighbor: called before neighbor list build (optional) +pre_force: called after pair & molecular forces are computed (optional) +post_force: called after pair & molecular forces are computed and communicated (optional) +final_integrate: called at end of each timestep (optional) +end_of_step: called at very end of timestep (optional) +write_restart: dumps fix info to restart file (optional) +restart: uses info from restart file to re-initialize the fix (optional) +grow_arrays: allocate memory for atom-based arrays used by fix (optional) +copy_arrays: copy atom info when an atom migrates to a new processor (optional) +pack_exchange: store atom's data in a buffer (optional) +unpack_exchange: retrieve atom's data from a buffer (optional) +pack_restart: store atom's data for writing to restart file (optional) +unpack_restart: retrieve atom's data from a restart file buffer (optional) +size_restart: size of atom's data (optional) +maxsize_restart: max size of atom's data (optional) +setup_pre_force_respa: same as setup_pre_force, but for rRESPA (optional) +initial_integrate_respa: same as initial_integrate, but for rRESPA (optional) +post_integrate_respa: called after the first half integration step is done in rRESPA (optional) +pre_force_respa: same as pre_force, but for rRESPA (optional) +post_force_respa: same as post_force, but for rRESPA (optional) +final_integrate_respa: same as final_integrate, but for rRESPA (optional) +min_pre_force: called after pair & molecular forces are computed in minimizer (optional) +min_post_force: called after pair & molecular forces are computed and communicated in minmizer (optional) +min_store: store extra data for linesearch based minimization on a LIFO stack (optional) +min_pushstore: push the minimization LIFO stack one element down (optional) +min_popstore: pop the minimization LIFO stack one element up (optional) +min_clearstore: clear minimization LIFO stack (optional) +min_step: reset or move forward on line search minimization (optional) +min_dof: report number of degrees of freedom {added} by this fix in minimization (optional) +max_alpha: report maximum allowed step size during linesearch minimization (optional) +pack_comm: pack a buffer to communicate a per-atom quantity (optional) +unpack_comm: unpack a buffer to communicate a per-atom quantity (optional) +pack_reverse_comm: pack a buffer to reverse communicate a per-atom quantity (optional) +unpack_reverse_comm: unpack a buffer to reverse communicate a per-atom quantity (optional) +dof: report number of degrees of freedom {removed} by this fix during MD (optional) +compute_scalar: return a global scalar property that the fix computes (optional) +compute_vector: return a component of a vector property that the fix computes (optional) +compute_array: return a component of an array property that the fix computes (optional) +deform: called when the box size is changed (optional) +reset_target: called when a change of the target temperature is requested during a run (optional) +reset_dt: is called when a change of the time step is requested during a run (optional) +modify_param: called when a fix_modify request is executed (optional) +memory_usage: report memory used by fix (optional) +thermo: compute quantities for thermodynamic output (optional) :tb(s=:) Typically, only a small fraction of these methods are defined for a particular fix. Setmask is mandatory, as it determines when the fix @@ -342,7 +382,7 @@ quantities and/or to be summed to the potential energy of the system. :line -Input script commands :link(command),h4 +10.7 Input script commands :link(mod_7),h4 New commands can be added to LAMMPS input scripts by adding new classes that have a "command" method. For example, the create_atoms, @@ -362,7 +402,7 @@ needed. :line -Kspace computations :link(kspace),h4 +10.8 Kspace computations :link(mod_8),h4 Classes that compute long-range Coulombic interactions via K-space representations (Ewald, PPPM) are derived from the KSpace class. New @@ -380,7 +420,7 @@ memory_usage: tally of memory usage :tb(s=:) :line -Minimization solvers :link(min),h4 +10.9 Minimization styles :link(mod_9),h4 Classes that perform energy minimization derived from the Min class. New styles can be created to add new minimization algorithms to @@ -397,7 +437,7 @@ memory_usage: tally of memory usage :tb(s=:) :line -Pairwise potentials :link(pair),h4 +10.10 Pairwise potentials :link(mod_10),h4 Classes that compute pairwise interactions are derived from the Pair class. In LAMMPS, pairwise calculation include manybody potentials @@ -424,7 +464,7 @@ The inner/middle/outer routines are optional. :line -Region styles :link(region),h4 +10.11 Region styles :link(mod_11),h4 Classes that define geometric regions are derived from the Region class. Regions are used elsewhere in LAMMPS to group atoms, delete @@ -440,7 +480,7 @@ match: determine whether a point is in the region :tb(s=:) :line -Thermodynamic output options :link(thermo),h4 +10.12 Thermodynamic output options :link(mod_12),h4 There is one class that computes and prints thermodynamic information to the screen and log file; see the file thermo.cpp. @@ -469,7 +509,7 @@ by adding a new keyword to the thermo command. :line -Variable options :link(variable),h4 +10.13 Variable options :link(mod_13),h4 There is one class that computes and stores "variable"_variable.html information in LAMMPS; see the file variable.cpp. The value @@ -507,21 +547,22 @@ Adding new "compute styles"_compute.html (whose calculated values can then be accessed by variables) was discussed "here"_Section_modify.html#compute on this page. +:line :line -Submitting new features to the developers to include in LAMMPS :link(package),h4 +10.14 Submitting new features for inclusion in LAMMPS :link(mod_14),h4 We encourage users to submit new features that they add to LAMMPS to "the developers"_http://lammps.sandia.gov/authors.html, especially if you think the features will be of interest to other users. If they are broadly useful we may add them as core files to LAMMPS or as part -of a "standard package"_Section_start.html#2_3. Else we will add them -as a user-contributed package or file. Examples of user packages are -in src sub-directories that start with USER. The USER-MISC package is -simply a collection of (mostly) unrelated single files, which is the -simplest way to have your contribution quickly added to the LAMMPS -distribution. You can see a list of the both standard and user -packages by typing "make package" in the LAMMPS src directory. +of a "standard package"_Section_start.html#start_3. Else we will add +them as a user-contributed package or file. Examples of user packages +are in src sub-directories that start with USER. The USER-MISC +package is simply a collection of (mostly) unrelated single files, +which is the simplest way to have your contribution quickly added to +the LAMMPS distribution. You can see a list of the both standard and +user packages by typing "make package" in the LAMMPS src directory. With user packages and files, all we are really providing (aside from the fame and fortune that accompanies having your name in the source diff --git a/doc/Section_packages.html b/doc/Section_packages.html new file mode 100644 index 0000000000..64de0748ee --- /dev/null +++ b/doc/Section_packages.html @@ -0,0 +1,404 @@ + +

          Previous Section - LAMMPS WWW Site - +LAMMPS Documentation - LAMMPS Commands - Next +Section +
          + + + + + + +
          + +

          4. Packages +

          +

          LAMMPS includes many optional packages, which are groups of files that +enable a specific set of features. For example, force fields for +molecular systems or granular systems are in packages. You can see +the list of all packages by typing "make package" from within the src +directory of the LAMMPS distribution. +

          +

          See this section of the manual for +details on how to include/exclude specific packages as part of the +LAMMPS build process, and for more details about the differences +between standard packages and user packages in LAMMPS. +

          +

          Below, the packages currently availabe in LAMMPS are listed. For +standard packages, just a one-line description is given. For user +packages, more details are provided. +

          +4.1 Standard packages
          +4.2 User packages
          + +
          + +
          + +

          4.1 Standard packages +

          +

          The current list of standard packages is as follows: +

          +
          + + + + + + + + + + + + + + + + + + + + +
          Package Description Author(s) Doc page Example Library
          ASPHERE aspherical particles - howto ellipse -
          CLASS2 class 2 force fields - pair_style lj/class2 - -
          COLLOID colloidal particles - atom_style colloid colloid -
          DIPOLE point dipole particles - pair_style dipole/cut dipole -
          GPU GPU-enabled potentials Mike Brown (ORNL) accelerate gpu lib/gpu
          GRANULAR granular systems - howto pour -
          KSPACE long-range Coulombic solvers - kspace_style peptide -
          MANYBODY many-body potentials - pair_style tersoff shear -
          MEAM modified EAM potential Greg Wagner (Sandia) pair_style meam meam lib/meam
          MC Monte Carlo options - fix gcmc - -
          MOLECULE molecular system force fields - howto peptide -
          OPT optimized pair potentials Fischer & Richie & Natoli (1) howto - -
          PERI Peridynamics models Mike Parks (Sandia) pair_style peri peri -
          POEMS coupled rigid body motion Rudra Mukherjee (JPL) fix poems rigid lib/poems
          REAX ReaxFF potential Aidan Thompson (Sandia) pair_style reax reax lib/reax
          REPLICA multi-replica methods - howto tad -
          SHOCK shock loading methods - fix msst - -
          SRD stochastic rotation dynamics - fix srd srd -
          XTC dumps in XTC format - dump - -
          +
          + +

          The "Authors" column lists a name(s) if a specific person is +responible for creating and maintaining the package. +

          +

          (1) The OPT package was created by James Fischer (High Performance +Technologies), David Richie, and Vincent Natoli (Stone Ridge +Technolgy). +

          +

          The "Doc page" column links to either a portion of the +Section_howto of the manual, or an input script +command implemented as part of the package. +

          +

          The "Example" column is a sub-directory in the examples directory of +the distribution which has an input script that uses the package. +E.g. "peptide" refers to the examples/peptide directory. +

          +

          The "Library" column lists an external library which must be built first and which LAMMPS links to when it is built. These are in the lib directory of the distribution. This section of the manual gives details on the 2-step build process with external libraries. +

          +
          + +
          + +

          4.2 User packages +

          +

          The current list of user-contributed packages is as follows: +

          +
          + + + + + + + + + + + +
          Package Description Author(s) Doc page Example Pic/movie Library
          USER-MISC single-file contributions USER-MISC/README - - - -
          USER-ATC atom-to-continuum coupling Jones & Templeton & Zimmerman (2) fix atc USER/atc atc lib/atc
          USER-AWPMD wave-packet MD Ilya Valuev (JIHT) pair_style awpmd/cut USER/awpmd - lib/awpmd
          USER-CG-CMM coarse-graining model Axel Kohlmeyer (Temple U) pair_style cg/cmm USER/cg-cmm cg -
          USER-CUDA NVIDIA GPU styles Christian Trott (U Tech Ilmenau) accelerate USER/cuda - lib/cuda
          USER-EFF electron force field Andres Jaramillo-Botero (Caltech) pair_style eff/cut USER/eff eff -
          USER-EWALDN Ewald for 1/R^n Pieter in' t Veld (BASF) kspace_style - - -
          USER-OMP OpenMP threaded styles Axel Kohlmeyer (Temple U) accelerate - - -
          USER-REAXC C version of ReaxFF Metin Aktulga (LBNL) pair_style reaxc reax - -
          USER-SPH smoothed particle hydrodynamics Georg Ganzenmuller (EMI) SPH_LAMMPS_userguide.pdf USER/sph sph -
          +
          + + + + + + + + + +

          The "Authors" column lists a name(s) if a specific person is +responible for creating and maintaining the package. +

          +

          (2) The ATC package was created by Reese Jones, Jeremy Templeton, and Jon Zimmerman (Sandia). +

          +

          The "Doc page" column links to either a portion of the +Section_howto of the manual, or an input script +command implemented as part of the package, or to additional +documentation provided witht he package. +

          +

          The "Example" column is a sub-directory in the examples directory of +the distribution which has an input script that uses the package. +E.g. "peptide" refers to the examples/peptide directory. USER/cuda +refers to the examples/USER/cuda directory. +

          +

          The "Library" column lists an external library which must be built +first and which LAMMPS links to when it is built. These are in the +lib directory of the distribution. This +section of the manual gives details on +the 2-step build process with external libraries. +

          +

          More details on each package, from the USER-blah/README file +is given below. +

          +
          + +

          USER-MISC package +

          +

          The files in this package are a potpourri of (mostly) unrelated +features contributed to LAMMPS by users. Each feature is a single +pair of files (*.cpp and *.h). +

          +

          More information about each feature can be found by reading its doc +page in the LAMMPS doc directory. The doc page which lists all LAMMPS +input script commands is as follows: +

          +

          Section_commands +

          +

          User-contributed features are listed at the bottom of the fix, +compute, pair, etc sections. +

          +

          The list of features and author of each is given in the +src/USER-MISC/README file. +

          +

          You should contact the author directly if you have specific questions +about the feature or its coding. +

          +
          + +

          USER-ATC package +

          +

          This package implements a "fix atc" command which can be used in a +LAMMPS input script. This fix can be employed to either do concurrent +coupling of MD with FE-based physics surrogates or on-the-fly +post-processing of atomic information to continuum fields. +

          +

          See the doc page for the fix atc command to get started. At the +bottom of the doc page are many links to additional documentation +contained in the doc/USER/atc directory. +

          +

          There are example scripts for using this package in examples/USER/atc. +

          +

          This package uses an external library in lib/atc which must be +compiled before making LAMMPS. See the lib/atc/README file and the +LAMMPS manual for information on building LAMMPS with external +libraries. +

          +

          The primary people who created this package are Reese Jones (rjones at +sandia.gov), Jeremy Templeton (jatempl at sandia.gov) and Jon +Zimmerman (jzimmer at sandia.gov) at Sandia. Contact them directly if +you have questions. +

          +
          + +

          USER-AWPMD package +

          +

          This package contains a LAMMPS implementation of the Antisymmetrized +Wave Packet Molecular Dynamics (AWPMD) method. +

          +

          See the doc page for the pair_style awpmd/cut command to get started. +

          +

          There are example scripts for using this package in examples/USER/awpmd. +

          +

          This package uses an external library in lib/awpmd which must be +compiled before making LAMMPS. See the lib/awpmd/README file and the +LAMMPS manual for information on building LAMMPS with external +libraries. +

          +

          The person who created this package is Ilya Valuev at the JIHT in +Russia (valuev at physik.hu-berlin.de). Contact him directly if you +have questions. +

          +
          + +

          USER-CG-CMM package +

          +

          This package implements 4 commands which can be used in a LAMMPS input +script: +

          +
          • pair_style cg/cmm +
          • pair_style cg/cmm/coul/cut +
          • pair_style cg/cmm/coul/long +
          • angle_style cg/cmm +
          +

          These styles allow coarse grained MD simulations with the +parametrization of Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007) +(cg/cmm), with extensions to simulate ionic liquids, electrolytes, +lipids and charged amino acids (to be published soon). +

          +

          See the doc pages for these commands for details. +

          +

          There are example scripts for using this package in +examples/USER/cg-cmm. +

          +

          The current version of this package should be considered beta +quality. The CG potentials work correctly and well, but there will be +optimizations, cleanups and additional tools to aid in setting up and +analyzing simulations with this package added in the next months. +

          +

          The person who created this package is Axel Kohlmeyer at Temple U +(akohlmey at gmail.com). Contact him directly if you have questions. +

          +
          + +

          USER-CUDA package +

          +

          This package provides acceleration of various LAMMPS pair styles, fix +styles, compute styles, and long-range Coulombics via PPPM for NVIDIA +GPUs. +

          +

          See this section of the manual to get started: +

          +

          Section_accelerate +

          +

          There are example scripts for using this package in +examples/USER/cuda. +

          +

          This package uses an external library in lib/cuda which must be +compiled before making LAMMPS. See the lib/cuda/README file and the +LAMMPS manual for information on building LAMMPS with external +libraries. +

          +

          The person who created this package is Christian Trott at the +University of Technology Ilmenau, Germany (christian.trott at +tu-ilmenau.de). Contact him directly if you have questions. +

          +
          + +

          USER-EFF package +

          +

          This package contains a LAMMPS implementation of the electron Force +Field (eFF) currently under development at Caltech, as described in +A. Jaramillo-Botero, J. Su, Q. An, and W.A. Goddard III, JCC, +2010. The eFF potential was first introduced by Su and Goddard, in +2007. +

          +

          eFF can be viewed as an approximation to QM wave packet dynamics and +Fermionic molecular dynamics, combining the ability of electronic +structure methods to describe atomic structure, bonding, and chemistry +in materials, and of plasma methods to describe nonequilibrium +dynamics of large systems with a large number of highly excited +electrons. We classify it as a mixed QM-classical approach rather than +a conventional force field method, which introduces QM-based terms (a +spin-dependent repulsion term to account for the Pauli exclusion +principle and the electron wavefunction kinetic energy associated with +the Heisenberg principle) that reduce, along with classical +electrostatic terms between nuclei and electrons, to the sum of a set +of effective pairwise potentials. This makes eFF uniquely suited to +simulate materials over a wide range of temperatures and pressures +where electronically excited and ionized states of matter can occur +and coexist. +

          +

          The necessary customizations to the LAMMPS core are in place to +enable the correct handling of explicit electron properties during +minimization and dynamics. +

          +

          See the doc page for the pair_style eff/cut command to get started. +

          +

          There are example scripts for using this package in +examples/USER/eff. +

          +

          There are auxiliary tools for using this package in tools/eff. +

          +

          The person who created this package is Andres Jaramillo-Botero at +CalTech (ajaramil at wag.caltech.edu). Contact him directly if you +have questions. +

          +
          + +

          USER-EWALDN package +

          +

          This package implements 3 commands which can be used in a LAMMPS input +script: pair_style lj/coul, pair_style buck/coul, and kspace_style +ewald/n. +

          +

          The "kspace_style ewald/n" command is similar to standard Ewald for +charges, but also enables the Lennard-Jones interaction, or any 1/r^N +interaction to be of infinite extent, instead of being cutoff. LAMMPS +pair potentials for long-range Coulombic interactions, such as +lj/cut/coul/long can be used with ewald/n. The two new pair_style +commands provide the modifications for the short-range LJ and +Buckingham interactions that can also be used with ewald/n. +

          +

          Another advantage of kspace_style ewald/n is that it can be used with +non-orthogonal (triclinic symmetry) simulation boxes, either for just +long-range Coulombic interactions, or for both Coulombic and 1/r^N LJ +or Buckingham, which is not currently possible for other kspace styles +such as PPPM and ewald. +

          +

          See the doc pages for these commands for details. +

          +

          The person who created these files is Pieter in' t Veld while at +Sandia. He is now at BASF (pieter.intveld at basf.com). Contact him +directly if you have questions. +

          +
          + +

          USER-OMP package +

          +

          This package provides OpenMP multi-threading support and +other optimizations of various LAMMPS pair styles, dihedral +styles, and fix styles. +

          +

          See this section of the manual to get started: +

          +

          Section_accelerate +

          +

          The person who created this package is Axel Kohlmeyer at Temple U +(akohlmey at gmail.com). Contact him directly if you have questions. +

          +
          + +

          USER-REAXC package +

          +

          This package contains a implementation for LAMMPS of the ReaxFF force +field. ReaxFF uses distance-dependent bond-order functions to +represent the contributions of chemical bonding to the potential +energy. It was originally developed by Adri van Duin and the Goddard +group at CalTech. +

          +

          The USER-REAXC version of ReaxFF (pair_style reax/c), implemented in +C, should give identical or very similar results to pair_style reax, +which is a ReaxFF implementation on top of a Fortran library, a +version of which library was originally authored by Adri van Duin. +

          +

          The reax/c version should be somewhat faster and more scalable, +particularly with respect to the charge equilibration calculation. It +should also be easier to build and use since there are no complicating +issues with Fortran memory allocation or linking to a Fortran library. +

          +

          For technical details about this implemention of ReaxFF, see +this paper: +

          +

          Parallel and Scalable Reactive Molecular Dynamics: Numerical Methods +and Algorithmic Techniques, H. M. Aktulga, J. C. Fogarty, +S. A. Pandit, A. Y. Grama, Parallel Computing, in press (2011). +

          +

          See the doc page for the pair_style reax/c command for details +of how to use it in LAMMPS. +

          +

          The person who created this package is Hasan Metin Aktulga (hmaktulga +at lbl.gov), while at Purdue University. Contact him directly, or +Aidan Thompson at Sandia (athomps at sandia.gov), if you have +questions. +

          +
          + +

          USER-SPH package +

          +

          This package implements smoothed particle hydrodynamics (SPH) in +LAMMPS. Currently, the package has the following features: +

          +

          * Tait, ideal gas, Lennard-Jones equation of states, full support for + complete (i.e. internal-energy dependent) equations of state +* plain or Monaghans XSPH integration of the equations of motion +* density continuity or density summation to propagate the density field +* commands to set internal energy and density of particles from the + input script +* output commands to access internal energy and density for dumping and + thermo output +

          +

          See the file doc/USER/sph/SPH_LAMMPS_userguide.pdf to get started. +

          +

          There are example scripts for using this package in examples/USER/sph. +

          +

          The person who created this package is Georg Ganzenmuller at the +Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in +Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if +you have questions. +

          + diff --git a/doc/Section_packages.txt b/doc/Section_packages.txt new file mode 100644 index 0000000000..928820c7df --- /dev/null +++ b/doc/Section_packages.txt @@ -0,0 +1,390 @@ +"Previous Section"_Section_commands.html - "LAMMPS WWW Site"_lws - +"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next +Section"_Section_accelerate.html :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +4. Packages :h3 + +LAMMPS includes many optional packages, which are groups of files that +enable a specific set of features. For example, force fields for +molecular systems or granular systems are in packages. You can see +the list of all packages by typing "make package" from within the src +directory of the LAMMPS distribution. + +See "this section"_Section_start.html#start_3 of the manual for +details on how to include/exclude specific packages as part of the +LAMMPS build process, and for more details about the differences +between standard packages and user packages in LAMMPS. + +Below, the packages currently availabe in LAMMPS are listed. For +standard packages, just a one-line description is given. For user +packages, more details are provided. + +4.1 "Standard packages"_#pkg_1 +4.2 "User packages"_#pkg_2 :all(b) + +:line +:line + +4.1 Standard packages :h4,link(pkg_1) + +The current list of standard packages is as follows: + +Package, Description, Author(s), Doc page, Example, Library +ASPHERE, aspherical particles, -, "howto"_Section_howto.html#howto_14, ellipse, - +CLASS2, class 2 force fields, -, "pair_style lj/class2"_pair_class2.html, -, - +COLLOID, colloidal particles, -, "atom_style colloid"_atom_style.html, colloid, - +DIPOLE, point dipole particles, -, "pair_style dipole/cut"_pair_dipole.html, dipole, - +GPU, GPU-enabled potentials, Mike Brown (ORNL), "accelerate"_Section_accelerate.html#acc_3, gpu, lib/gpu +GRANULAR, granular systems, -, "howto"_Section_howto.html#howto_6, pour, - +KSPACE, long-range Coulombic solvers, -, "kspace_style"_kspace_style.html, peptide, - +MANYBODY, many-body potentials, -, "pair_style tersoff"_pair_tersoff.html, shear, - +MEAM, modified EAM potential, Greg Wagner (Sandia), "pair_style meam"_pair_meam.html, meam, lib/meam +MC, Monte Carlo options, -, "fix gcmc"_fix_gcmc.html, -, - +MOLECULE, molecular system force fields, -, "howto"_Section_howto.html#howto_3, peptide, - +OPT, optimized pair potentials, Fischer & Richie & Natoli (1), "howto"_Section_accelerate.html#acc_1, -, - +PERI, Peridynamics models, Mike Parks (Sandia), "pair_style peri"_pair_peri.html, peri, - +POEMS, coupled rigid body motion, Rudra Mukherjee (JPL), "fix poems"_fix_poems.html, rigid, lib/poems +REAX, ReaxFF potential, Aidan Thompson (Sandia), "pair_style reax"_pair_reax.html, reax, lib/reax +REPLICA, multi-replica methods, -, "howto"_Section_howto.html#howto_5, tad, - +SHOCK, shock loading methods, -, "fix msst"_fix_msst.html, -, - +SRD, stochastic rotation dynamics, -, "fix srd"_fix_srd.html, srd, - +XTC, dumps in XTC format, -, "dump"_dump.html, -, - +:tb(ea=c) + +The "Authors" column lists a name(s) if a specific person is +responible for creating and maintaining the package. + +(1) The OPT package was created by James Fischer (High Performance +Technologies), David Richie, and Vincent Natoli (Stone Ridge +Technolgy). + +The "Doc page" column links to either a portion of the +"Section_howto"_Section_howto.html of the manual, or an input script +command implemented as part of the package. + +The "Example" column is a sub-directory in the examples directory of +the distribution which has an input script that uses the package. +E.g. "peptide" refers to the examples/peptide directory. + +The "Library" column lists an external library which must be built first and which LAMMPS links to when it is built. These are in the lib directory of the distribution. "This section"_Section_start.html#start_3_3 of the manual gives details on the 2-step build process with external libraries. + +:line +:line + +4.2 User packages :h4,link(pkg_2) + +The current list of user-contributed packages is as follows: + +Package, Description, Author(s), Doc page, Example, Pic/movie, Library +USER-MISC, single-file contributions, USER-MISC/README, -, -, -, - +USER-ATC, atom-to-continuum coupling, Jones & Templeton & Zimmerman (2), "fix atc"_fix_atc.html, USER/atc, "atc"_atc, lib/atc +USER-AWPMD, wave-packet MD, Ilya Valuev (JIHT), "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, -, lib/awpmd +USER-CG-CMM, coarse-graining model, Axel Kohlmeyer (Temple U), "pair_style cg/cmm"_pair_cmm.html, USER/cg-cmm, "cg"_cg, - +USER-CUDA, NVIDIA GPU styles, Christian Trott (U Tech Ilmenau), "accelerate"_Section_accelerate.html#acc_4, USER/cuda, -, lib/cuda +USER-EFF, electron force field, Andres Jaramillo-Botero (Caltech), "pair_style eff/cut"_pair_eff.html, USER/eff, "eff"_eff, - +USER-EWALDN, Ewald for 1/R^n, Pieter in' t Veld (BASF), "kspace_style"_kspace_style.html, -, -, - +USER-OMP, OpenMP threaded styles, Axel Kohlmeyer (Temple U), "accelerate"_Section_accelerate.html#acc_2, -, -, - +USER-REAXC, C version of ReaxFF, Metin Aktulga (LBNL), "pair_style reaxc"_pair_reax_c.html, reax, -, - +USER-SPH, smoothed particle hydrodynamics, Georg Ganzenmuller (EMI), "SPH_LAMMPS_userguide.pdf"_USER/sph/SPH_LAMMPS_userguide.pdf, USER/sph, "sph"_sph, - +:tb(ea=c) + +:link(atc,http://lammps.sandia.gov/pictures.html#atc) +:link(cg,http://lammps.sandia.gov/pictures.html#cg) +:link(eff,http://lammps.sandia.gov/movies.html#eff) +:link(sph,http://lammps.sandia.gov/movies.html#sph) + +The "Authors" column lists a name(s) if a specific person is +responible for creating and maintaining the package. + +(2) The ATC package was created by Reese Jones, Jeremy Templeton, and Jon Zimmerman (Sandia). + +The "Doc page" column links to either a portion of the +"Section_howto"_Section_howto.html of the manual, or an input script +command implemented as part of the package, or to additional +documentation provided witht he package. + +The "Example" column is a sub-directory in the examples directory of +the distribution which has an input script that uses the package. +E.g. "peptide" refers to the examples/peptide directory. USER/cuda +refers to the examples/USER/cuda directory. + +The "Library" column lists an external library which must be built +first and which LAMMPS links to when it is built. These are in the +lib directory of the distribution. "This +section"_Section_start.html#start_3_3 of the manual gives details on +the 2-step build process with external libraries. + +More details on each package, from the USER-blah/README file +is given below. + +:line + +USER-MISC package :h4 + +The files in this package are a potpourri of (mostly) unrelated +features contributed to LAMMPS by users. Each feature is a single +pair of files (*.cpp and *.h). + +More information about each feature can be found by reading its doc +page in the LAMMPS doc directory. The doc page which lists all LAMMPS +input script commands is as follows: + +"Section_commands"_Section_commands.html#cmd_5 + +User-contributed features are listed at the bottom of the fix, +compute, pair, etc sections. + +The list of features and author of each is given in the +src/USER-MISC/README file. + +You should contact the author directly if you have specific questions +about the feature or its coding. + +:line + +USER-ATC package :h4 + +This package implements a "fix atc" command which can be used in a +LAMMPS input script. This fix can be employed to either do concurrent +coupling of MD with FE-based physics surrogates or on-the-fly +post-processing of atomic information to continuum fields. + +See the doc page for the fix atc command to get started. At the +bottom of the doc page are many links to additional documentation +contained in the doc/USER/atc directory. + +There are example scripts for using this package in examples/USER/atc. + +This package uses an external library in lib/atc which must be +compiled before making LAMMPS. See the lib/atc/README file and the +LAMMPS manual for information on building LAMMPS with external +libraries. + +The primary people who created this package are Reese Jones (rjones at +sandia.gov), Jeremy Templeton (jatempl at sandia.gov) and Jon +Zimmerman (jzimmer at sandia.gov) at Sandia. Contact them directly if +you have questions. + +:line + +USER-AWPMD package :h4 + +This package contains a LAMMPS implementation of the Antisymmetrized +Wave Packet Molecular Dynamics (AWPMD) method. + +See the doc page for the pair_style awpmd/cut command to get started. + +There are example scripts for using this package in examples/USER/awpmd. + +This package uses an external library in lib/awpmd which must be +compiled before making LAMMPS. See the lib/awpmd/README file and the +LAMMPS manual for information on building LAMMPS with external +libraries. + +The person who created this package is Ilya Valuev at the JIHT in +Russia (valuev at physik.hu-berlin.de). Contact him directly if you +have questions. + +:line + +USER-CG-CMM package :h4 + +This package implements 4 commands which can be used in a LAMMPS input +script: + +pair_style cg/cmm +pair_style cg/cmm/coul/cut +pair_style cg/cmm/coul/long +angle_style cg/cmm :ul + +These styles allow coarse grained MD simulations with the +parametrization of Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007) +(cg/cmm), with extensions to simulate ionic liquids, electrolytes, +lipids and charged amino acids (to be published soon). + +See the doc pages for these commands for details. + +There are example scripts for using this package in +examples/USER/cg-cmm. + +The current version of this package should be considered beta +quality. The CG potentials work correctly and well, but there will be +optimizations, cleanups and additional tools to aid in setting up and +analyzing simulations with this package added in the next months. + +The person who created this package is Axel Kohlmeyer at Temple U +(akohlmey at gmail.com). Contact him directly if you have questions. + +:line + +USER-CUDA package :h4 + +This package provides acceleration of various LAMMPS pair styles, fix +styles, compute styles, and long-range Coulombics via PPPM for NVIDIA +GPUs. + +See this section of the manual to get started: + +"Section_accelerate"_Section_accelerate.html#acc_4 + +There are example scripts for using this package in +examples/USER/cuda. + +This package uses an external library in lib/cuda which must be +compiled before making LAMMPS. See the lib/cuda/README file and the +LAMMPS manual for information on building LAMMPS with external +libraries. + +The person who created this package is Christian Trott at the +University of Technology Ilmenau, Germany (christian.trott at +tu-ilmenau.de). Contact him directly if you have questions. + +:line + +USER-EFF package :h4 + +This package contains a LAMMPS implementation of the electron Force +Field (eFF) currently under development at Caltech, as described in +A. Jaramillo-Botero, J. Su, Q. An, and W.A. Goddard III, JCC, +2010. The eFF potential was first introduced by Su and Goddard, in +2007. + +eFF can be viewed as an approximation to QM wave packet dynamics and +Fermionic molecular dynamics, combining the ability of electronic +structure methods to describe atomic structure, bonding, and chemistry +in materials, and of plasma methods to describe nonequilibrium +dynamics of large systems with a large number of highly excited +electrons. We classify it as a mixed QM-classical approach rather than +a conventional force field method, which introduces QM-based terms (a +spin-dependent repulsion term to account for the Pauli exclusion +principle and the electron wavefunction kinetic energy associated with +the Heisenberg principle) that reduce, along with classical +electrostatic terms between nuclei and electrons, to the sum of a set +of effective pairwise potentials. This makes eFF uniquely suited to +simulate materials over a wide range of temperatures and pressures +where electronically excited and ionized states of matter can occur +and coexist. + +The necessary customizations to the LAMMPS core are in place to +enable the correct handling of explicit electron properties during +minimization and dynamics. + +See the doc page for the pair_style eff/cut command to get started. + +There are example scripts for using this package in +examples/USER/eff. + +There are auxiliary tools for using this package in tools/eff. + +The person who created this package is Andres Jaramillo-Botero at +CalTech (ajaramil at wag.caltech.edu). Contact him directly if you +have questions. + +:line + +USER-EWALDN package :h4 + +This package implements 3 commands which can be used in a LAMMPS input +script: pair_style lj/coul, pair_style buck/coul, and kspace_style +ewald/n. + +The "kspace_style ewald/n" command is similar to standard Ewald for +charges, but also enables the Lennard-Jones interaction, or any 1/r^N +interaction to be of infinite extent, instead of being cutoff. LAMMPS +pair potentials for long-range Coulombic interactions, such as +lj/cut/coul/long can be used with ewald/n. The two new pair_style +commands provide the modifications for the short-range LJ and +Buckingham interactions that can also be used with ewald/n. + +Another advantage of kspace_style ewald/n is that it can be used with +non-orthogonal (triclinic symmetry) simulation boxes, either for just +long-range Coulombic interactions, or for both Coulombic and 1/r^N LJ +or Buckingham, which is not currently possible for other kspace styles +such as PPPM and ewald. + +See the doc pages for these commands for details. + +The person who created these files is Pieter in' t Veld while at +Sandia. He is now at BASF (pieter.intveld at basf.com). Contact him +directly if you have questions. + +:line + +USER-OMP package :h4 + +This package provides OpenMP multi-threading support and +other optimizations of various LAMMPS pair styles, dihedral +styles, and fix styles. + +See this section of the manual to get started: + +"Section_accelerate"_Section_accelerate.html#acc_2 + +The person who created this package is Axel Kohlmeyer at Temple U +(akohlmey at gmail.com). Contact him directly if you have questions. + +:line + +USER-REAXC package :h4 + +This package contains a implementation for LAMMPS of the ReaxFF force +field. ReaxFF uses distance-dependent bond-order functions to +represent the contributions of chemical bonding to the potential +energy. It was originally developed by Adri van Duin and the Goddard +group at CalTech. + +The USER-REAXC version of ReaxFF (pair_style reax/c), implemented in +C, should give identical or very similar results to pair_style reax, +which is a ReaxFF implementation on top of a Fortran library, a +version of which library was originally authored by Adri van Duin. + +The reax/c version should be somewhat faster and more scalable, +particularly with respect to the charge equilibration calculation. It +should also be easier to build and use since there are no complicating +issues with Fortran memory allocation or linking to a Fortran library. + +For technical details about this implemention of ReaxFF, see +this paper: + +Parallel and Scalable Reactive Molecular Dynamics: Numerical Methods +and Algorithmic Techniques, H. M. Aktulga, J. C. Fogarty, +S. A. Pandit, A. Y. Grama, Parallel Computing, in press (2011). + +See the doc page for the pair_style reax/c command for details +of how to use it in LAMMPS. + +The person who created this package is Hasan Metin Aktulga (hmaktulga +at lbl.gov), while at Purdue University. Contact him directly, or +Aidan Thompson at Sandia (athomps at sandia.gov), if you have +questions. + +:line + +USER-SPH package :h4 + +This package implements smoothed particle hydrodynamics (SPH) in +LAMMPS. Currently, the package has the following features: + +* Tait, ideal gas, Lennard-Jones equation of states, full support for + complete (i.e. internal-energy dependent) equations of state +* plain or Monaghans XSPH integration of the equations of motion +* density continuity or density summation to propagate the density field +* commands to set internal energy and density of particles from the + input script +* output commands to access internal energy and density for dumping and + thermo output + +See the file doc/USER/sph/SPH_LAMMPS_userguide.pdf to get started. + +There are example scripts for using this package in examples/USER/sph. + +The person who created this package is Georg Ganzenmuller at the +Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in +Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if +you have questions. diff --git a/doc/Section_perf.html b/doc/Section_perf.html index bf95445aa0..330d99407a 100644 --- a/doc/Section_perf.html +++ b/doc/Section_perf.html @@ -9,7 +9,7 @@
          -

          6. Performance & scalability +

          8. Performance & scalability

          LAMMPS performance on several prototypical benchmarks and machines is discussed on the Benchmarks page of the LAMMPS WWW Site where diff --git a/doc/Section_perf.txt b/doc/Section_perf.txt index 8a20a8209b..896d522cac 100644 --- a/doc/Section_perf.txt +++ b/doc/Section_perf.txt @@ -6,7 +6,7 @@ :line -6. Performance & scalability :h3 +8. Performance & scalability :h3 LAMMPS performance on several prototypical benchmarks and machines is discussed on the Benchmarks page of the "LAMMPS WWW Site"_lws where diff --git a/doc/Section_python.html b/doc/Section_python.html index ca2e40ee98..92de682b05 100644 --- a/doc/Section_python.html +++ b/doc/Section_python.html @@ -1,5 +1,5 @@ -

          Previous Section - LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands - Next Section +
          Previous Section - LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands - Next Section
          @@ -9,7 +9,7 @@
          -

          9. Python interface to LAMMPS +

          11. Python interface to LAMMPS

          The LAMMPS distribution includes some Python code in its python directory which wraps the library interface to LAMMPS. This makes it @@ -20,16 +20,17 @@ either from a Python script or interactively from a Python prompt.

          Python is a powerful scripting and programming language which can be used to wrap software like LAMMPS and other packages. It can be used to glue multiple pieces of software -together, e.g. to run a coupled or multiscale model. See this +together, e.g. to run a coupled or multiscale model. See this section of the manual and the couple directory of the distribution for more ideas about coupling LAMMPS to -other codes. See this section about how to -build LAMMPS as a library, and this section -for a description of the library interface provided in src/library.cpp -and src/library.h and how to extend it for your needs. As described -below, that interface is what is exposed to Python. It is designed to -be easy to add functions to. This has the effect of extending the -Python inteface as well. See details below. +other codes. See this section about how +to build LAMMPS as a library, and this +section for a description of the library +interface provided in src/library.cpp and src/library.h and how to +extend it for your needs. As described below, that interface is what +is exposed to Python. It is designed to be easy to add functions to. +This has the effect of extending the Python inteface as well. See +details below.

          By using the Python interface LAMMPS can also be coupled with a GUI or visualization tools that display graphs or animations in real time as @@ -88,13 +89,13 @@ setup discussion. The next to last sub-section describes the Python syntax used to invoke LAMMPS. The last sub-section describes example Python scripts included in the python directory.

          -
          • Extending Python with a serial version of LAMMPS -
          • Creating a shared MPI library -
          • Extending Python with a parallel version of LAMMPS -
          • Extending Python with MPI -
          • Testing the Python-LAMMPS interface -
          • Using LAMMPS from Python -
          • Example Python scripts that use LAMMPS +

            Before proceeding, there are 2 items to note.

            @@ -116,7 +117,7 @@ code, you are not building shared versions of these libraries.

            The discussion below describes how to create a shared MPI library. I suggest you start by configuing LAMMPS without packages installed that -require any libraries besides MPI. See this +require any libraries besides MPI. See this section of the manual for a discussion of LAMMPS pacakges. E.g. do not use the KSPACE, GPU, MEAM, POEMS, or REAX packages. @@ -134,7 +135,7 @@ LAMMPS wrapper.


            -

            Extending Python with a serial version of LAMMPS +

            11.1 Extending Python with a serial version of LAMMPS

            From the python directory in the LAMMPS distribution, type

            @@ -164,7 +165,7 @@ this, where you should replace "foo" with your directory of choice.


            -

            Creating a shared MPI library +

            11.2 Creating a shared MPI library

            A shared library is one that is dynamically loadable, which is what Python requires. On Linux this is a library file that ends in ".so", @@ -195,7 +196,7 @@ stand-alone code.


            -

            Extending Python with a parallel version of LAMMPS +

            11.3 Extending Python with a parallel version of LAMMPS

            From the python directory, type

            @@ -233,7 +234,7 @@ will be put in the appropriate directory.


            -

            Extending Python with MPI +

            11.4 Extending Python with MPI

            There are several Python packages available that purport to wrap MPI as a library and allow MPI functions to be called from Python. @@ -308,7 +309,7 @@ print "Proc %d out of %d procs" % (pypar.rank(),pypar.size())


            -

            Testing the Python-LAMMPS interface +

            11.5 Testing the Python-LAMMPS interface

            Before using LAMMPS in a Python program, one more step is needed. The interface to LAMMPS is via the Python ctypes package, which loads the @@ -402,7 +403,7 @@ Python on a single processor, not in parallel.


            -

            Using LAMMPS from Python +

            11.6 Using LAMMPS from Python

            The Python interface to LAMMPS consists of a Python "lammps" module, the source code for which is in python/lammps.py, which creates a @@ -498,7 +499,7 @@ subscripting. The one exception is that for a fix that calculates a global vector or array, a single double value from the vector or array is returned, indexed by I (vector) or I and J (array). I,J are zero-based indices. The I,J arguments can be left out if not needed. -See this section of the manual for a +See this section of the manual for a discussion of global, per-atom, and local data, and of scalar, vector, and array data types. See the doc pages for individual computes and fixes for a description of what @@ -578,7 +579,7 @@ following steps: src/library.h.

          • Verify the new function is syntactically correct by building LAMMPS as -a library - see this section of the +a library - see this section of the manual.
          • Add a wrapper method in the Python LAMMPS module to python/lammps.py @@ -594,7 +595,7 @@ Python script. Isn't ctypes amazing?
            -

            Example Python scripts that use LAMMPS +

            11.7 Example Python scripts that use LAMMPS

            These are the Python scripts included as demos in the python/examples directory of the LAMMPS distribution, to illustrate the kinds of diff --git a/doc/Section_python.txt b/doc/Section_python.txt index f914f9b451..dbf4700819 100644 --- a/doc/Section_python.txt +++ b/doc/Section_python.txt @@ -1,4 +1,4 @@ -"Previous Section"_Section_modify.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_accelerate.html :c +"Previous Section"_Section_modify.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_errors.html :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) @@ -6,7 +6,7 @@ :line -9. Python interface to LAMMPS :h3 +11. Python interface to LAMMPS :h3 The LAMMPS distribution includes some Python code in its python directory which wraps the library interface to LAMMPS. This makes it @@ -18,15 +18,16 @@ either from a Python script or interactively from a Python prompt. language which can be used to wrap software like LAMMPS and other packages. It can be used to glue multiple pieces of software together, e.g. to run a coupled or multiscale model. See "this -section"_Section_howto.html#4_10 of the manual and the couple +section"_Section_howto.html#howto_10 of the manual and the couple directory of the distribution for more ideas about coupling LAMMPS to -other codes. See "this section"_Section_start.html#2_4 about how to -build LAMMPS as a library, and "this section"_Section_howto.html#4_19 -for a description of the library interface provided in src/library.cpp -and src/library.h and how to extend it for your needs. As described -below, that interface is what is exposed to Python. It is designed to -be easy to add functions to. This has the effect of extending the -Python inteface as well. See details below. +other codes. See "this section"_Section_start.html#start_4 about how +to build LAMMPS as a library, and "this +section"_Section_howto.html#howto_19 for a description of the library +interface provided in src/library.cpp and src/library.h and how to +extend it for your needs. As described below, that interface is what +is exposed to Python. It is designed to be easy to add functions to. +This has the effect of extending the Python inteface as well. See +details below. By using the Python interface LAMMPS can also be coupled with a GUI or visualization tools that display graphs or animations in real time as @@ -85,13 +86,13 @@ setup discussion. The next to last sub-section describes the Python syntax used to invoke LAMMPS. The last sub-section describes example Python scripts included in the python directory. -"Extending Python with a serial version of LAMMPS"_#9_1 -"Creating a shared MPI library"_#9_2 -"Extending Python with a parallel version of LAMMPS"_#9_3 -"Extending Python with MPI"_#9_4 -"Testing the Python-LAMMPS interface"_#9_5 -"Using LAMMPS from Python"_#9_6 -"Example Python scripts that use LAMMPS"_#9_7 :ul +11.1 "Extending Python with a serial version of LAMMPS"_#py_1 +11.2 "Creating a shared MPI library"_#py_2 +11.3 "Extending Python with a parallel version of LAMMPS"_#py_3 +11.4 "Extending Python with MPI"_#py_4 +11.5 "Testing the Python-LAMMPS interface"_#py_5 +11.6 "Using LAMMPS from Python"_#py_6 +11.7 "Example Python scripts that use LAMMPS"_#py_7 :ul Before proceeding, there are 2 items to note. @@ -114,7 +115,7 @@ code, you are not building shared versions of these libraries. The discussion below describes how to create a shared MPI library. I suggest you start by configuing LAMMPS without packages installed that require any libraries besides MPI. See "this -section"_Section_start.html#2_3 of the manual for a discussion of +section"_Section_start.html#start_3 of the manual for a discussion of LAMMPS pacakges. E.g. do not use the KSPACE, GPU, MEAM, POEMS, or REAX packages. @@ -130,7 +131,7 @@ LAMMPS wrapper. :line :line -Extending Python with a serial version of LAMMPS :link(9_1),h4 +11.1 Extending Python with a serial version of LAMMPS :link(py_1),h4 From the python directory in the LAMMPS distribution, type @@ -160,7 +161,7 @@ If these commands are successful, a {lammps.py} and :line -Creating a shared MPI library :link(9_2),h4 +11.2 Creating a shared MPI library :link(py_2),h4 A shared library is one that is dynamically loadable, which is what Python requires. On Linux this is a library file that ends in ".so", @@ -191,7 +192,7 @@ stand-alone code. :line -Extending Python with a parallel version of LAMMPS :link(9_3),h4 +11.3 Extending Python with a parallel version of LAMMPS :link(py_3),h4 From the python directory, type @@ -229,7 +230,7 @@ will be put in the appropriate directory. :line -Extending Python with MPI :link(9_4),h4 +11.4 Extending Python with MPI :link(py_4),h4 There are several Python packages available that purport to wrap MPI as a library and allow MPI functions to be called from Python. @@ -304,7 +305,7 @@ and see one line of output for each processor you ran on. :line -Testing the Python-LAMMPS interface :link(9_5),h4 +11.5 Testing the Python-LAMMPS interface :link(py_5),h4 Before using LAMMPS in a Python program, one more step is needed. The interface to LAMMPS is via the Python ctypes package, which loads the @@ -397,7 +398,7 @@ Python on a single processor, not in parallel. :line :line -Using LAMMPS from Python :link(9_6),h4 +11.6 Using LAMMPS from Python :link(py_6),h4 The Python interface to LAMMPS consists of a Python "lammps" module, the source code for which is in python/lammps.py, which creates a @@ -493,7 +494,7 @@ subscripting. The one exception is that for a fix that calculates a global vector or array, a single double value from the vector or array is returned, indexed by I (vector) or I and J (array). I,J are zero-based indices. The I,J arguments can be left out if not needed. -See "this section"_Section_howto.html#4_15 of the manual for a +See "this section"_Section_howto.html#howto_15 of the manual for a discussion of global, per-atom, and local data, and of scalar, vector, and array data types. See the doc pages for individual "computes"_compute.html and "fixes"_fix.html for a description of what @@ -573,7 +574,7 @@ Add a new interface function to src/library.cpp and src/library.h. :ulb,l Verify the new function is syntactically correct by building LAMMPS as -a library - see "this section"_Section_start.html#2_4 of the +a library - see "this section"_Section_start.html#start_4 of the manual. :l Add a wrapper method in the Python LAMMPS module to python/lammps.py @@ -588,7 +589,7 @@ Python script. Isn't ctypes amazing? :l,ule :line :line -Example Python scripts that use LAMMPS :link(9_7),h4 +11.7 Example Python scripts that use LAMMPS :link(py_7),h4 These are the Python scripts included as demos in the python/examples directory of the LAMMPS distribution, to illustrate the kinds of diff --git a/doc/Section_start.html b/doc/Section_start.html index 1d76c57618..438f879dd6 100644 --- a/doc/Section_start.html +++ b/doc/Section_start.html @@ -14,18 +14,18 @@

            This section describes how to build and run LAMMPS, for both new and experienced users.

            -2.1 What's in the LAMMPS distribution
            -2.2 Making LAMMPS
            -2.3 Making LAMMPS with optional packages
            -2.4 Building LAMMPS as a library
            -2.5 Running LAMMPS
            -2.6 Command-line options
            -2.7 Screen output
            -2.8 Tips for users of previous versions
            +2.1 What's in the LAMMPS distribution
            +2.2 Making LAMMPS
            +2.3 Making LAMMPS with optional packages
            +2.4 Building LAMMPS as a library
            +2.5 Running LAMMPS
            +2.6 Command-line options
            +2.7 Screen output
            +2.8 Tips for users of previous versions

            -

            2.1 What's in the LAMMPS distribution +

            2.1 What's in the LAMMPS distribution

            When you download LAMMPS you will need to unzip and untar the downloaded file with the following commands, after placing the file in @@ -54,8 +54,8 @@ then you just get a single file:

            lmp_windows.exe 
             
            -

            Skip to the Running LAMMPS sections for info on how to launch -these executables on a Windows box. +

            Skip to the Running LAMMPS sections for info on how to +launch these executables on a Windows box.

            The Windows executables for serial or parallel only include certain packages and bug-fixes/upgrades listed on this @@ -67,20 +67,20 @@ as described in the next section.


            -

            2.2 Making LAMMPS +

            2.2 Making LAMMPS

            This section has the following sub-sections:

            -
            • Read this first -
            • Steps to build a LAMMPS executable -
            • Common errors that can occur when making LAMMPS -
            • Additional build tips -
            • Building for a Mac -
            • Building for Windows +
              -Read this first: +Read this first:

              Building LAMMPS can be non-trivial. You may need to edit a makefile, there are compiler options to consider, additional libraries can be @@ -106,7 +106,7 @@ to the developers and we'll include it in future LAMMPS releases.


              -Steps to build a LAMMPS executable: +Steps to build a LAMMPS executable:

              Step 0

              @@ -129,7 +129,7 @@ will build LAMMPS more quickly. produced, you're done; it's your lucky day.

              Note that by default only a few of LAMMPS optional pacakges are -installed. To build LAMMPS with optional packages, see this +installed. To build LAMMPS with optional packages, see this section below.

              Step 1 @@ -248,14 +248,15 @@ vendor-provided MPI which the compiler has no trouble finding. file (MPI_INC) and the MPI library file (MPI_PATH) are found and the name of the library file (MPI_LIB).

              -

              If you are installing MPI yourself, we recommend Argonne's MPICH 1.2 -or 2.0 or OpenMPI. MPICH can be downloaded from the Argonne MPI -site. OpenMPI can be downloaded the -OpenMPI site. LAM MPI should also work. If -you are running on a big parallel platform, your system people or the -vendor should have already installed a version of MPI, which will be -faster than MPICH or OpenMPI or LAM, so find out how to build and link -with it. If you use MPICH or OpenMPI or LAM, you will have to +

              If you are installing MPI yourself, we recommend Argonne's MPICH2 +or OpenMPI. MPICH can be downloaded from the Argonne MPI +site. OpenMPI can +be downloaded from the OpenMPI site. +Other MPI packages should also work. If you are running on a big +parallel platform, your system people or the vendor should have +already installed a version of MPI, which is likely to be faster +than a self-installed MPICH or OpenMPI, so find out how to build +and link with it. If you use MPICH or OpenMPI, you will have to configure and build it for your platform. The MPI configure script should have compiler options to enable you to use the same compiler you are using for the LAMMPS build, which can avoid problems that can @@ -329,7 +330,7 @@ truncation errors and thus do not always need to be performed in double precision. Using the -DFFT_SINGLE setting trades off a little accuracy for reduced memory use and parallel communication costs for transposing 3d FFT data. Note that single precision FFTs have only -been tested with the FFTW3, FFTW2, MKL, and KISS FFT packages. +been tested with the FFTW3, FFTW2, MKL, and KISS FFT options.

              Step 7

              @@ -350,7 +351,7 @@ your machine, you may not need to set these variables.

              Step 8

              Note that by default only a few of LAMMPS optional pacakges are -installed. To build LAMMPS with optional packages, see this +installed. To build LAMMPS with optional packages, see this section below, before proceeding to Step 9.

              Step 9 @@ -369,7 +370,7 @@ gmake foo


              -Errors that can occur when making LAMMPS: +Errors that can occur when making LAMMPS:

              IMPORTANT NOTE: If an error occurs when building LAMMPS, the compiler or linker will state very explicitly what the problem is. The error @@ -407,7 +408,7 @@ above in Step 4.


              -Additional build tips: +Additional build tips:

              (1) Building LAMMPS for multiple platforms.

              @@ -462,18 +463,18 @@ secs/timestep.


              -Building for a Mac: +Building for a Mac:

              OS X is BSD Unix, so it should just work. See the Makefile.mac file.


              -Building for Windows: +Building for Windows:

              The LAMMPS download page has an option to download both a serial and -parallel pre-built Windows exeutable. See the Running LAMMPS -section for instructions for running these executables on a Windows -box. +parallel pre-built Windows exeutable. See the Running +LAMMPS section for instructions for running these +executables on a Windows box.

              If the pre-built executable doesn't have the options you want, then you can build LAMMPS from its source files on a Windows box. One way @@ -498,72 +499,63 @@ and USER-REAXC. The fourth project includes the USER-AWPMD package.


              -

              2.3 Making LAMMPS with optional packages +

              2.3 Making LAMMPS with optional packages

              This section has the following sub-sections:

              -
              • Package basics -
              • Including/excluding packages -
              • Packages that require extra LAMMPS libraries -
              • Additional Makefile settings for extra libraries +
                -Package basics: +Package basics:

                The source code for LAMMPS is structured as a set of core files which are always included, plus optional packages. Packages are groups of files that enable a specific set of features. For example, force fields for molecular systems or granular systems are in packages. You -can see the list of all packages by typing "make package". +can see the list of all packages by typing "make package" from within +the src directory of the LAMMPS distribution.

                -

                The current list of standard packages is as follows: +

                If you use a command in a LAMMPS input script that is specific to a +particular package, you must have built LAMMPS with that package, else +you will get an error that the style is invalid or the command is +unknown. Every command's doc page specfies if it is part of a +package. You can also type

                -
                - - - - - - - - - - - - - - - - - - -
                asphere aspherical particles and force fields
                class2 class 2 force fields
                colloid colloidal particle force fields
                dipole point dipole particles and force fields
                dsmc Direct Simulation Monte Carlo (DMSC) pair style
                gpu GPU-enabled force field styles
                granular force fields and boundary conditions for granular systems
                kspace long-range Ewald and particle-mesh (PPPM) solvers
                manybody metal, 3-body, bond-order potentials
                meam modified embedded atom method (MEAM) potential
                molecule force fields for molecular systems
                opt optimized versions of a few pair potentials
                peri Peridynamics model and potential
                poems coupled rigid body motion
                reax ReaxFF potential
                replica multi-replica methods
                shock methods for MD simulations of shock loading
                srd stochastic rotation dynamics (SRD)
                xtc dump atom snapshots in XTC format -
                - -

                There are also several user-contributed packages which may be as -simple as a single additional file (see the src/USER-MISC directory) -or many files grouped together which add a specific functionality to -the code. +

                lmp_machine -h 
                +
                +

                to run your executable with the optional -h command-line +switch for "help", which will list the styles and commands +known to your executable.

                -

                The difference between a standard package versus a user package is -as follows: +

                There are two kinds of packages in LAMMPS, standard and user packages. +More information about the contents of standard and user packages is +given in this section of the manual. The +difference between standard and user packages is as follows:

                Standard packages are supported by the LAMMPS developers and are written in a syntax and style consistent with the rest of LAMMPS. This means we will answer questions about them, debug and fix them if necessary, and keep them compatible with future changes to LAMMPS.

                -

                User packages don't necessarily meet these requirements. If you have -problems using a feature provided in a user package, you will likely -need to contact the contributor directly to get help. Information on -how to submit additions you make to LAMMPS as a user-contributed -package is given in this section of the -documentation. +

                User packages have been contributed by users, and always begin with +the user prefix. If they are a single command (single file), they are +typically in the user-misc package. Otherwise, they are a a set of +files grouped together which add a specific functionality to the code. +

                +

                User packages don't necessarily meet the requirements of the standard +packages. If you have problems using a feature provided in a user +package, you will likely need to contact the contributor directly to +get help. Information on how to submit additions you make to LAMMPS +as a user-contributed package is given in this +section of the documentation.


                -Including/excluding packages: +Including/excluding packages:

                To use or not use a package you must include or exclude it before building LAMMPS. From the src directory, this is typically as simple @@ -588,15 +580,18 @@ of simulations. For some packages, this will keep you from having to build auxiliary libraries (see below), and will also produce a smaller executable which may run a bit faster.

                -

                By default, LAMMPS includes only the "kspace", "manybody", and -"molecule" packages. +

                When you download a LAMMPS tarball, these packages are pre-installed +in the src directory: KSPACE, MANYBODY,MOLECULE. When you download +LAMMPS source files from the SVN or Git repositories, no packages are +pre-installed.

                Packages are included or excluded by typing "make yes-name" or "make -no-name", where "name" is the name of the package. You can also type -"make yes-standard", "make no-standard", "make yes-user", "make -no-user", "make yes-all" or "make no-all" to include/exclude various -sets of packages. Type "make package" to see the all of the -package-related make options. +no-name", where "name" is the name of the package in lower-case, e.g. +name = kspace for the KSPACE package or name = user-atc for the +USER-ATC package. You can also type "make yes-standard", "make +no-standard", "make yes-user", "make no-user", "make yes-all" or "make +no-all" to include/exclude various sets of packages. Type "make +package" to see the all of the package-related make options.

                IMPORTANT NOTE: Inclusion/exclusion of a package works by simply moving files back and forth between the main src directory and @@ -625,17 +620,18 @@ type "make package" to see all of the package-related make options.


                -Packages that require extra LAMMPS libraries: +Packages that require extra libraries:

                A few of the standard and user packages require additional auxiliary -libraries be compiled first. If you get a LAMMPS build error about a -missing library, this is likely the reason. The source code for these -libraries is included in the LAMMPS distribution under the "lib" -directory. Look at the lib/README file for a list of these. +libraries to be compiled first. If you get a LAMMPS build error about +a missing library, this is likely the reason. The source code for +these libraries is included in the LAMMPS distribution under the "lib" +directory. Look at the lib/README file for a list of these or see +this section of the doc pages.

                -

                Each lib directly has a README file (e.g. lib/reax/README) with -instructions on how to build that library. Typically this is done by -typing something like: +

                Each lib directory has a README file (e.g. lib/reax/README) with +instructions on how to build that library. Typically this is done +in this manner:

                make -f Makefile.g++ 
                 
                @@ -679,12 +675,12 @@ build will likely fail.


                -

                2.4 Building LAMMPS as a library +

                2.4 Building LAMMPS as a library

                LAMMPS itself can be built as a library, which can then be called from -another application or a scripting language. See this -section for more info on coupling LAMMPS to -other codes. Building LAMMPS as a library is done by typing +another application or a scripting language. See this +section for more info on coupling LAMMPS +to other codes. Building LAMMPS as a library is done by typing

                make makelib
                 make -f Makefile.lib foo 
                @@ -710,19 +706,19 @@ src/library.cpp and src/library.h.
                 

                See the sample codes couple/simple/simple.cpp and simple.c as examples of C++ and C codes that invoke LAMMPS thru its library interface. There are other examples as well in the couple directory which are -discussed in this section of the manual. +discussed in this section of the manual. See this section of the manual for a description of the Python wrapper provided with LAMMPS that operates through the LAMMPS library interface.

                The files src/library.cpp and library.h contain the C-style interface -to LAMMPS. See this section of the manual -for a description of the interface and how to extend it for your -needs. +to LAMMPS. See this section of the +manual for a description of the interface and how to extend it for +your needs.


                -

                2.5 Running LAMMPS +

                2.5 Running LAMMPS

                By default, LAMMPS runs by reading commands from stdin; e.g. lmp_linux < in.file. This means you first create an input script (e.g. in.file) @@ -832,7 +828,7 @@ more processors or setup a smaller problem.


                -

                2.6 Command-line options +

                2.6 Command-line options

                At run time, LAMMPS recognizes several optional command-line switches which may be used in any order. Either the full word or a one-or-two @@ -861,13 +857,13 @@ mpirun -np 16 lmp_ibm -var f tmp.out -log my.log -screen none < in.alloy

                Explicitly enable or disable CUDA support, as provided by the USER-CUDA package. If LAMMPS is built with this package, as described -above in Section 2.3, then by default LAMMPS will run in CUDA -mode. If this switch is set to "off", then it will not, even if it -was built with the USER-CUDA package, which means you can run standard -LAMMPS or with the GPU package for testing or benchmarking purposes. -The only reason to set the switch to "on", is to check if LAMMPS was -built with the USER-CUDA package, since an error will be generated if -it was not. +above in Section 2.3, then by default LAMMPS will run in +CUDA mode. If this switch is set to "off", then it will not, even if +it was built with the USER-CUDA package, which means you can run +standard LAMMPS or with the GPU package for testing or benchmarking +purposes. The only reason to set the switch to "on", is to check if +LAMMPS was built with the USER-CUDA package, since an error will be +generated if it was not.

                -echo style 
                 
                @@ -925,13 +921,13 @@ processors.

                Note that with MPI installed on a machine (e.g. your desktop), you can run on more (virtual) processors than you have physical processors. -This can be useful for running multi-replica +This can be useful for running multi-replica simulations, on one or a few processors.

                The input script specifies what simulation is run on which partition; see the variable and next commands. This -howto section gives examples of how to use -these commands in this way. Simulations running on different +howto section gives examples of how to +use these commands in this way. Simulations running on different partitions can also communicate with each other; see the temper command.

                @@ -982,17 +978,18 @@ partition screen files file.N.
                -suffix style 
                 

                Use variants of various styles if they exist. The specified style can -be opt or gpu or cuda. These refer to optional packages that -LAMMPS can be built with, as described above in Section 2.3. -The "opt" style corrsponds to the OPT package, the "gpu" style to the -GPU package, and the "cuda" style to the USER-CUDA package. +be opt, omp, gpu, or cuda. These refer to optional packages that +LAMMPS can be built with, as described above in Section +2.3. The "opt" style corrsponds to the OPT package, the +"omp" style to the USER-OMP package, the "gpu" style to the GPU +package, and the "cuda" style to the USER-CUDA package.

                As an example, all of the packages provide a pair_style -lj/cut variant, with style names lj/cut/opt or -lj/cut/gpu or lj/cut/cuda. A variant styles can be specified +lj/cut variant, with style names lj/cut/opt, lj/cut/omp, +lj/cut/gpu, or lj/cut/cuda. A variant styles can be specified explicitly in your input script, e.g. pair_style lj/cut/gpu. If the -suffix switch is used, you do not need to modify your input script. -The specified suffix (opt,gpu,cuda) is automatically appended whenever +The specified suffix (opt,omp,gpu,cuda) is automatically appended whenever your input script command creates a new atom, pair, fix, compute, or run style. atom, pair, fix, compute, or integrate @@ -1015,13 +1012,19 @@ value2 ..." at the beginning of the input script. Defining an index variable as a command-line argument overrides any setting for the same index variable in the input script, since index variables cannot be re-defined. See the variable command for more info on -defining index and other kinds of variables and this -section for more info on using variables in -input scripts. +defining index and other kinds of variables and this +section for more info on using variables +in input scripts. +

                +

                NOTE: Currently, the command-line parser looks for arguments that +start with "-" to indicate new switches. Thus you cannot specify +multiple variable values if any of they start with a "-", e.g. a +negative numeric value. It is OK if the first value1 starts with a +"-", since it is automatically skipped.


                -

                2.7 LAMMPS screen output +

                2.7 LAMMPS screen output

                As LAMMPS reads an input script, it prints information to both the screen and a log file about significant actions it takes to setup a @@ -1118,7 +1121,7 @@ communication, roughly 75% in the example above.


                -

                2.8 Tips for users of previous LAMMPS versions +

                2.8 Tips for users of previous LAMMPS versions

                The current C++ began with a complete rewrite of LAMMPS 2001, which was written in F90. Features of earlier versions of LAMMPS are listed diff --git a/doc/Section_start.txt b/doc/Section_start.txt index 4a75228e78..674dec45b7 100644 --- a/doc/Section_start.txt +++ b/doc/Section_start.txt @@ -11,18 +11,18 @@ This section describes how to build and run LAMMPS, for both new and experienced users. -2.1 "What's in the LAMMPS distribution"_#2_1 -2.2 "Making LAMMPS"_#2_2 -2.3 "Making LAMMPS with optional packages"_#2_3 -2.4 "Building LAMMPS as a library"_#2_4 -2.5 "Running LAMMPS"_#2_5 -2.6 "Command-line options"_#2_6 -2.7 "Screen output"_#2_7 -2.8 "Tips for users of previous versions"_#2_8 :all(b) +2.1 "What's in the LAMMPS distribution"_#start_1 +2.2 "Making LAMMPS"_#start_2 +2.3 "Making LAMMPS with optional packages"_#start_3 +2.4 "Building LAMMPS as a library"_#start_4 +2.5 "Running LAMMPS"_#start_5 +2.6 "Command-line options"_#start_6 +2.7 "Screen output"_#start_7 +2.8 "Tips for users of previous versions"_#start_8 :all(b) :line -2.1 What's in the LAMMPS distribution :h4,link(2_1) +2.1 What's in the LAMMPS distribution :h4,link(start_1) When you download LAMMPS you will need to unzip and untar the downloaded file with the following commands, after placing the file in @@ -49,8 +49,8 @@ then you just get a single file: lmp_windows.exe :pre -Skip to the "Running LAMMPS"_#2_5 sections for info on how to launch -these executables on a Windows box. +Skip to the "Running LAMMPS"_#start_5 sections for info on how to +launch these executables on a Windows box. The Windows executables for serial or parallel only include certain packages and bug-fixes/upgrades listed on "this @@ -62,20 +62,20 @@ as described in the next section. :line -2.2 Making LAMMPS :h4,link(2_2) +2.2 Making LAMMPS :h4,link(start_2) This section has the following sub-sections: -"Read this first"_#2_2_1 -"Steps to build a LAMMPS executable"_#2_2_2 -"Common errors that can occur when making LAMMPS"_#2_2_3 -"Additional build tips"_#2_2_4 -"Building for a Mac"_#2_2_5 -"Building for Windows"_#2_2_6 :ul +"Read this first"_#start_2_1 +"Steps to build a LAMMPS executable"_#start_2_2 +"Common errors that can occur when making LAMMPS"_#start_2_3 +"Additional build tips"_#start_2_4 +"Building for a Mac"_#start_2_5 +"Building for Windows"_#start_2_6 :ul :line -[{Read this first:}] :link(2_2_1) +[{Read this first:}] :link(start_2_1) Building LAMMPS can be non-trivial. You may need to edit a makefile, there are compiler options to consider, additional libraries can be @@ -101,7 +101,7 @@ to the developers and we'll include it in future LAMMPS releases. :line -[{Steps to build a LAMMPS executable:}] :link(2_2_2) +[{Steps to build a LAMMPS executable:}] :link(start_2_2) [Step 0] @@ -125,7 +125,7 @@ produced, you're done; it's your lucky day. Note that by default only a few of LAMMPS optional pacakges are installed. To build LAMMPS with optional packages, see "this -section"_#2_3 below. +section"_#start_3 below. [Step 1] @@ -243,14 +243,15 @@ Failing this, with these 3 variables you can specify where the mpi.h file (MPI_INC) and the MPI library file (MPI_PATH) are found and the name of the library file (MPI_LIB). -If you are installing MPI yourself, we recommend Argonne's MPICH 1.2 -or 2.0 or OpenMPI. MPICH can be downloaded from the "Argonne MPI -site"_http://www-unix.mcs.anl.gov/mpi. OpenMPI can be downloaded the -"OpenMPI site"_http://www.open-mpi.org. LAM MPI should also work. If -you are running on a big parallel platform, your system people or the -vendor should have already installed a version of MPI, which will be -faster than MPICH or OpenMPI or LAM, so find out how to build and link -with it. If you use MPICH or OpenMPI or LAM, you will have to +If you are installing MPI yourself, we recommend Argonne's MPICH2 +or OpenMPI. MPICH can be downloaded from the "Argonne MPI +site"_http://www.mcs.anl.gov/research/projects/mpich2/. OpenMPI can +be downloaded from the "OpenMPI site"_http://www.open-mpi.org. +Other MPI packages should also work. If you are running on a big +parallel platform, your system people or the vendor should have +already installed a version of MPI, which is likely to be faster +than a self-installed MPICH or OpenMPI, so find out how to build +and link with it. If you use MPICH or OpenMPI, you will have to configure and build it for your platform. The MPI configure script should have compiler options to enable you to use the same compiler you are using for the LAMMPS build, which can avoid problems that can @@ -324,7 +325,7 @@ truncation errors and thus do not always need to be performed in double precision. Using the -DFFT_SINGLE setting trades off a little accuracy for reduced memory use and parallel communication costs for transposing 3d FFT data. Note that single precision FFTs have only -been tested with the FFTW3, FFTW2, MKL, and KISS FFT packages. +been tested with the FFTW3, FFTW2, MKL, and KISS FFT options. [Step 7] @@ -346,7 +347,7 @@ your machine, you may not need to set these variables. Note that by default only a few of LAMMPS optional pacakges are installed. To build LAMMPS with optional packages, see "this -section"_#2_3 below, before proceeding to Step 9. +section"_#start_3 below, before proceeding to Step 9. [Step 9] @@ -364,7 +365,7 @@ You should get the executable lmp_foo when the build is complete. :line -[{Errors that can occur when making LAMMPS:}] :link(2_2_3) +[{Errors that can occur when making LAMMPS:}] :link(start_2_3) IMPORTANT NOTE: If an error occurs when building LAMMPS, the compiler or linker will state very explicitly what the problem is. The error @@ -402,7 +403,7 @@ above in Step 4. :line -[{Additional build tips:}] :link(2_2_4) +[{Additional build tips:}] :link(start_2_4) (1) Building LAMMPS for multiple platforms. @@ -457,18 +458,18 @@ secs/timestep. :line -[{Building for a Mac:}] :link(2_2_5) +[{Building for a Mac:}] :link(start_2_5) OS X is BSD Unix, so it should just work. See the Makefile.mac file. :line -[{Building for Windows:}] :link(2_2_6) +[{Building for Windows:}] :link(start_2_6) The LAMMPS download page has an option to download both a serial and -parallel pre-built Windows exeutable. See the "Running LAMMPS"_#2_5 -section for instructions for running these executables on a Windows -box. +parallel pre-built Windows exeutable. See the "Running +LAMMPS"_#start_5 section for instructions for running these +executables on a Windows box. If the pre-built executable doesn't have the options you want, then you can build LAMMPS from its source files on a Windows box. One way @@ -493,70 +494,63 @@ and USER-REAXC. The fourth project includes the USER-AWPMD package. :line -2.3 Making LAMMPS with optional packages :h4,link(2_3) +2.3 Making LAMMPS with optional packages :h4,link(start_3) This section has the following sub-sections: -"Package basics"_#2_3_1 -"Including/excluding packages"_#2_3_2 -"Packages that require extra LAMMPS libraries"_#2_3_3 -"Additional Makefile settings for extra libraries"_#2_3_4 :ul +"Package basics"_#start_3_1 +"Including/excluding packages"_#start_3_2 +"Packages that require extra libraries"_#start_3_3 +"Additional Makefile settings for extra libraries"_#start_3_4 :ul :line -[{Package basics:}] :link(2_3_1) +[{Package basics:}] :link(start_3_1) The source code for LAMMPS is structured as a set of core files which are always included, plus optional packages. Packages are groups of files that enable a specific set of features. For example, force fields for molecular systems or granular systems are in packages. You -can see the list of all packages by typing "make package". +can see the list of all packages by typing "make package" from within +the src directory of the LAMMPS distribution. -The current list of standard packages is as follows: +If you use a command in a LAMMPS input script that is specific to a +particular package, you must have built LAMMPS with that package, else +you will get an error that the style is invalid or the command is +unknown. Every command's doc page specfies if it is part of a +package. You can also type -asphere : aspherical particles and force fields -class2 : class 2 force fields -colloid : colloidal particle force fields -dipole : point dipole particles and force fields -dsmc : Direct Simulation Monte Carlo (DMSC) pair style -gpu : GPU-enabled force field styles -granular : force fields and boundary conditions for granular systems -kspace : long-range Ewald and particle-mesh (PPPM) solvers -manybody : metal, 3-body, bond-order potentials -meam : modified embedded atom method (MEAM) potential -molecule : force fields for molecular systems -opt : optimized versions of a few pair potentials -peri : Peridynamics model and potential -poems : coupled rigid body motion -reax : ReaxFF potential -replica : multi-replica methods -shock : methods for MD simulations of shock loading -srd : stochastic rotation dynamics (SRD) -xtc : dump atom snapshots in XTC format :tb(s=:) +lmp_machine -h :pre -There are also several user-contributed packages which may be as -simple as a single additional file (see the src/USER-MISC directory) -or many files grouped together which add a specific functionality to -the code. +to run your executable with the optional "-h command-line +switch"_#start_6 for "help", which will list the styles and commands +known to your executable. -The difference between a {standard} package versus a {user} package is -as follows: +There are two kinds of packages in LAMMPS, standard and user packages. +More information about the contents of standard and user packages is +given in "this section"_Section_packages.html of the manual. The +difference between standard and user packages is as follows: Standard packages are supported by the LAMMPS developers and are written in a syntax and style consistent with the rest of LAMMPS. This means we will answer questions about them, debug and fix them if necessary, and keep them compatible with future changes to LAMMPS. -User packages don't necessarily meet these requirements. If you have -problems using a feature provided in a user package, you will likely -need to contact the contributor directly to get help. Information on -how to submit additions you make to LAMMPS as a user-contributed -package is given in "this section"_Section_modify.html#package of the -documentation. +User packages have been contributed by users, and always begin with +the user prefix. If they are a single command (single file), they are +typically in the user-misc package. Otherwise, they are a a set of +files grouped together which add a specific functionality to the code. + +User packages don't necessarily meet the requirements of the standard +packages. If you have problems using a feature provided in a user +package, you will likely need to contact the contributor directly to +get help. Information on how to submit additions you make to LAMMPS +as a user-contributed package is given in "this +section"_Section_modify.html#mod_14 of the documentation. :line -[{Including/excluding packages:}] :link(2_3_2) +[{Including/excluding packages:}] :link(start_3_2) To use or not use a package you must include or exclude it before building LAMMPS. From the src directory, this is typically as simple @@ -581,15 +575,18 @@ of simulations. For some packages, this will keep you from having to build auxiliary libraries (see below), and will also produce a smaller executable which may run a bit faster. -By default, LAMMPS includes only the "kspace", "manybody", and -"molecule" packages. +When you download a LAMMPS tarball, these packages are pre-installed +in the src directory: KSPACE, MANYBODY,MOLECULE. When you download +LAMMPS source files from the SVN or Git repositories, no packages are +pre-installed. Packages are included or excluded by typing "make yes-name" or "make -no-name", where "name" is the name of the package. You can also type -"make yes-standard", "make no-standard", "make yes-user", "make -no-user", "make yes-all" or "make no-all" to include/exclude various -sets of packages. Type "make package" to see the all of the -package-related make options. +no-name", where "name" is the name of the package in lower-case, e.g. +name = kspace for the KSPACE package or name = user-atc for the +USER-ATC package. You can also type "make yes-standard", "make +no-standard", "make yes-user", "make no-user", "make yes-all" or "make +no-all" to include/exclude various sets of packages. Type "make +package" to see the all of the package-related make options. IMPORTANT NOTE: Inclusion/exclusion of a package works by simply moving files back and forth between the main src directory and @@ -618,17 +615,18 @@ type "make package" to see all of the package-related make options. :line -[{Packages that require extra LAMMPS libraries:}] :link(2_3_3) +[{Packages that require extra libraries:}] :link(start_3_3) A few of the standard and user packages require additional auxiliary -libraries be compiled first. If you get a LAMMPS build error about a -missing library, this is likely the reason. The source code for these -libraries is included in the LAMMPS distribution under the "lib" -directory. Look at the lib/README file for a list of these. +libraries to be compiled first. If you get a LAMMPS build error about +a missing library, this is likely the reason. The source code for +these libraries is included in the LAMMPS distribution under the "lib" +directory. Look at the lib/README file for a list of these or see +"this section"_Section_packages.html of the doc pages. -Each lib directly has a README file (e.g. lib/reax/README) with -instructions on how to build that library. Typically this is done by -typing something like: +Each lib directory has a README file (e.g. lib/reax/README) with +instructions on how to build that library. Typically this is done +in this manner: make -f Makefile.g++ :pre @@ -672,12 +670,12 @@ build will likely fail. :line -2.4 Building LAMMPS as a library :h4,link(2_4) +2.4 Building LAMMPS as a library :h4,link(start_4) LAMMPS itself can be built as a library, which can then be called from another application or a scripting language. See "this -section"_Section_howto.html#4_10 for more info on coupling LAMMPS to -other codes. Building LAMMPS as a library is done by typing +section"_Section_howto.html#howto_10 for more info on coupling LAMMPS +to other codes. Building LAMMPS as a library is done by typing make makelib make -f Makefile.lib foo :pre @@ -703,19 +701,19 @@ src/library.cpp and src/library.h. See the sample codes couple/simple/simple.cpp and simple.c as examples of C++ and C codes that invoke LAMMPS thru its library interface. There are other examples as well in the couple directory which are -discussed in "this section"_Section_howto.html#4_10 of the manual. +discussed in "this section"_Section_howto.html#howto_10 of the manual. See "this section"_Section_python.html of the manual for a description of the Python wrapper provided with LAMMPS that operates through the LAMMPS library interface. The files src/library.cpp and library.h contain the C-style interface -to LAMMPS. See "this section"_Section_howto.html#4_19 of the manual -for a description of the interface and how to extend it for your -needs. +to LAMMPS. See "this section"_Section_howto.html#howto_19 of the +manual for a description of the interface and how to extend it for +your needs. :line -2.5 Running LAMMPS :h4,link(2_5) +2.5 Running LAMMPS :h4,link(start_5) By default, LAMMPS runs by reading commands from stdin; e.g. lmp_linux < in.file. This means you first create an input script (e.g. in.file) @@ -822,7 +820,7 @@ more processors or setup a smaller problem. :line -2.6 Command-line options :h4,link(2_6) +2.6 Command-line options :h4,link(start_6) At run time, LAMMPS recognizes several optional command-line switches which may be used in any order. Either the full word or a one-or-two @@ -851,13 +849,13 @@ Here are the details on the options: Explicitly enable or disable CUDA support, as provided by the USER-CUDA package. If LAMMPS is built with this package, as described -above in "Section 2.3"_#2_3, then by default LAMMPS will run in CUDA -mode. If this switch is set to "off", then it will not, even if it -was built with the USER-CUDA package, which means you can run standard -LAMMPS or with the GPU package for testing or benchmarking purposes. -The only reason to set the switch to "on", is to check if LAMMPS was -built with the USER-CUDA package, since an error will be generated if -it was not. +above in "Section 2.3"_#start_3, then by default LAMMPS will run in +CUDA mode. If this switch is set to "off", then it will not, even if +it was built with the USER-CUDA package, which means you can run +standard LAMMPS or with the GPU package for testing or benchmarking +purposes. The only reason to set the switch to "on", is to check if +LAMMPS was built with the USER-CUDA package, since an error will be +generated if it was not. -echo style :pre @@ -916,12 +914,12 @@ processors. Note that with MPI installed on a machine (e.g. your desktop), you can run on more (virtual) processors than you have physical processors. This can be useful for running "multi-replica -simulations"_Section_howto.html#4_5, on one or a few processors. +simulations"_Section_howto.html#howto_5, on one or a few processors. The input script specifies what simulation is run on which partition; see the "variable"_variable.html and "next"_next.html commands. This -"howto section"_Section_howto.html#4_4 gives examples of how to use -these commands in this way. Simulations running on different +"howto section"_Section_howto.html#howto_4 gives examples of how to +use these commands in this way. Simulations running on different partitions can also communicate with each other; see the "temper"_temper.html command. @@ -972,17 +970,18 @@ partition screen files file.N. -suffix style :pre Use variants of various styles if they exist. The specified style can -be {opt} or {gpu} or {cuda}. These refer to optional packages that -LAMMPS can be built with, as described above in "Section 2.3"_#2_3. -The "opt" style corrsponds to the OPT package, the "gpu" style to the -GPU package, and the "cuda" style to the USER-CUDA package. +be {opt}, {omp}, {gpu}, or {cuda}. These refer to optional packages that +LAMMPS can be built with, as described above in "Section +2.3"_#start_3. The "opt" style corrsponds to the OPT package, the +"omp" style to the USER-OMP package, the "gpu" style to the GPU +package, and the "cuda" style to the USER-CUDA package. As an example, all of the packages provide a "pair_style -lj/cut"_pair_lj.html variant, with style names lj/cut/opt or -lj/cut/gpu or lj/cut/cuda. A variant styles can be specified +lj/cut"_pair_lj.html variant, with style names lj/cut/opt, lj/cut/omp, +lj/cut/gpu, or lj/cut/cuda. A variant styles can be specified explicitly in your input script, e.g. pair_style lj/cut/gpu. If the -suffix switch is used, you do not need to modify your input script. -The specified suffix (opt,gpu,cuda) is automatically appended whenever +The specified suffix (opt,omp,gpu,cuda) is automatically appended whenever your input script command creates a new "atom"_atom_style.html, "pair"_pair_style.html, "fix"_fix.html, "compute"_compute.html, or "run"_run_style.html style. atom, pair, fix, compute, or integrate @@ -1006,12 +1005,18 @@ variable as a command-line argument overrides any setting for the same index variable in the input script, since index variables cannot be re-defined. See the "variable"_variable.html command for more info on defining index and other kinds of variables and "this -section"_Section_commands.html#3_2 for more info on using variables in -input scripts. +section"_Section_commands.html#cmd_2 for more info on using variables +in input scripts. + +NOTE: Currently, the command-line parser looks for arguments that +start with "-" to indicate new switches. Thus you cannot specify +multiple variable values if any of they start with a "-", e.g. a +negative numeric value. It is OK if the first value1 starts with a +"-", since it is automatically skipped. :line -2.7 LAMMPS screen output :h4,link(2_7) +2.7 LAMMPS screen output :h4,link(start_7) As LAMMPS reads an input script, it prints information to both the screen and a log file about significant actions it takes to setup a @@ -1108,7 +1113,7 @@ communication, roughly 75% in the example above. :line -2.8 Tips for users of previous LAMMPS versions :h4,link(2_8) +2.8 Tips for users of previous LAMMPS versions :h4,link(start_8) The current C++ began with a complete rewrite of LAMMPS 2001, which was written in F90. Features of earlier versions of LAMMPS are listed diff --git a/doc/Section_tools.html b/doc/Section_tools.html index 4e1228a21d..3f9efb0c7e 100644 --- a/doc/Section_tools.html +++ b/doc/Section_tools.html @@ -11,7 +11,7 @@ Section


                -

                7. Additional tools +

                9. Additional tools

                LAMMPS is designed to be a computational kernel for performing molecular dynamics computations. Additional pre- and post-processing diff --git a/doc/Section_tools.txt b/doc/Section_tools.txt index 5c3f7bf6a1..05a4fe65c0 100644 --- a/doc/Section_tools.txt +++ b/doc/Section_tools.txt @@ -8,7 +8,7 @@ Section"_Section_modify.html :c :line -7. Additional tools :h3 +9. Additional tools :h3 LAMMPS is designed to be a computational kernel for performing molecular dynamics computations. Additional pre- and post-processing diff --git a/doc/USER/sph/SPH_LAMMPS_userguide.pdf b/doc/USER/sph/SPH_LAMMPS_userguide.pdf new file mode 100755 index 0000000000..7ca4a72910 Binary files /dev/null and b/doc/USER/sph/SPH_LAMMPS_userguide.pdf differ diff --git a/doc/angle_charmm.html b/doc/angle_charmm.html index 116098fa52..94c0e3bcf9 100644 --- a/doc/angle_charmm.html +++ b/doc/angle_charmm.html @@ -49,7 +49,7 @@ internally; hence the units of K are in energy/radian^2.

                Restrictions:

                This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

                Related commands: diff --git a/doc/angle_charmm.txt b/doc/angle_charmm.txt index e1356cb061..13cdc03f88 100644 --- a/doc/angle_charmm.txt +++ b/doc/angle_charmm.txt @@ -46,8 +46,8 @@ internally; hence the units of K are in energy/radian^2. [Restrictions:] This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/angle_class2.html b/doc/angle_class2.html index b96f490e6d..c2aea849a5 100644 --- a/doc/angle_class2.html +++ b/doc/angle_class2.html @@ -80,9 +80,9 @@ same value from the Ea formula.

                Restrictions:

                -

                This angle style can only be used if LAMMPS was built with the -"class2" package. See the Making LAMMPS -section for more info on packages. +

                This angle style can only be used if LAMMPS was built with the CLASS2 +package. See the Making LAMMPS section +for more info on packages.

                Related commands:

                diff --git a/doc/angle_class2.txt b/doc/angle_class2.txt index 25719ceff4..93e2ea25ed 100644 --- a/doc/angle_class2.txt +++ b/doc/angle_class2.txt @@ -77,9 +77,9 @@ same value from the Ea formula. [Restrictions:] -This angle style can only be used if LAMMPS was built with the -"class2" package. See the "Making LAMMPS"_Section_start.html#2_3 -section for more info on packages. +This angle style can only be used if LAMMPS was built with the CLASS2 +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. [Related commands:] diff --git a/doc/angle_cmm.html b/doc/angle_cmm.html index d994d98a6d..bfd2507f64 100644 --- a/doc/angle_cmm.html +++ b/doc/angle_cmm.html @@ -52,8 +52,8 @@ internally; hence the units of K are in energy/radian^2.

                Restrictions:

                This angle style can only be used if LAMMPS was built with the -"user-cg-cmm" package. See the Making LAMMPS section -for more info on packages. +USER-CG-CMM package. See the Making +LAMMPS section for more info on packages.

                Related commands:

                diff --git a/doc/angle_cmm.txt b/doc/angle_cmm.txt index 69eaa1dbe7..bbc5033ad6 100644 --- a/doc/angle_cmm.txt +++ b/doc/angle_cmm.txt @@ -49,8 +49,8 @@ internally; hence the units of K are in energy/radian^2. [Restrictions:] This angle style can only be used if LAMMPS was built with the -"user-cg-cmm" package. See the "Making LAMMPS"_Section_start.html#2_3 section -for more info on packages. +USER-CG-CMM package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/angle_coeff.html b/doc/angle_coeff.html index 942ba500a6..a49967155d 100644 --- a/doc/angle_coeff.html +++ b/doc/angle_coeff.html @@ -81,7 +81,7 @@ specified by the associated angle_coeff command

              There are also additional angle styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the angle section of this +the individual styles are given in the angle section of this page.


              diff --git a/doc/angle_coeff.txt b/doc/angle_coeff.txt index 08ed66db24..091ebb4e4e 100644 --- a/doc/angle_coeff.txt +++ b/doc/angle_coeff.txt @@ -79,7 +79,7 @@ specified by the associated "angle_coeff"_angle_coeff.html command: There are also additional angle styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the angle section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. :line diff --git a/doc/angle_cosine.html b/doc/angle_cosine.html index ebd6df2234..3321405fb6 100644 --- a/doc/angle_cosine.html +++ b/doc/angle_cosine.html @@ -38,7 +38,7 @@ or read_restart commands:

              Restrictions:

              This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

              Related commands: diff --git a/doc/angle_cosine.txt b/doc/angle_cosine.txt index 4c6cef912f..a2fbabf985 100644 --- a/doc/angle_cosine.txt +++ b/doc/angle_cosine.txt @@ -35,8 +35,8 @@ K (energy) :ul [Restrictions:] This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/angle_cosine_delta.html b/doc/angle_cosine_delta.html index 354c684fce..9bfd85ea09 100644 --- a/doc/angle_cosine_delta.html +++ b/doc/angle_cosine_delta.html @@ -43,7 +43,7 @@ internally.

              Restrictions:

              This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

              Related commands: diff --git a/doc/angle_cosine_delta.txt b/doc/angle_cosine_delta.txt index afa431690d..57de081f84 100644 --- a/doc/angle_cosine_delta.txt +++ b/doc/angle_cosine_delta.txt @@ -40,8 +40,8 @@ internally. [Restrictions:] This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/angle_cosine_periodic.html b/doc/angle_cosine_periodic.html index e8b3d464bf..5e409b0250 100644 --- a/doc/angle_cosine_periodic.html +++ b/doc/angle_cosine_periodic.html @@ -23,10 +23,10 @@ angle_coeff * 75.0 1 6

              Description:

              The cosine/periodic angle style uses the following potential, which -is commonly used in the DREIDING force field, -particularly for organometallic systems where n = 4 might be used -for an octahedral complex and n = 3 might be used for a trigonal -center: +is commonly used in the DREIDING force +field, particularly for organometallic systems where n = 4 might be +used for an octahedral complex and n = 3 might be used for a +trigonal center:

              @@ -51,7 +51,7 @@ geometry.

              Restrictions:

              This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

              Related commands: diff --git a/doc/angle_cosine_periodic.txt b/doc/angle_cosine_periodic.txt index 63a8fc52cd..a5fb88fdb8 100644 --- a/doc/angle_cosine_periodic.txt +++ b/doc/angle_cosine_periodic.txt @@ -20,10 +20,10 @@ angle_coeff * 75.0 1 6 :pre [Description:] The {cosine/periodic} angle style uses the following potential, which -is commonly used in the "DREIDING"_Section_howto.html#4_4 force field, -particularly for organometallic systems where {n} = 4 might be used -for an octahedral complex and {n} = 3 might be used for a trigonal -center: +is commonly used in the "DREIDING"_Section_howto.html#howto_4 force +field, particularly for organometallic systems where {n} = 4 might be +used for an octahedral complex and {n} = 3 might be used for a +trigonal center: :c,image(Eqs/angle_cosine_periodic.jpg) @@ -48,8 +48,8 @@ geometry. [Restrictions:] This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/angle_cosine_shift.html b/doc/angle_cosine_shift.html index e654387357..8f97069f79 100644 --- a/doc/angle_cosine_shift.html +++ b/doc/angle_cosine_shift.html @@ -41,7 +41,7 @@ or read_restart commands:

              Restrictions:

              This angle style can only be used if LAMMPS was built with the -"user-misc" package. See the Making LAMMPS +USER-MISC package. See the Making LAMMPS section for more info on packages.

              Related commands: diff --git a/doc/angle_cosine_shift.txt b/doc/angle_cosine_shift.txt index e3e9c0c9d2..e7c6417185 100644 --- a/doc/angle_cosine_shift.txt +++ b/doc/angle_cosine_shift.txt @@ -38,7 +38,7 @@ theta (angle) :ul [Restrictions:] This angle style can only be used if LAMMPS was built with the -"user-misc" package. See the "Making LAMMPS"_Section_start.html#2_3 +USER-MISC package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/angle_cosine_shift_exp.html b/doc/angle_cosine_shift_exp.html index fd3e084d71..ceccb16b8e 100644 --- a/doc/angle_cosine_shift_exp.html +++ b/doc/angle_cosine_shift_exp.html @@ -53,7 +53,7 @@ or read_restart commands:

              Restrictions:

              This angle style can only be used if LAMMPS was built with the -"user-misc" package. See the Making LAMMPS +USER-MISC package. See the Making LAMMPS section for more info on packages.

              Related commands: diff --git a/doc/angle_cosine_shift_exp.txt b/doc/angle_cosine_shift_exp.txt index 10b8684573..12612a5337 100644 --- a/doc/angle_cosine_shift_exp.txt +++ b/doc/angle_cosine_shift_exp.txt @@ -50,7 +50,7 @@ A (real number) :ul [Restrictions:] This angle style can only be used if LAMMPS was built with the -"user-misc" package. See the "Making LAMMPS"_Section_start.html#2_3 +USER-MISC package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/angle_cosine_squared.html b/doc/angle_cosine_squared.html index 333b6469cb..2b888d40e6 100644 --- a/doc/angle_cosine_squared.html +++ b/doc/angle_cosine_squared.html @@ -43,7 +43,7 @@ internally.

              Restrictions:

              This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

              Related commands: diff --git a/doc/angle_cosine_squared.txt b/doc/angle_cosine_squared.txt index d39623ed31..383c0b3025 100644 --- a/doc/angle_cosine_squared.txt +++ b/doc/angle_cosine_squared.txt @@ -40,8 +40,8 @@ internally. [Restrictions:] This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/angle_harmonic.html b/doc/angle_harmonic.html index d8691f63de..2094fb2cc7 100644 --- a/doc/angle_harmonic.html +++ b/doc/angle_harmonic.html @@ -43,7 +43,7 @@ internally; hence the units of K are in energy/radian^2.

              Restrictions: none

              This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

              Related commands: diff --git a/doc/angle_harmonic.txt b/doc/angle_harmonic.txt index dc98882ee9..92c318dc25 100644 --- a/doc/angle_harmonic.txt +++ b/doc/angle_harmonic.txt @@ -40,8 +40,8 @@ internally; hence the units of K are in energy/radian^2. [Restrictions:] none This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/angle_hybrid.html b/doc/angle_hybrid.html index ac174da111..9a4571a11e 100644 --- a/doc/angle_hybrid.html +++ b/doc/angle_hybrid.html @@ -74,10 +74,12 @@ in place of an angle style, either in a input script angle_coeff command or in the data file, if you desire to turn off interactions for specific angle types.

              +
              +

              Restrictions:

              This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

              Unlike other angle styles, the hybrid angle style does not store angle diff --git a/doc/angle_hybrid.txt b/doc/angle_hybrid.txt index be07715e82..4f500a0700 100644 --- a/doc/angle_hybrid.txt +++ b/doc/angle_hybrid.txt @@ -71,11 +71,13 @@ in place of an angle style, either in a input script angle_coeff command or in the data file, if you desire to turn off interactions for specific angle types. +:line + [Restrictions:] This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. Unlike other angle styles, the hybrid angle style does not store angle coefficient info for individual sub-styles in a "binary restart diff --git a/doc/angle_style.html b/doc/angle_style.html index 7ec349b11a..73e016b001 100644 --- a/doc/angle_style.html +++ b/doc/angle_style.html @@ -73,7 +73,7 @@ specified by the associated angle_coeff command

            There are also additional angle styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the angle section of this +the individual styles are given in the angle section of this page.


            @@ -83,10 +83,10 @@ page.

            Angle styles can only be set for atom_styles that allow angles to be defined.

            -

            Most angle styles are part of the "molecular" package. They are only -enabled if LAMMPS was built with that package. See the Making -LAMMPS section for more info on packages. The -doc pages for individual bond potentials tell if it is part of a +

            Most angle styles are part of the MOLECULAR package. They are only +enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info on packages. +The doc pages for individual bond potentials tell if it is part of a package.

            Related commands: diff --git a/doc/angle_style.txt b/doc/angle_style.txt index aca79433e7..ec4f923079 100644 --- a/doc/angle_style.txt +++ b/doc/angle_style.txt @@ -72,7 +72,7 @@ specified by the associated "angle_coeff"_angle_coeff.html command: There are also additional angle styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the angle section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. :line @@ -81,10 +81,10 @@ page"_Section_commands.html#3_5. Angle styles can only be set for atom_styles that allow angles to be defined. -Most angle styles are part of the "molecular" package. They are only +Most angle styles are part of the MOLECULAR package. They are only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. The -doc pages for individual bond potentials tell if it is part of a +LAMMPS"_Section_start.html#start_3 section for more info on packages. +The doc pages for individual bond potentials tell if it is part of a package. [Related commands:] diff --git a/doc/angle_table.html b/doc/angle_table.html index 7248683509..2b1bfb1654 100644 --- a/doc/angle_table.html +++ b/doc/angle_table.html @@ -124,7 +124,7 @@ one that matches the specified keyword.

            Restrictions:

            This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

            Related commands: diff --git a/doc/angle_table.txt b/doc/angle_table.txt index 3a0494dbba..eaee179682 100644 --- a/doc/angle_table.txt +++ b/doc/angle_table.txt @@ -121,8 +121,8 @@ one that matches the specified keyword. [Restrictions:] This angle style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/atom_style.html b/doc/atom_style.html index 616a0f3236..77ca19b72f 100644 --- a/doc/atom_style.html +++ b/doc/atom_style.html @@ -15,7 +15,7 @@

            atom_style style args 
             
            -
            • style = angle or atomic or bond or charge or dipole or electron or ellipsoid or full or molecular or peri or sphere or hybrid +
              • style = angle or atomic or bond or charge or dipole or electron or ellipsoid or full or line or meso or molecular or peri or sphere or tri or hybrid
                args = none for any style except hybrid
                 hybrid args = list of one or more sub-styles 
              @@ -61,9 +61,12 @@ quantities.
               
        • electron charge and spin and eradius electronic force field
          ellipsoid shape, quaternion for particle orientation, angular momentum extended aspherical particles
          full molecular + charge bio-molecules
          line end points, angular velocity rigid bodies
          meso rho, e, cv SPH particles
          molecular bonds, angles, dihedrals, impropers uncharged molecules
          peri mass, volume mesocopic Peridynamic models
          sphere diameter, mass, angular velocity granular models
          tri corner points, angular momentum rigid bodies
          wavepacket charge, spin, eradius, etag, cs_re, cs_im AWPMD
          @@ -72,8 +75,8 @@ the mass command, except for the finite-size particle styles discussed below. They assign mass on a per-atom basis.

          All of the styles define point particles, except the sphere, -ellipsoid, electron, peri, and wavepacket styles, which define -finite-size particles. +ellipsoid, electron, peri, wavepacket, line, and tri +styles, which define finite-size particles.

          For the sphere style, the particles are spheres and each stores a per-particle diameter and mass. If the diameter > 0.0, the particle @@ -93,12 +96,24 @@ position, which is represented by the eradius = electron size.

          For the peri style, the particles are spherical and each stores a per-particle mass and volume.

          +

          The meso style is for smoothed particle hydrodynamics (SPH) +particles which store a density (rho), energy (e), and heat capacity +(cv). +

          The wavepacket style is similar to electron, but the electrons may consist of several Gaussian wave packets, summed up with coefficients cs= (cs_re,cs_im). Each of the wave packets is treated as a separate particle in LAMMPS, wave packets belonging to the same electron must have identical etag values.

          +

          For the line style, the particles are idealized line segments and +each stores a per-particle mass and length and orientation (i.e. the +end points of the line segment). +

          +

          For the tri style, the particles are planar triangles and each +stores a per-particle mass and size and orientation (i.e. the corner +points of the triangle). +


          Typically, simulations require only a single (non-hybrid) atom style. @@ -124,15 +139,16 @@ section. read_data or create_box command.

          The angle, bond, full, and molecular styles are part of the -"molecular" package. The dipole style is part of the "dipole" -package. The ellipsoid style is part of the "asphere" package. The -peri style is part of the "peri" package for Peridynamics. The -electron style is part of the "user-eff" package for electronic -force fields. The wavepacket style is part of the -"user-awpmd" package for the antisymmetrized wave packet MD -method. They are only enabled if LAMMPS was built -with that package. See the Making LAMMPS -section for more info. +MOLECULAR package. The dipole style is part of the "dipole" +package. The peri style is part of the PERI package for +Peridynamics. The electron style is part of the USER-EFF package +for electronic force fields. The meso style is part +of the USER-SPH package for smoothed particle hydrodyanmics (SPH). +See this PDF guide to using SPH in +LAMMPS. The wavepacket style is part of the USER-AWPMD package for +the antisymmetrized wave packet MD method. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

          Related commands:

          diff --git a/doc/atom_style.txt b/doc/atom_style.txt index 40ffb07225..ee0375927f 100644 --- a/doc/atom_style.txt +++ b/doc/atom_style.txt @@ -13,8 +13,8 @@ atom_style command :h3 atom_style style args :pre style = {angle} or {atomic} or {bond} or {charge} or {dipole} or \ - {electron} or {ellipsoid} or {full} or {molecular} or \ - {peri} or {sphere} or {hybrid} :ul + {electron} or {ellipsoid} or {full} or {line} or {meso} or \ + {molecular} or {peri} or {sphere} or {tri} or {hybrid} :ul args = none for any style except {hybrid} {hybrid} args = list of one or more sub-styles :pre @@ -58,9 +58,12 @@ quantities. {electron} | charge and spin and eradius | electronic force field | {ellipsoid} | shape, quaternion for particle orientation, angular momentum | extended aspherical particles | {full} | molecular + charge | bio-molecules | +{line} | end points, angular velocity | rigid bodies | +{meso} | rho, e, cv | SPH particles | {molecular} | bonds, angles, dihedrals, impropers | uncharged molecules | {peri} | mass, volume | mesocopic Peridynamic models | {sphere} | diameter, mass, angular velocity | granular models | +{tri} | corner points, angular momentum | rigid bodies | {wavepacket} | charge, spin, eradius, etag, cs_re, cs_im | AWPMD :tb(c=3,s=|) All of the styles assign mass to particles on a per-type basis, using @@ -68,8 +71,8 @@ the "mass"_mass.html command, except for the finite-size particle styles discussed below. They assign mass on a per-atom basis. All of the styles define point particles, except the {sphere}, -{ellipsoid}, {electron}, {peri}, and {wavepacket} styles, which define -finite-size particles. +{ellipsoid}, {electron}, {peri}, {wavepacket}, {line}, and {tri} +styles, which define finite-size particles. For the {sphere} style, the particles are spheres and each stores a per-particle diameter and mass. If the diameter > 0.0, the particle @@ -89,12 +92,24 @@ position, which is represented by the eradius = electron size. For the {peri} style, the particles are spherical and each stores a per-particle mass and volume. +The {meso} style is for smoothed particle hydrodynamics (SPH) +particles which store a density (rho), energy (e), and heat capacity +(cv). + The {wavepacket} style is similar to {electron}, but the electrons may consist of several Gaussian wave packets, summed up with coefficients cs= (cs_re,cs_im). Each of the wave packets is treated as a separate particle in LAMMPS, wave packets belonging to the same electron must have identical {etag} values. +For the {line} style, the particles are idealized line segments and +each stores a per-particle mass and length and orientation (i.e. the +end points of the line segment). + +For the {tri} style, the particles are planar triangles and each +stores a per-particle mass and size and orientation (i.e. the corner +points of the triangle). + :line Typically, simulations require only a single (non-hybrid) atom style. @@ -120,15 +135,16 @@ This command cannot be used after the simulation box is defined by a "read_data"_read_data.html or "create_box"_create_box.html command. The {angle}, {bond}, {full}, and {molecular} styles are part of the -"molecular" package. The {dipole} style is part of the "dipole" -package. The {ellipsoid} style is part of the "asphere" package. The -{peri} style is part of the "peri" package for Peridynamics. The -{electron} style is part of the "user-eff" package for "electronic -force fields"_pair_eff.html. The {wavepacket} style is part of the -"user-awpmd" package for the "antisymmetrized wave packet MD -method"_pair_awpmd.html. They are only enabled if LAMMPS was built -with that package. See the "Making LAMMPS"_Section_start.html#2_3 -section for more info. +MOLECULAR package. The {dipole} style is part of the "dipole" +package. The {peri} style is part of the PERI package for +Peridynamics. The {electron} style is part of the USER-EFF package +for "electronic force fields"_pair_eff.html. The {meso} style is part +of the USER-SPH package for smoothed particle hydrodyanmics (SPH). +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. The {wavepacket} style is part of the USER-AWPMD package for +the "antisymmetrized wave packet MD method"_pair_awpmd.html. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/bond_class2.html b/doc/bond_class2.html index cb3ff9f5ac..b560a514dc 100644 --- a/doc/bond_class2.html +++ b/doc/bond_class2.html @@ -42,9 +42,9 @@ or read_restart commands:

        Restrictions:

        -

        This bond style can only be used if LAMMPS was built with the "class2" -package. See the Making LAMMPS section for -more info on packages. +

        This bond style can only be used if LAMMPS was built with the CLASS2 +package. See the Making LAMMPS section +for more info on packages.

        Related commands:

        diff --git a/doc/bond_class2.txt b/doc/bond_class2.txt index fa70494819..855be7b918 100644 --- a/doc/bond_class2.txt +++ b/doc/bond_class2.txt @@ -39,9 +39,9 @@ K4 (energy/distance^4) :ul [Restrictions:] -This bond style can only be used if LAMMPS was built with the "class2" -package. See the "Making LAMMPS"_Section_start.html#2_3 section for -more info on packages. +This bond style can only be used if LAMMPS was built with the CLASS2 +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. [Related commands:] diff --git a/doc/bond_coeff.html b/doc/bond_coeff.html index 434f0fb3d4..58ce6406a0 100644 --- a/doc/bond_coeff.html +++ b/doc/bond_coeff.html @@ -77,7 +77,7 @@ specified by the associated bond_coeff command:

      There are also additional bond styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the bond section of this +the individual styles are given in the bond section of this page.


      diff --git a/doc/bond_coeff.txt b/doc/bond_coeff.txt index 737d5e2abe..25110e9166 100644 --- a/doc/bond_coeff.txt +++ b/doc/bond_coeff.txt @@ -75,7 +75,7 @@ specified by the associated "bond_coeff"_bond_coeff.html command: There are also additional bond styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the bond section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. :line diff --git a/doc/bond_fene.html b/doc/bond_fene.html index 4dcc2447f8..6076d3cdb0 100644 --- a/doc/bond_fene.html +++ b/doc/bond_fene.html @@ -45,7 +45,7 @@ or read_restart commands:

      Restrictions:

      This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

      You typically should specify special_bonds fene diff --git a/doc/bond_fene.txt b/doc/bond_fene.txt index 8d0ab6c254..6a6a40acd2 100644 --- a/doc/bond_fene.txt +++ b/doc/bond_fene.txt @@ -42,8 +42,8 @@ sigma (distance) :ul [Restrictions:] This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. You typically should specify "special_bonds fene"_special_bonds.html" or "special_bonds lj/coul 0 1 1"_special_bonds.html to use this bond diff --git a/doc/bond_fene_expand.html b/doc/bond_fene_expand.html index 190e14ca31..da9b2e2da8 100644 --- a/doc/bond_fene_expand.html +++ b/doc/bond_fene_expand.html @@ -50,7 +50,7 @@ or read_restart commands:

      Restrictions:

      This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

      You typically should specify special_bonds fene diff --git a/doc/bond_fene_expand.txt b/doc/bond_fene_expand.txt index b12bb6de07..011d6321a6 100644 --- a/doc/bond_fene_expand.txt +++ b/doc/bond_fene_expand.txt @@ -47,8 +47,8 @@ delta (distance) :ul [Restrictions:] This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. You typically should specify "special_bonds fene"_special_bonds.html" or "special_bonds lj/coul 0 1 1"_special_bonds.html to use this bond diff --git a/doc/bond_harmonic.html b/doc/bond_harmonic.html index 37fd7f8cdb..efb2d26abf 100644 --- a/doc/bond_harmonic.html +++ b/doc/bond_harmonic.html @@ -40,7 +40,7 @@ or read_restart commands:

      Restrictions:

      This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

      Related commands: diff --git a/doc/bond_harmonic.txt b/doc/bond_harmonic.txt index 1ccbbd4f45..658c87378e 100644 --- a/doc/bond_harmonic.txt +++ b/doc/bond_harmonic.txt @@ -37,8 +37,8 @@ r0 (distance) :ul [Restrictions:] This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/bond_harmonic_shift.html b/doc/bond_harmonic_shift.html index f49b1042b5..8394ebf850 100644 --- a/doc/bond_harmonic_shift.html +++ b/doc/bond_harmonic_shift.html @@ -45,7 +45,7 @@ or read_restart commands:

      Restrictions:

      This bond style can only be used if LAMMPS was built with the -"user-misc" package. See the Making LAMMPS +USER-MISC package. See the Making LAMMPS section for more info on packages.

      Related commands: diff --git a/doc/bond_harmonic_shift.txt b/doc/bond_harmonic_shift.txt index c26195b6c1..4bef45dd1b 100644 --- a/doc/bond_harmonic_shift.txt +++ b/doc/bond_harmonic_shift.txt @@ -40,7 +40,7 @@ rc (distance) :ul [Restrictions:] This bond style can only be used if LAMMPS was built with the -"user-misc" package. See the "Making LAMMPS"_Section_start.html#2_3 +USER-MISC package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/bond_harmonic_shift_cut.html b/doc/bond_harmonic_shift_cut.html index 04086f9702..2142fc5f8f 100644 --- a/doc/bond_harmonic_shift_cut.html +++ b/doc/bond_harmonic_shift_cut.html @@ -43,7 +43,7 @@ or read_restart commands:

      Restrictions:

      This bond style can only be used if LAMMPS was built with the -"user-misc" package. See the Making LAMMPS +USER-MISC package. See the Making LAMMPS section for more info on packages.

      Related commands: diff --git a/doc/bond_harmonic_shift_cut.txt b/doc/bond_harmonic_shift_cut.txt index e6ff765109..ea9de8e930 100644 --- a/doc/bond_harmonic_shift_cut.txt +++ b/doc/bond_harmonic_shift_cut.txt @@ -40,7 +40,7 @@ rc (distance) :ul [Restrictions:] This bond style can only be used if LAMMPS was built with the -"user-misc" package. See the "Making LAMMPS"_Section_start.html#2_3 +USER-MISC package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/bond_hybrid.html b/doc/bond_hybrid.html index 642c4d4a01..1d1926434f 100644 --- a/doc/bond_hybrid.html +++ b/doc/bond_hybrid.html @@ -57,10 +57,12 @@ place of a bond style, either in a input script bond_coeff command or in the data file, if you desire to turn off interactions for specific bond types.

      +
      +

      Restrictions:

      This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

      Unlike other bond styles, the hybrid bond style does not store bond diff --git a/doc/bond_hybrid.txt b/doc/bond_hybrid.txt index 3b63daf17d..ec3053a83f 100644 --- a/doc/bond_hybrid.txt +++ b/doc/bond_hybrid.txt @@ -54,11 +54,13 @@ place of a bond style, either in a input script bond_coeff command or in the data file, if you desire to turn off interactions for specific bond types. +:line + [Restrictions:] This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. Unlike other bond styles, the hybrid bond style does not store bond coefficient info for individual sub-styles in a "binary restart diff --git a/doc/bond_morse.html b/doc/bond_morse.html index 0d69aedc5b..e826924044 100644 --- a/doc/bond_morse.html +++ b/doc/bond_morse.html @@ -41,7 +41,7 @@ or read_restart commands:

      Restrictions:

      This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

      Related commands: diff --git a/doc/bond_morse.txt b/doc/bond_morse.txt index fd67478ef4..be9c006654 100644 --- a/doc/bond_morse.txt +++ b/doc/bond_morse.txt @@ -38,8 +38,8 @@ r0 (distance) :ul [Restrictions:] This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/bond_nonlinear.html b/doc/bond_nonlinear.html index 6bbc5aedf8..06fd7cb456 100644 --- a/doc/bond_nonlinear.html +++ b/doc/bond_nonlinear.html @@ -41,7 +41,7 @@ or read_restart commands:

      Restrictions:

      This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

      Related commands: diff --git a/doc/bond_nonlinear.txt b/doc/bond_nonlinear.txt index 480109ff48..2cd41962ec 100644 --- a/doc/bond_nonlinear.txt +++ b/doc/bond_nonlinear.txt @@ -38,8 +38,8 @@ lamda (distance) :ul [Restrictions:] This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/bond_quartic.html b/doc/bond_quartic.html index 10313c0021..824c467164 100644 --- a/doc/bond_quartic.html +++ b/doc/bond_quartic.html @@ -76,7 +76,7 @@ delete_bonds all bond 0 remove

      Restrictions:

      This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

      The quartic style requires that special_bonds diff --git a/doc/bond_quartic.txt b/doc/bond_quartic.txt index b734d7997f..068defb546 100644 --- a/doc/bond_quartic.txt +++ b/doc/bond_quartic.txt @@ -73,8 +73,8 @@ delete_bonds all bond 0 remove :pre [Restrictions:] This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. The {quartic} style requires that "special_bonds"_special_bonds.html parameters be set to 1,1,1. Three- and four-body interactions (angle, diff --git a/doc/bond_style.html b/doc/bond_style.html index 7eea795dbc..22021efc56 100644 --- a/doc/bond_style.html +++ b/doc/bond_style.html @@ -82,7 +82,7 @@ specified by the associated bond_coeff command:

    There are also additional bond styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the bond section of this +the individual styles are given in the bond section of this page.


    @@ -92,10 +92,10 @@ page.

    Bond styles can only be set for atom styles that allow bonds to be defined.

    -

    Most bond styles are part of the "molecular" package. They are only -enabled if LAMMPS was built with that package. See the Making -LAMMPS section for more info on packages. The -doc pages for individual bond potentials tell if it is part of a +

    Most bond styles are part of the MOLECULAR package. They are only +enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info on packages. +The doc pages for individual bond potentials tell if it is part of a package.

    Related commands: diff --git a/doc/bond_style.txt b/doc/bond_style.txt index 048c64b589..f89edc2963 100644 --- a/doc/bond_style.txt +++ b/doc/bond_style.txt @@ -80,7 +80,7 @@ specified by the associated "bond_coeff"_bond_coeff.html command: There are also additional bond styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the bond section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. :line @@ -89,10 +89,10 @@ page"_Section_commands.html#3_5. Bond styles can only be set for atom styles that allow bonds to be defined. -Most bond styles are part of the "molecular" package. They are only +Most bond styles are part of the MOLECULAR package. They are only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. The -doc pages for individual bond potentials tell if it is part of a +LAMMPS"_Section_start.html#start_3 section for more info on packages. +The doc pages for individual bond potentials tell if it is part of a package. [Related commands:] diff --git a/doc/bond_table.html b/doc/bond_table.html index 5e36198db7..29ec7bc948 100644 --- a/doc/bond_table.html +++ b/doc/bond_table.html @@ -121,7 +121,7 @@ one that matches the specified keyword.

    Restrictions:

    This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/bond_table.txt b/doc/bond_table.txt index 11fbd738bf..c02b71e866 100644 --- a/doc/bond_table.txt +++ b/doc/bond_table.txt @@ -118,8 +118,8 @@ one that matches the specified keyword. [Restrictions:] This bond style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/change_box.html b/doc/change_box.html index 0cc459a9f4..e258ec2337 100644 --- a/doc/change_box.html +++ b/doc/change_box.html @@ -28,7 +28,7 @@ change_box triclinic

    Description:

    By default LAMMPS runs a simulation in an orthogonal, axis-aligned -simulation box. LAMMPS can also run simulations in non-orthogonal +simulation box. LAMMPS can also run simulations in non-orthogonal (triclinic) simulation boxes. A box is defined as either orthogonal or non-orthogonal when it is created via the create_box, read_data, or @@ -37,9 +37,9 @@ the create_box, read_

    This command allows you to toggle the existing simulation box from orthogonal to non-orthogonal and vice versa. For example, an initial equilibration simulation can be run in an orthogonal box, the box can -be toggled to non-orthogonal, and then a non-equilibrium MD (NEMD) -simulation can be run with deformation via -the fix deform command. +be toggled to non-orthogonal, and then a non-equilibrium MD (NEMD) +simulation can be run with deformation +via the fix deform command.

    Note that if the simulation box is currently non-orthogonal and has non-zero tilt in xy, yz, or xz, then it cannot be converted to an diff --git a/doc/change_box.txt b/doc/change_box.txt index fc0ff37b2c..78c2c757d9 100644 --- a/doc/change_box.txt +++ b/doc/change_box.txt @@ -25,7 +25,7 @@ change_box triclinic :pre By default LAMMPS runs a simulation in an orthogonal, axis-aligned simulation box. LAMMPS can also run simulations in "non-orthogonal -(triclinic) simulation boxes"_Section_howto.html#4_12. A box is +(triclinic) simulation boxes"_Section_howto.html#howto_12. A box is defined as either orthogonal or non-orthogonal when it is created via the "create_box"_create_box.html, "read_data"_read_data.html, or "read_restart"_read_restart.html commands. @@ -34,8 +34,8 @@ This command allows you to toggle the existing simulation box from orthogonal to non-orthogonal and vice versa. For example, an initial equilibration simulation can be run in an orthogonal box, the box can be toggled to non-orthogonal, and then a "non-equilibrium MD (NEMD) -simulation"_Section_howto.html#4_13 can be run with deformation via -the "fix deform"_fix_deform.html command. +simulation"_Section_howto.html#howto_13 can be run with deformation +via the "fix deform"_fix_deform.html command. Note that if the simulation box is currently non-orthogonal and has non-zero tilt in xy, yz, or xz, then it cannot be converted to an diff --git a/doc/compute.html b/doc/compute.html index 9f5ed1945c..4e3d6ffee0 100644 --- a/doc/compute.html +++ b/doc/compute.html @@ -36,7 +36,7 @@ information about a previous state of the system. Defining a compute does not perform a computation. Instead computes are invoked by other LAMMPS commands as needed, e.g. to calculate a temperature needed for a thermostat fix or to generate thermodynamic or dump file output. -See this howto section for a summary of +See this howto section for a summary of various LAMMPS output options, many of which involve computes.

    The ID of a compute can only contain alphanumeric characters and @@ -217,13 +217,13 @@ available in LAMMPS:

    There are also additional compute styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the compute section of this +the individual styles are given in the compute section of this page.

    There are also additional accelerated compute styles included in the LAMMPS distribution for faster performance on CPUs and GPUs. The list of these with links to the individual styles are given in the pair -section of this page. +section of this page.

    Restrictions: none

    diff --git a/doc/compute.txt b/doc/compute.txt index 47a3ed8291..2c53f5f4e6 100644 --- a/doc/compute.txt +++ b/doc/compute.txt @@ -33,7 +33,7 @@ information about a previous state of the system. Defining a compute does not perform a computation. Instead computes are invoked by other LAMMPS commands as needed, e.g. to calculate a temperature needed for a thermostat fix or to generate thermodynamic or dump file output. -See this "howto section"_Section_howto.html#4_15 for a summary of +See this "howto section"_Section_howto.html#howto_15 for a summary of various LAMMPS output options, many of which involve computes. The ID of a compute can only contain alphanumeric characters and @@ -213,12 +213,12 @@ available in LAMMPS: There are also additional compute styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the compute section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. There are also additional accelerated compute styles included in the LAMMPS distribution for faster performance on CPUs and GPUs. The list of these with links to the individual styles are given in the pair -section of "this page"_Section_commands.html#3_5. +section of "this page"_Section_commands.html#cmd_5. [Restrictions:] none diff --git a/doc/compute_ackland_atom.html b/doc/compute_ackland_atom.html index c374f16e58..16ad975e88 100644 --- a/doc/compute_ackland_atom.html +++ b/doc/compute_ackland_atom.html @@ -51,17 +51,20 @@ which computes this quantity.-

    Output info:

    -

    This compute calculates a scalar quantity for each atom, which can be -accessed by any command that uses per-atom values from a compute as -input. See this section for an overview of -LAMMPS output options. +

    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 +this section for an overview of LAMMPS +output options.

    Restrictions:

    -

    This compute is part of the "user-misc" package. It is only enabled -if LAMMPS was built with that package. See the Making +

    This compute is part of the USER-MISC package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    +

    The per-atom vector values will be unitless since they are the +integers defined above. +

    Related commands:

    compute centro/atom diff --git a/doc/compute_ackland_atom.txt b/doc/compute_ackland_atom.txt index e50bdd3689..5a9dcebbad 100644 --- a/doc/compute_ackland_atom.txt +++ b/doc/compute_ackland_atom.txt @@ -48,16 +48,19 @@ which computes this quantity.- [Output info:] -This compute calculates a scalar quantity for each atom, which can be -accessed by any command that uses per-atom values from a compute as -input. See "this section"_Section_howto.html#4_15 for an overview of -LAMMPS output options. +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 +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS +output options. [Restrictions:] -This compute is part of the "user-misc" package. It is only enabled -if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This compute is part of the USER-MISC package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +The per-atom vector values will be unitless since they are the +integers defined above. [Related commands:] diff --git a/doc/compute_angle_local.html b/doc/compute_angle_local.html index 547bc7b862..772388db4c 100644 --- a/doc/compute_angle_local.html +++ b/doc/compute_angle_local.html @@ -67,7 +67,7 @@ array is the number of angles. If a single keyword is specified, a local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that -uses local values from a compute as input. See this +uses local values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_angle_local.txt b/doc/compute_angle_local.txt index 91cf1dcdf8..253a78e8fc 100644 --- a/doc/compute_angle_local.txt +++ b/doc/compute_angle_local.txt @@ -60,7 +60,7 @@ local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that uses local values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The output for {theta} will be in degrees. The output for {eng} will diff --git a/doc/compute_atom_molecule.html b/doc/compute_atom_molecule.html index 322679449d..d185c1e995 100644 --- a/doc/compute_atom_molecule.html +++ b/doc/compute_atom_molecule.html @@ -97,7 +97,7 @@ rows in the array is the number of molecules. If a single input is specified, a global vector is produced. If two or more inputs are specified, a global array is produced where the number of columns = the number of inputs. The vector or array can be accessed by any -command that uses global values from a compute as input. See this +command that uses global values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_atom_molecule.txt b/doc/compute_atom_molecule.txt index d348b82563..53d4d38890 100644 --- a/doc/compute_atom_molecule.txt +++ b/doc/compute_atom_molecule.txt @@ -90,7 +90,7 @@ specified, a global vector is produced. If two or more inputs are specified, a global array is produced where the number of columns = the number of inputs. The vector or array can be accessed by any command that uses global values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. All the vector or array values calculated by this compute are diff --git a/doc/compute_bond_local.html b/doc/compute_bond_local.html index 59e647cf35..67bb43353b 100644 --- a/doc/compute_bond_local.html +++ b/doc/compute_bond_local.html @@ -66,7 +66,7 @@ array is the number of bonds. If a single keyword is specified, a local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that -uses local values from a compute as input. See this +uses local values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_bond_local.txt b/doc/compute_bond_local.txt index a7801a66fb..92768b6a5d 100644 --- a/doc/compute_bond_local.txt +++ b/doc/compute_bond_local.txt @@ -59,7 +59,7 @@ local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that uses local values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The output for {dist} will be in distance "units"_units.html. The diff --git a/doc/compute_centro_atom.html b/doc/compute_centro_atom.html index caac6e53fb..63c0c2b95f 100644 --- a/doc/compute_centro_atom.html +++ b/doc/compute_centro_atom.html @@ -79,7 +79,7 @@ too frequently or to have multiple compute/dump commands, each with a

    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 -this section for an overview of LAMMPS +this section for an overview of LAMMPS output options.

    The per-atom vector values are unitless values >= 0.0. Their diff --git a/doc/compute_centro_atom.txt b/doc/compute_centro_atom.txt index ec9dc2060d..a5a83a0c32 100644 --- a/doc/compute_centro_atom.txt +++ b/doc/compute_centro_atom.txt @@ -75,7 +75,7 @@ too frequently or to have multiple compute/dump commands, each with a 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 -"this section"_Section_howto.html#4_15 for an overview of LAMMPS +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The per-atom vector values are unitless values >= 0.0. Their diff --git a/doc/compute_cluster_atom.html b/doc/compute_cluster_atom.html index 1cb85dad15..b2f7b49fdd 100644 --- a/doc/compute_cluster_atom.html +++ b/doc/compute_cluster_atom.html @@ -46,7 +46,7 @@ too frequently or to have multiple compute/dump commands, each of a

    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 -this section for an overview of LAMMPS +this section for an overview of LAMMPS output options.

    The per-atom vector values will be an ID > 0, as explained above. diff --git a/doc/compute_cluster_atom.txt b/doc/compute_cluster_atom.txt index 497417b4cd..3193331f91 100644 --- a/doc/compute_cluster_atom.txt +++ b/doc/compute_cluster_atom.txt @@ -43,7 +43,7 @@ too frequently or to have multiple compute/dump commands, each of a 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 -"this section"_Section_howto.html#4_15 for an overview of LAMMPS +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The per-atom vector values will be an ID > 0, as explained above. diff --git a/doc/compute_cna_atom.html b/doc/compute_cna_atom.html index 958c039127..7549fa7c6c 100644 --- a/doc/compute_cna_atom.html +++ b/doc/compute_cna_atom.html @@ -77,7 +77,7 @@ too frequently or to have multiple compute/dump commands, each with a

    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 -this section for an overview of LAMMPS +this section for an overview of LAMMPS output options.

    The per-atom vector values will be a number from 0 to 5, as explained diff --git a/doc/compute_cna_atom.txt b/doc/compute_cna_atom.txt index 8184597817..63afcf9a82 100644 --- a/doc/compute_cna_atom.txt +++ b/doc/compute_cna_atom.txt @@ -74,7 +74,7 @@ too frequently or to have multiple compute/dump commands, each with a 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 -"this section"_Section_howto.html#4_15 for an overview of LAMMPS +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The per-atom vector values will be a number from 0 to 5, as explained diff --git a/doc/compute_com.html b/doc/compute_com.html index 10b02794fc..b8bdb05531 100644 --- a/doc/compute_com.html +++ b/doc/compute_com.html @@ -52,8 +52,9 @@ file containing coordinates of the atoms in the bodies.

    This compute calculates a global vector of length 3, which can be accessed by indices 1-3 by any command that uses global vector values -from a compute as input. See this section -for an overview of LAMMPS output options. +from a compute as input. See this +section for an overview of LAMMPS output +options.

    The vector values are "intensive". The vector values will be in distance units. diff --git a/doc/compute_com.txt b/doc/compute_com.txt index 4b678ae011..43844dfd25 100644 --- a/doc/compute_com.txt +++ b/doc/compute_com.txt @@ -49,8 +49,9 @@ file"_dump.html containing coordinates of the atoms in the bodies. This compute calculates a global vector of length 3, which can be accessed by indices 1-3 by any command that uses global vector values -from a compute as input. See "this section"_Section_howto.html#4_15 -for an overview of LAMMPS output options. +from a compute as input. See "this +section"_Section_howto.html#howto_15 for an overview of LAMMPS output +options. The vector values are "intensive". The vector values will be in distance "units"_units.html. diff --git a/doc/compute_com_molecule.html b/doc/compute_com_molecule.html index 3f6ac13cb8..957b3feca8 100644 --- a/doc/compute_com_molecule.html +++ b/doc/compute_com_molecule.html @@ -64,7 +64,7 @@ file containing coordinates of the atoms in the bodies. Nmolecules and the number of columns = 3 for the x,y,z center-of-mass coordinates of each molecule. These values can be accessed by any command that uses global array values from a compute as input. See -this section for an overview of LAMMPS +this section for an overview of LAMMPS output options.

    The array values are "intensive". The array values will be in diff --git a/doc/compute_com_molecule.txt b/doc/compute_com_molecule.txt index 670c9117a8..accfd389cf 100644 --- a/doc/compute_com_molecule.txt +++ b/doc/compute_com_molecule.txt @@ -61,7 +61,7 @@ This compute calculates a global array where the number of rows = Nmolecules and the number of columns = 3 for the x,y,z center-of-mass coordinates of each molecule. These values can be accessed by any command that uses global array values from a compute as input. See -"this section"_Section_howto.html#4_15 for an overview of LAMMPS +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The array values are "intensive". The array values will be in diff --git a/doc/compute_coord_atom.html b/doc/compute_coord_atom.html index 6ab22c03b3..57738b4f3d 100644 --- a/doc/compute_coord_atom.html +++ b/doc/compute_coord_atom.html @@ -46,7 +46,7 @@ too frequently or to have multiple compute/dump commands, each of a

    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 -this section for an overview of LAMMPS +this section for an overview of LAMMPS output options.

    The per-atom vector values will be a number >= 0.0, as explained diff --git a/doc/compute_coord_atom.txt b/doc/compute_coord_atom.txt index bd9c471a78..fc5f2c9000 100644 --- a/doc/compute_coord_atom.txt +++ b/doc/compute_coord_atom.txt @@ -43,7 +43,7 @@ too frequently or to have multiple compute/dump commands, each of a 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 -"this section"_Section_howto.html#4_15 for an overview of LAMMPS +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The per-atom vector values will be a number >= 0.0, as explained diff --git a/doc/compute_damage_atom.html b/doc/compute_damage_atom.html index f943fe06de..b5e0d03d89 100644 --- a/doc/compute_damage_atom.html +++ b/doc/compute_damage_atom.html @@ -37,7 +37,7 @@ compute group.

    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 -this section for an overview of LAMMPS +this section for an overview of LAMMPS output options.

    The per-atom vector values will be a number >= 0.0, as explained @@ -45,8 +45,8 @@ above.

    Restrictions:

    -

    This compute is part of the "peri" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This compute is part of the PERI package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/compute_damage_atom.txt b/doc/compute_damage_atom.txt index 4a4b951cea..104cf22b54 100644 --- a/doc/compute_damage_atom.txt +++ b/doc/compute_damage_atom.txt @@ -34,7 +34,7 @@ compute group. 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 -"this section"_Section_howto.html#4_15 for an overview of LAMMPS +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The per-atom vector values will be a number >= 0.0, as explained @@ -42,9 +42,9 @@ above. [Restrictions:] -This compute is part of the "peri" package. It is only enabled if +This compute is part of the PERI package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/compute_dihedral_local.html b/doc/compute_dihedral_local.html index a5a122cb7f..e1f9cf13b7 100644 --- a/doc/compute_dihedral_local.html +++ b/doc/compute_dihedral_local.html @@ -60,7 +60,7 @@ array is the number of dihedrals. If a single keyword is specified, a local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that -uses local values from a compute as input. See this +uses local values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_dihedral_local.txt b/doc/compute_dihedral_local.txt index 405465a0e3..0bc32936f9 100644 --- a/doc/compute_dihedral_local.txt +++ b/doc/compute_dihedral_local.txt @@ -53,7 +53,7 @@ local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that uses local values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The output for {phi} will be in degrees. diff --git a/doc/compute_displace_atom.html b/doc/compute_displace_atom.html index e21919b5ee..79dae15622 100644 --- a/doc/compute_displace_atom.html +++ b/doc/compute_displace_atom.html @@ -76,8 +76,8 @@ file.

    This compute calculates a per-atom array with 4 columns, which can be accessed by indices 1-4 by any command that uses per-atom values from -a compute as input. See this section for an -overview of LAMMPS output options. +a compute as input. See this section +for an overview of LAMMPS output options.

    The per-atom array values will be in distance units.

    diff --git a/doc/compute_displace_atom.txt b/doc/compute_displace_atom.txt index 9cd35c4a23..ecbdf22b38 100644 --- a/doc/compute_displace_atom.txt +++ b/doc/compute_displace_atom.txt @@ -73,8 +73,8 @@ file. This compute calculates a per-atom array with 4 columns, which can be accessed by indices 1-4 by any command that uses per-atom values from -a compute as input. See "this section"_Section_howto.html#4_15 for an -overview of LAMMPS output options. +a compute as input. See "this section"_Section_howto.html#howto_15 +for an overview of LAMMPS output options. The per-atom array values will be in distance "units"_units.html. diff --git a/doc/compute_erotate_asphere.html b/doc/compute_erotate_asphere.html index 60317c200a..161aef27c2 100644 --- a/doc/compute_erotate_asphere.html +++ b/doc/compute_erotate_asphere.html @@ -25,31 +25,43 @@

    Description:

    Define a computation that calculates the rotational kinetic energy of -a group of aspherical particles. +a group of aspherical particles. The aspherical particles can be +ellipsoids, or line segments, or triangles. See the +atom_style and read_data commands +for descriptions of these options.

    -

    The rotational kinetic energy is computed as 1/2 I w^2, where I is the -inertia tensor for the aspherical particle and w is its angular -velocity, which is computed from its angular momentum. +

    For all 3 types of particles, the rotational kinetic energy is +computed as 1/2 I w^2, where I is the inertia tensor for the +aspherical particle and w is its angular velocity, which is computed +from its angular momentum if needed.

    -

    IMPORTANT NOTE: For 2d models, particles are treated -as ellipsoids, not ellipses, meaning their moments of inertia will be -the same as in 3d. +

    IMPORTANT NOTE: For 2d models, ellipsoidal particles +are treated as ellipsoids, not ellipses, meaning their moments of +inertia will be the same as in 3d.

    Output info:

    This compute calculates a global scalar (the KE). This value can be used by any command that uses a global scalar value from a compute as -input. See this section for an overview of -LAMMPS output options. +input. See this section for an overview +of LAMMPS output options.

    The scalar value calculated by this compute is "extensive". The scalar value will be in energy units.

    Restrictions:

    -

    This compute requires that atoms store a shape and quaternion -orientation and angular momentum as defined by the atom_style -ellipsoid command. +

    This compute requires that ellipsoidal particles atoms store a shape +and quaternion orientation and angular momentum as defined by the +atom_style ellipsoid command. +

    +

    This compute requires that line segment particles atoms store a length +and orientation and angular velocity as defined by the atom_style +line command. +

    +

    This compute requires that triangular particles atoms store a size and +shape and quaternion orientation and angular momentum as defined by +the atom_style tri command.

    All particles in the group must be finite-size. They cannot be point particles. diff --git a/doc/compute_erotate_asphere.txt b/doc/compute_erotate_asphere.txt index c71bee3f0d..39aded0ed7 100644 --- a/doc/compute_erotate_asphere.txt +++ b/doc/compute_erotate_asphere.txt @@ -22,31 +22,43 @@ compute 1 all erotate/asphere :pre [Description:] Define a computation that calculates the rotational kinetic energy of -a group of aspherical particles. +a group of aspherical particles. The aspherical particles can be +ellipsoids, or line segments, or triangles. See the +"atom_style"_atom_style.html and "read_data"_read_data.html commands +for descriptions of these options. -The rotational kinetic energy is computed as 1/2 I w^2, where I is the -inertia tensor for the aspherical particle and w is its angular -velocity, which is computed from its angular momentum. +For all 3 types of particles, the rotational kinetic energy is +computed as 1/2 I w^2, where I is the inertia tensor for the +aspherical particle and w is its angular velocity, which is computed +from its angular momentum if needed. -IMPORTANT NOTE: For "2d models"_dimension.html, particles are treated -as ellipsoids, not ellipses, meaning their moments of inertia will be -the same as in 3d. +IMPORTANT NOTE: For "2d models"_dimension.html, ellipsoidal particles +are treated as ellipsoids, not ellipses, meaning their moments of +inertia will be the same as in 3d. [Output info:] This compute calculates a global scalar (the KE). This value can be used by any command that uses a global scalar value from a compute as -input. See "this section"_Section_howto.html#4_15 for an overview of -LAMMPS output options. +input. See "this section"_Section_howto.html#howto_15 for an overview +of LAMMPS output options. The scalar value calculated by this compute is "extensive". The scalar value will be in energy "units"_units.html. [Restrictions:] -This compute requires that atoms store a shape and quaternion -orientation and angular momentum as defined by the "atom_style -ellipsoid"_atom_style.html command. +This compute requires that ellipsoidal particles atoms store a shape +and quaternion orientation and angular momentum as defined by the +"atom_style ellipsoid"_atom_style.html command. + +This compute requires that line segment particles atoms store a length +and orientation and angular velocity as defined by the "atom_style +line"_atom_style.html command. + +This compute requires that triangular particles atoms store a size and +shape and quaternion orientation and angular momentum as defined by +the "atom_style tri"_atom_style.html command. All particles in the group must be finite-size. They cannot be point particles. diff --git a/doc/compute_erotate_sphere.html b/doc/compute_erotate_sphere.html index 9a1468eb34..d9e328364c 100644 --- a/doc/compute_erotate_sphere.html +++ b/doc/compute_erotate_sphere.html @@ -38,8 +38,8 @@ same as in 3d.

    This compute calculates a global scalar (the KE). This value can be used by any command that uses a global scalar value from a compute as -input. See this section for an overview of -LAMMPS output options. +input. See this section for an overview +of LAMMPS output options.

    The scalar value calculated by this compute is "extensive". The scalar value will be in energy units. diff --git a/doc/compute_erotate_sphere.txt b/doc/compute_erotate_sphere.txt index 21c016b70b..7e480a2812 100644 --- a/doc/compute_erotate_sphere.txt +++ b/doc/compute_erotate_sphere.txt @@ -35,8 +35,8 @@ same as in 3d. This compute calculates a global scalar (the KE). This value can be used by any command that uses a global scalar value from a compute as -input. See "this section"_Section_howto.html#4_15 for an overview of -LAMMPS output options. +input. See "this section"_Section_howto.html#howto_15 for an overview +of LAMMPS output options. The scalar value calculated by this compute is "extensive". The scalar value will be in energy "units"_units.html. diff --git a/doc/compute_event_displace.html b/doc/compute_event_displace.html index 206ef664c0..ae63a96bb9 100644 --- a/doc/compute_event_displace.html +++ b/doc/compute_event_displace.html @@ -46,17 +46,17 @@ local atom displacements and may generate "false postives."

    This compute calculates a global scalar (the flag). This value can be used by any command that uses a global scalar value from a compute as -input. See this section for an overview of -LAMMPS output options. +input. See this section for an overview +of LAMMPS output options.

    The scalar value calculated by this compute is "intensive". The scalar value will be a 0 or 1 as explained above.

    Restrictions:

    -

    This command can only be used if LAMMPS was built with the "replica" -package. See the Making LAMMPS section for -more info on packages. +

    This command can only be used if LAMMPS was built with the REPLICA +package. See the Making LAMMPS section +for more info on packages.

    Related commands:

    diff --git a/doc/compute_event_displace.txt b/doc/compute_event_displace.txt index cf40ae7758..7b26d3120e 100644 --- a/doc/compute_event_displace.txt +++ b/doc/compute_event_displace.txt @@ -43,17 +43,17 @@ local atom displacements and may generate "false postives." This compute calculates a global scalar (the flag). This value can be used by any command that uses a global scalar value from a compute as -input. See "this section"_Section_howto.html#4_15 for an overview of -LAMMPS output options. +input. See "this section"_Section_howto.html#howto_15 for an overview +of LAMMPS output options. The scalar value calculated by this compute is "intensive". The scalar value will be a 0 or 1 as explained above. [Restrictions:] -This command can only be used if LAMMPS was built with the "replica" -package. See the "Making LAMMPS"_Section_start.html#2_3 section for -more info on packages. +This command can only be used if LAMMPS was built with the REPLICA +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. [Related commands:] diff --git a/doc/compute_group_group.html b/doc/compute_group_group.html index bb665ca6f7..bd1aacc412 100644 --- a/doc/compute_group_group.html +++ b/doc/compute_group_group.html @@ -44,7 +44,7 @@ quantity too frequently.

    This compute calculates a global scalar (the energy) and a global vector of length 3 (force), which can be accessed by indices 1-3. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_group_group.txt b/doc/compute_group_group.txt index 5a77bcd561..cb49e7558b 100644 --- a/doc/compute_group_group.txt +++ b/doc/compute_group_group.txt @@ -42,7 +42,7 @@ This compute calculates a global scalar (the energy) and a global vector of length 3 (force), which can be accessed by indices 1-3. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. Both the scalar and vector values calculated by this compute are diff --git a/doc/compute_gyration.html b/doc/compute_gyration.html index 65fb731169..1d8b8389cd 100644 --- a/doc/compute_gyration.html +++ b/doc/compute_gyration.html @@ -49,8 +49,8 @@ image command.

    This compute calculates a global scalar (Rg). This value can be used by any command that uses a global scalar value from a compute as -input. See this section for an overview of -LAMMPS output options. +input. See this section for an overview +of LAMMPS output options.

    The scalar value calculated by this compute is "intensive". The scalar value will be in distance units. diff --git a/doc/compute_gyration.txt b/doc/compute_gyration.txt index c3390ba5ac..867669d0a7 100644 --- a/doc/compute_gyration.txt +++ b/doc/compute_gyration.txt @@ -46,8 +46,8 @@ image"_set.html command. This compute calculates a global scalar (Rg). This value can be used by any command that uses a global scalar value from a compute as -input. See "this section"_Section_howto.html#4_15 for an overview of -LAMMPS output options. +input. See "this section"_Section_howto.html#howto_15 for an overview +of LAMMPS output options. The scalar value calculated by this compute is "intensive". The scalar value will be in distance "units"_units.html. diff --git a/doc/compute_gyration_molecule.html b/doc/compute_gyration_molecule.html index b8ad07e64c..f74218009f 100644 --- a/doc/compute_gyration_molecule.html +++ b/doc/compute_gyration_molecule.html @@ -62,7 +62,7 @@ image command.

    This compute calculates a global vector of Rg values where the length of the vector = Nmolecules. These values can be used by any command -that uses global vector values from a compute as input. See this +that uses global vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_gyration_molecule.txt b/doc/compute_gyration_molecule.txt index 52abb883c5..375e109326 100644 --- a/doc/compute_gyration_molecule.txt +++ b/doc/compute_gyration_molecule.txt @@ -60,7 +60,7 @@ image"_set.html command. This compute calculates a global vector of Rg values where the length of the vector = Nmolecules. These values can be used by any command that uses global vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The vector values calculated by this compute are "intensive". The diff --git a/doc/compute_heat_flux.html b/doc/compute_heat_flux.html index 84f8b28351..b56ce96f33 100644 --- a/doc/compute_heat_flux.html +++ b/doc/compute_heat_flux.html @@ -99,7 +99,7 @@ result should be: average conductivity ~0.29 in W/mK.

    This compute calculates a global vector of length 6 (total heat flux vector, followed by conductive heat flux vector), which can be accessed by indices 1-6. These values can be used by any command that -uses global vector values from a compute as input. See this +uses global vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_heat_flux.txt b/doc/compute_heat_flux.txt index ef4907cdd3..2d9816a066 100644 --- a/doc/compute_heat_flux.txt +++ b/doc/compute_heat_flux.txt @@ -97,7 +97,7 @@ This compute calculates a global vector of length 6 (total heat flux vector, followed by conductive heat flux vector), which can be accessed by indices 1-6. These values can be used by any command that uses global vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The vector values calculated by this compute are "extensive", meaning diff --git a/doc/compute_improper_local.html b/doc/compute_improper_local.html index ceb67530a4..cf529f222d 100644 --- a/doc/compute_improper_local.html +++ b/doc/compute_improper_local.html @@ -60,7 +60,7 @@ array is the number of impropers. If a single keyword is specified, a local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that -uses local values from a compute as input. See this +uses local values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_improper_local.txt b/doc/compute_improper_local.txt index 401e3b509d..c227cb2b85 100644 --- a/doc/compute_improper_local.txt +++ b/doc/compute_improper_local.txt @@ -53,7 +53,7 @@ local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that uses local values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The output for {chi} will be in degrees. diff --git a/doc/compute_ke.html b/doc/compute_ke.html index c974ab79bb..12769e0f55 100644 --- a/doc/compute_ke.html +++ b/doc/compute_ke.html @@ -47,8 +47,8 @@ include different degrees of freedom (translational, rotational, etc).

    This compute calculates a global scalar (the KE). This value can be used by any command that uses a global scalar value from a compute as -input. See this section for an overview of -LAMMPS output options. +input. See this section for an overview +of LAMMPS output options.

    The scalar value calculated by this compute is "extensive". The scalar value will be in energy units. diff --git a/doc/compute_ke.txt b/doc/compute_ke.txt index d9847cb506..003332c073 100644 --- a/doc/compute_ke.txt +++ b/doc/compute_ke.txt @@ -44,8 +44,8 @@ include different degrees of freedom (translational, rotational, etc). This compute calculates a global scalar (the KE). This value can be used by any command that uses a global scalar value from a compute as -input. See "this section"_Section_howto.html#4_15 for an overview of -LAMMPS output options. +input. See "this section"_Section_howto.html#howto_15 for an overview +of LAMMPS output options. The scalar value calculated by this compute is "extensive". The scalar value will be in energy "units"_units.html. diff --git a/doc/compute_ke_atom.html b/doc/compute_ke_atom.html index 6ad15d64da..434718e6a6 100644 --- a/doc/compute_ke_atom.html +++ b/doc/compute_ke_atom.html @@ -37,7 +37,7 @@ specified compute group.

    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 -this section for an overview of LAMMPS +this section for an overview of LAMMPS output options.

    The per-atom vector values will be in energy units. diff --git a/doc/compute_ke_atom.txt b/doc/compute_ke_atom.txt index 590ee3fae6..fd42651300 100644 --- a/doc/compute_ke_atom.txt +++ b/doc/compute_ke_atom.txt @@ -34,7 +34,7 @@ specified compute group. 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 -"this section"_Section_howto.html#4_15 for an overview of LAMMPS +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The per-atom vector values will be in energy "units"_units.html. diff --git a/doc/compute_ke_atom_eff.html b/doc/compute_ke_atom_eff.html index d665e62f39..19ffb3f77c 100644 --- a/doc/compute_ke_atom_eff.html +++ b/doc/compute_ke_atom_eff.html @@ -62,15 +62,15 @@ electrons) not in the specified compute group.

    This compute calculates a scalar quantity for each atom, which can be accessed by any command that uses per-atom computes as input. See -this section for an overview of LAMMPS +this section for an overview of LAMMPS output options.

    The per-atom vector values will be in energy units.

    Restrictions:

    -

    This compute is part of the "user-eff" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This compute is part of the USER-EFF package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/compute_ke_atom_eff.txt b/doc/compute_ke_atom_eff.txt index 3dd67d8b6d..00c32be622 100644 --- a/doc/compute_ke_atom_eff.txt +++ b/doc/compute_ke_atom_eff.txt @@ -59,16 +59,16 @@ electrons) not in the specified compute group. This compute calculates a scalar quantity for each atom, which can be accessed by any command that uses per-atom computes as input. See -"this section"_Section_howto.html#4_15 for an overview of LAMMPS +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The per-atom vector values will be in energy "units"_units.html. [Restrictions:] -This compute is part of the "user-eff" package. It is only enabled if +This compute is part of the USER-EFF package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/compute_ke_eff.html b/doc/compute_ke_eff.html index 5e12f747ac..2fa318f8a6 100644 --- a/doc/compute_ke_eff.html +++ b/doc/compute_ke_eff.html @@ -64,16 +64,16 @@ thermo_modify temp effTemp

    This compute calculates a global scalar (the KE). This value can be used by any command that uses a global scalar value from a compute as -input. See this section for an overview of -LAMMPS output options. +input. See this section for an overview +of LAMMPS output options.

    The scalar value calculated by this compute is "extensive". The scalar value will be in energy units.

    Restrictions:

    -

    This compute is part of the "user-eff" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This compute is part of the USER-EFF package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: none diff --git a/doc/compute_ke_eff.txt b/doc/compute_ke_eff.txt index 09001228ed..2ebe435dff 100644 --- a/doc/compute_ke_eff.txt +++ b/doc/compute_ke_eff.txt @@ -61,17 +61,17 @@ See "compute temp/eff"_compute_temp_eff.html. This compute calculates a global scalar (the KE). This value can be used by any command that uses a global scalar value from a compute as -input. See "this section"_Section_howto.html#4_15 for an overview of -LAMMPS output options. +input. See "this section"_Section_howto.html#howto_15 for an overview +of LAMMPS output options. The scalar value calculated by this compute is "extensive". The scalar value will be in energy "units"_units.html. [Restrictions:] -This compute is part of the "user-eff" package. It is only enabled if +This compute is part of the USER-EFF package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] none diff --git a/doc/compute_meso_e_atom.html b/doc/compute_meso_e_atom.html new file mode 100644 index 0000000000..69d903799b --- /dev/null +++ b/doc/compute_meso_e_atom.html @@ -0,0 +1,61 @@ + +

    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    compute meso_e/atom command +

    +

    Syntax: +

    +
    compute ID group-ID meso_e/atom 
    +
    +
    • ID, group-ID are documented in compute command +
    • meso_e/atom = style name of this compute command +
    +

    Examples: +

    +
    compute 1 all meso_e/atom 
    +
    +

    Description: +

    +

    Define a computation that calculates the per-atom internal energy +for each atom in a group. +

    +

    The internal energy is the energy associated with the internal degrees +of freedom of a mesoscopic particles, e.g. a Smooth-Particle +Hydrodynamics particle. +

    +

    See this PDF guide to using SPH in +LAMMPS. +

    +

    The value of the internal 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 +this section for an overview of LAMMPS +output options. +

    +

    The per-atom vector values will be in energy units. +

    +

    Restrictions: +

    +

    This compute is part of the USER-SPH package. It is only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Related commands: +

    +

    dump custom +

    +

    Default: none +

    + diff --git a/doc/compute_meso_e_atom.txt b/doc/compute_meso_e_atom.txt new file mode 100644 index 0000000000..b85115da49 --- /dev/null +++ b/doc/compute_meso_e_atom.txt @@ -0,0 +1,56 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +compute meso_e/atom command :h3 + +[Syntax:] + +compute ID group-ID meso_e/atom :pre + +ID, group-ID are documented in "compute"_compute.html command +meso_e/atom = style name of this compute command :ul + +[Examples:] + +compute 1 all meso_e/atom :pre + +[Description:] + +Define a computation that calculates the per-atom internal energy +for each atom in a group. + +The internal energy is the energy associated with the internal degrees +of freedom of a mesoscopic particles, e.g. a Smooth-Particle +Hydrodynamics particle. + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +The value of the internal 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 +"this section"_Section_howto.html#4_15 for an overview of LAMMPS +output options. + +The per-atom vector values will be in energy "units"_units.html. + +[Restrictions:] + +This compute is part of the USER-SPH package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"dump custom"_dump.html + +[Default:] none diff --git a/doc/compute_meso_rho_atom.html b/doc/compute_meso_rho_atom.html new file mode 100644 index 0000000000..202be3573c --- /dev/null +++ b/doc/compute_meso_rho_atom.html @@ -0,0 +1,61 @@ + +
    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    compute meso_rho/atom command +

    +

    Syntax: +

    +
    compute ID group-ID meso_rho/atom 
    +
    +
    • ID, group-ID are documented in compute command +
    • meso_rho/atom = style name of this compute command +
    +

    Examples: +

    +
    compute 1 all meso_rho/atom 
    +
    +

    Description: +

    +

    Define a computation that calculates the per-atom mesoscopic density +for each atom in a group. +

    +

    The mesoscopic density is the mass density of a mesoscopic particle, +calculated by kernel function interpolation using "pair style +sph/rhosum". +

    +

    See this PDF guide to using SPH in +LAMMPS. +

    +

    The value of the mesoscopic density 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 +this section for an overview of LAMMPS +output options. +

    +

    The per-atom vector values will be in mass/volume units. +

    +

    Restrictions: +

    +

    This compute is part of the USER-SPH package. It is only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Related commands: +

    +

    dump custom +

    +

    Default: none +

    + diff --git a/doc/compute_meso_rho_atom.txt b/doc/compute_meso_rho_atom.txt new file mode 100644 index 0000000000..c09581864d --- /dev/null +++ b/doc/compute_meso_rho_atom.txt @@ -0,0 +1,56 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +compute meso_rho/atom command :h3 + +[Syntax:] + +compute ID group-ID meso_rho/atom :pre + +ID, group-ID are documented in "compute"_compute.html command +meso_rho/atom = style name of this compute command :ul + +[Examples:] + +compute 1 all meso_rho/atom :pre + +[Description:] + +Define a computation that calculates the per-atom mesoscopic density +for each atom in a group. + +The mesoscopic density is the mass density of a mesoscopic particle, +calculated by kernel function interpolation using "pair style +sph/rhosum". + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +The value of the mesoscopic density 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 +"this section"_Section_howto.html#4_15 for an overview of LAMMPS +output options. + +The per-atom vector values will be in mass/volume "units"_units.html. + +[Restrictions:] + +This compute is part of the USER-SPH package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"dump custom"_dump.html + +[Default:] none diff --git a/doc/compute_meso_t_atom.html b/doc/compute_meso_t_atom.html new file mode 100644 index 0000000000..dc41ea8d3b --- /dev/null +++ b/doc/compute_meso_t_atom.html @@ -0,0 +1,63 @@ + +
    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    compute meso_t/atom command +

    +

    Syntax: +

    +
    compute ID group-ID meso_t/atom 
    +
    +
    • ID, group-ID are documented in compute command +
    • meso_t/atom = style name of this compute command +
    +

    Examples: +

    +
    compute 1 all meso_t/atom 
    +
    +

    Description: +

    +

    Define a computation that calculates the per-atom internal temperature +for each atom in a group. +

    +

    The internal temperature is the ratio of internal energy over the heat +capacity associated with the internal degrees of freedom of a mesoscopic +particles, e.g. a Smooth-Particle Hydrodynamics particle. +

    +

    T_int = E_int / C_V, int +

    +

    See this PDF guide to using SPH in +LAMMPS. +

    +

    The value of the internal 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 +this section for an overview of LAMMPS +output options. +

    +

    The per-atom vector values will be in temperature units. +

    +

    Restrictions: +

    +

    This compute is part of the USER-SPH package. It is only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Related commands: +

    +

    dump custom +

    +

    Default: none +

    + diff --git a/doc/compute_meso_t_atom.txt b/doc/compute_meso_t_atom.txt new file mode 100644 index 0000000000..1d1a3a12ae --- /dev/null +++ b/doc/compute_meso_t_atom.txt @@ -0,0 +1,58 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +compute meso_t/atom command :h3 + +[Syntax:] + +compute ID group-ID meso_t/atom :pre + +ID, group-ID are documented in "compute"_compute.html command +meso_t/atom = style name of this compute command :ul + +[Examples:] + +compute 1 all meso_t/atom :pre + +[Description:] + +Define a computation that calculates the per-atom internal temperature +for each atom in a group. + +The internal temperature is the ratio of internal energy over the heat +capacity associated with the internal degrees of freedom of a mesoscopic +particles, e.g. a Smooth-Particle Hydrodynamics particle. + +T_{int} = E_{int} / C_{V, int} + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +The value of the internal 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 +"this section"_Section_howto.html#4_15 for an overview of LAMMPS +output options. + +The per-atom vector values will be in temperature "units"_units.html. + +[Restrictions:] + +This compute is part of the USER-SPH package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"dump custom"_dump.html + +[Default:] none diff --git a/doc/compute_msd.html b/doc/compute_msd.html index fde408b9e4..7814701ffd 100644 --- a/doc/compute_msd.html +++ b/doc/compute_msd.html @@ -92,8 +92,9 @@ file.

    This compute calculates a global vector of length 4, which can be accessed by indices 1-4 by any command that uses global vector values -from a compute as input. See this section -for an overview of LAMMPS output options. +from a compute as input. See this +section for an overview of LAMMPS output +options.

    The vector values are "intensive". The vector values will be in distance^2 units. diff --git a/doc/compute_msd.txt b/doc/compute_msd.txt index 10bd9fecdc..e40a18b22f 100644 --- a/doc/compute_msd.txt +++ b/doc/compute_msd.txt @@ -84,8 +84,9 @@ file. This compute calculates a global vector of length 4, which can be accessed by indices 1-4 by any command that uses global vector values -from a compute as input. See "this section"_Section_howto.html#4_15 -for an overview of LAMMPS output options. +from a compute as input. See "this +section"_Section_howto.html#howto_15 for an overview of LAMMPS output +options. The vector values are "intensive". The vector values will be in distance^2 "units"_units.html. diff --git a/doc/compute_msd_molecule.html b/doc/compute_msd_molecule.html index f00536e0d1..2f30e14385 100644 --- a/doc/compute_msd_molecule.html +++ b/doc/compute_msd_molecule.html @@ -81,7 +81,7 @@ file.

    This compute calculates a global array where the number of rows = Nmolecules and the number of columns = 4 for dx,dy,dz and the total displacement. These values can be accessed by any command that uses -global array values from a compute as input. See this +global array values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_msd_molecule.txt b/doc/compute_msd_molecule.txt index d411a49d06..2b8bd93cf2 100644 --- a/doc/compute_msd_molecule.txt +++ b/doc/compute_msd_molecule.txt @@ -79,7 +79,7 @@ This compute calculates a global array where the number of rows = Nmolecules and the number of columns = 4 for dx,dy,dz and the total displacement. These values can be accessed by any command that uses global array values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The array values are "intensive". The array values will be in diff --git a/doc/compute_pair.html b/doc/compute_pair.html index b59204428f..b456d96ba6 100644 --- a/doc/compute_pair.html +++ b/doc/compute_pair.html @@ -62,8 +62,9 @@ are stored as a global vector by this compute. See the doc page for ecoul. If the pair style supports it, it also calculates a global vector of length >= 1, as determined by the pair style. These values can be used by any command that uses global scalar or vector values -from a compute as input. See this section -for an overview of LAMMPS output options. +from a compute as input. See this +section for an overview of LAMMPS output +options.

    The scalar and vector values calculated by this compute are "extensive". diff --git a/doc/compute_pair.txt b/doc/compute_pair.txt index c1144013da..d1662acfa5 100644 --- a/doc/compute_pair.txt +++ b/doc/compute_pair.txt @@ -59,8 +59,9 @@ This compute calculates a global scalar which is {epair} or {evdwl} or {ecoul}. If the pair style supports it, it also calculates a global vector of length >= 1, as determined by the pair style. These values can be used by any command that uses global scalar or vector values -from a compute as input. See "this section"_Section_howto.html#4_15 -for an overview of LAMMPS output options. +from a compute as input. See "this +section"_Section_howto.html#howto_15 for an overview of LAMMPS output +options. The scalar and vector values calculated by this compute are "extensive". diff --git a/doc/compute_pair_local.html b/doc/compute_pair_local.html index f6bea11cea..49a9d3780d 100644 --- a/doc/compute_pair_local.html +++ b/doc/compute_pair_local.html @@ -80,7 +80,7 @@ array is the number of pairs. If a single keyword is specified, a local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that -uses local values from a compute as input. See this +uses local values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_pair_local.txt b/doc/compute_pair_local.txt index 0659e80821..7f9f0cb4e9 100644 --- a/doc/compute_pair_local.txt +++ b/doc/compute_pair_local.txt @@ -73,7 +73,7 @@ local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that uses local values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The output for {dist} will be in distance "units"_units.html. The diff --git a/doc/compute_pe.html b/doc/compute_pe.html index b970a70c5e..96a25eb42a 100644 --- a/doc/compute_pe.html +++ b/doc/compute_pe.html @@ -65,14 +65,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

    These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -83,8 +83,8 @@ instructions on how to use the accelerated styles effectively.

    This compute calculates a global scalar (the potential energy). This value can be used by any command that uses a global scalar value from -a compute as input. See this section for an -overview of LAMMPS output options. +a compute as input. See this section +for an overview of LAMMPS output options.

    The scalar value calculated by this compute is "extensive". The scalar value will be in energy units. diff --git a/doc/compute_pe.txt b/doc/compute_pe.txt index d013bd8c28..46d54268e1 100644 --- a/doc/compute_pe.txt +++ b/doc/compute_pe.txt @@ -61,14 +61,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -79,8 +79,8 @@ instructions on how to use the accelerated styles effectively. This compute calculates a global scalar (the potential energy). This value can be used by any command that uses a global scalar value from -a compute as input. See "this section"_Section_howto.html#4_15 for an -overview of LAMMPS output options. +a compute as input. See "this section"_Section_howto.html#howto_15 +for an overview of LAMMPS output options. The scalar value calculated by this compute is "extensive". The scalar value will be in energy "units"_units.html. diff --git a/doc/compute_pe_atom.html b/doc/compute_pe_atom.html index 31d0eef2d5..af5f158fc7 100644 --- a/doc/compute_pe_atom.html +++ b/doc/compute_pe_atom.html @@ -70,7 +70,7 @@ the system energy.

    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 -this section for an overview of LAMMPS +this section for an overview of LAMMPS output options.

    The per-atom vector values will be in energy units. diff --git a/doc/compute_pe_atom.txt b/doc/compute_pe_atom.txt index e9d879aa1a..c71dceec48 100644 --- a/doc/compute_pe_atom.txt +++ b/doc/compute_pe_atom.txt @@ -67,7 +67,7 @@ the system energy. 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 -"this section"_Section_howto.html#4_15 for an overview of LAMMPS +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The per-atom vector values will be in energy "units"_units.html. diff --git a/doc/compute_pressure.html b/doc/compute_pressure.html index 9447911a96..53cc3132cb 100644 --- a/doc/compute_pressure.html +++ b/doc/compute_pressure.html @@ -95,14 +95,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

    These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -114,7 +114,7 @@ instructions on how to use the accelerated styles effectively.

    This compute calculates a global scalar (the pressure) and a global vector of length 6 (pressure tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar -or vector values from a compute as input. See this +or vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_pressure.txt b/doc/compute_pressure.txt index f9ee304375..28d77dd17d 100644 --- a/doc/compute_pressure.txt +++ b/doc/compute_pressure.txt @@ -91,14 +91,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -111,7 +111,7 @@ This compute calculates a global scalar (the pressure) and a global vector of length 6 (pressure tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar and vector values calculated by this compute are diff --git a/doc/compute_property_atom.html b/doc/compute_property_atom.html index b90cfafb02..3adf2535dc 100644 --- a/doc/compute_property_atom.html +++ b/doc/compute_property_atom.html @@ -29,7 +29,11 @@ angmomx, angmomy, angmomz, shapex,shapey, shapez, quatw, quati, quatj, quatk, tqx, tqy, tqz, - spin, eradius, ervel, erforce + spin, eradius, ervel, erforce + end1x, end1y, end1z, end2x, end2y, end2z, + corner1x, corner1y, corner1z, + corner2x, corner2y, corner2z, + corner3x, corner3y, corner3z
          id = atom ID
           mol = molecule ID
    @@ -47,13 +51,15 @@
           radius,diameter = radius,diameter of spherical particle
           omegax,omegay,omegaz = angular velocity of extended particle
           angmomx,angmomy,angmomz = angular momentum of extended particle
    +      shapex,shapey,shapez = 3 diameters of aspherical particle
    +      quatw,quati,quatj,quatk = quaternion components for aspherical particles
           tqx,tqy,tqz = torque on extended particles
           spin = electron spin
           eradius = electron radius
           ervel = electron radial velocity
           erforce = electron radial force
    -      shapex,shapey,shapez = 3 diameters of aspherical particle
    -      quatw,quati,quatj,quatk = quaternion components for aspherical particles 
    +      end12x, end12y, end12z = end points of line segment
    +      coner123x, corner123y, corner123z = corner points of triangle 
     
    @@ -67,7 +73,7 @@ compute 1 all property/atom ix iy iz

    Define a computation that simply stores atom attributes for each atom in the group. This is useful so that the values can be used by other -output commands that take computes as +output commands that take computes as inputs. See for example, the compute reduce, fix ave/atom, fix ave/histo, fix ave/spatial, and atom-style @@ -79,12 +85,13 @@ additional quantities that are only defined for certain dump custom command are as follows. +

    The additional quantities only accessible via this command, and not +directly via the dump custom command, are as follows.

    Shapex, shapey, and shapez are defined for ellipsoidal particles and define the 3d shape of each particle. Quatw, quati, quatj, @@ -93,6 +100,13 @@ and quatk are also defined for ellipsoidal particles and store the See the set command for an explanation of the quaternion vector.

    +

    End1x, end1y, end1z, end2x, end2y, end2z, are defined for +line segment particles and define the end points of each line segment. +

    +

    Corner1x, corner1y, corner1z, corner2x, corner2y, +corner2z, corner3x, corner3y, corner3z, are defined for +triangular particles and define the corner points of each triangle. +

    Output info:

    This compute calculates a per-atom vector or per-atom array depending @@ -100,7 +114,7 @@ on the number of input values. If a single input is specified, a per-atom vector is produced. If two or more inputs are specified, a per-atom array is produced where the number of columns = the number of inputs. The vector or array can be accessed by any command that uses -per-atom values from a compute as input. See this +per-atom values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_property_atom.txt b/doc/compute_property_atom.txt index 60972bce46..500ca25df4 100644 --- a/doc/compute_property_atom.txt +++ b/doc/compute_property_atom.txt @@ -23,8 +23,11 @@ input = one or more atom attributes :l angmomx, angmomy, angmomz, shapex,shapey, shapez, quatw, quati, quatj, quatk, tqx, tqy, tqz, - spin, eradius, ervel, erforce :pre - + spin, eradius, ervel, erforce + end1x, end1y, end1z, end2x, end2y, end2z, + corner1x, corner1y, corner1z, + corner2x, corner2y, corner2z, + corner3x, corner3y, corner3z :pre id = atom ID mol = molecule ID type = atom type @@ -41,13 +44,15 @@ input = one or more atom attributes :l radius,diameter = radius,diameter of spherical particle omegax,omegay,omegaz = angular velocity of extended particle angmomx,angmomy,angmomz = angular momentum of extended particle + shapex,shapey,shapez = 3 diameters of aspherical particle + quatw,quati,quatj,quatk = quaternion components for aspherical particles tqx,tqy,tqz = torque on extended particles spin = electron spin eradius = electron radius ervel = electron radial velocity erforce = electron radial force - shapex,shapey,shapez = 3 diameters of aspherical particle - quatw,quati,quatj,quatk = quaternion components for aspherical particles :pre + end12x, end12y, end12z = end points of line segment + coner123x, corner123y, corner123z = corner points of triangle :pre :ule [Examples:] @@ -60,7 +65,7 @@ compute 1 all property/atom ix iy iz :pre Define a computation that simply stores atom attributes for each atom in the group. This is useful so that the values can be used by other -"output commands"_Section_howto.html#4_15 that take computes as +"output commands"_Section_howto.html#howto_15 that take computes as inputs. See for example, the "compute reduce"_compute_reduce.html, "fix ave/atom"_fix_ave_atom.html, "fix ave/histo"_fix_ave_histo.html, "fix ave/spatial"_fix_ave_spatial.html, and "atom-style @@ -72,12 +77,13 @@ additional quantities that are only defined for certain "atom styles"_atom_style.html. Basically, this list gives your input script access to any per-atom quantity stored by LAMMPS. -The values are stored in a per-atom vector or array as -discussed below. Zeroes are stored for atoms not in the specified -group. +The values are stored in a per-atom vector or array as discussed +below. Zeroes are stored for atoms not in the specified group or for +quantities that are not defined for a particular particle in the group +(e.g. {shapex} if the particle is not an ellipsoid). -The additional quantities only accessible via this command (and not -directly via the "dump custom"_dump.html command are as follows. +The additional quantities only accessible via this command, and not +directly via the "dump custom"_dump.html command, are as follows. {Shapex}, {shapey}, and {shapez} are defined for ellipsoidal particles and define the 3d shape of each particle. {Quatw}, {quati}, {quatj}, @@ -86,6 +92,13 @@ and {quatk} are also defined for ellipsoidal particles and store the See the "set"_set.html command for an explanation of the quaternion vector. +{End1x}, {end1y}, {end1z}, {end2x}, {end2y}, {end2z}, are defined for +line segment particles and define the end points of each line segment. + +{Corner1x}, {corner1y}, {corner1z}, {corner2x}, {corner2y}, +{corner2z}, {corner3x}, {corner3y}, {corner3z}, are defined for +triangular particles and define the corner points of each triangle. + [Output info:] This compute calculates a per-atom vector or per-atom array depending @@ -94,7 +107,7 @@ per-atom vector is produced. If two or more inputs are specified, a per-atom array is produced where the number of columns = the number of inputs. The vector or array can be accessed by any command that uses per-atom values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The vector or array values will be in whatever "units"_units.html the diff --git a/doc/compute_property_local.html b/doc/compute_property_local.html index 546ff6ff54..f7c1a32b1c 100644 --- a/doc/compute_property_local.html +++ b/doc/compute_property_local.html @@ -49,9 +49,9 @@ compute 1 all property/local atype aatom2

    Description:

    Define a computation that stores the specified attributes as local -data so it can be accessed by other output -commands. If the input attributes refer to -bond information, then the number of datums generated, aggregated +data so it can be accessed by other output +commands. If the input attributes refer +to bond information, then the number of datums generated, aggregated across all processors, equals the number of bonds in the system. Ditto for pairs, angles, etc.

    @@ -119,7 +119,7 @@ the array is the number of bonds, angles, etc. If a single input is specified, a local vector is produced. If two or more inputs are specified, a local array is produced where the number of columns = the number of inputs. The vector or array can be accessed by any command -that uses local values from a compute as input. See this +that uses local values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_property_local.txt b/doc/compute_property_local.txt index 1f3726b43b..33da51c08e 100644 --- a/doc/compute_property_local.txt +++ b/doc/compute_property_local.txt @@ -43,8 +43,8 @@ compute 1 all property/local atype aatom2 :pre Define a computation that stores the specified attributes as local data so it can be accessed by other "output -commands"_Section_howto.html#4_15. If the input attributes refer to -bond information, then the number of datums generated, aggregated +commands"_Section_howto.html#howto_15. If the input attributes refer +to bond information, then the number of datums generated, aggregated across all processors, equals the number of bonds in the system. Ditto for pairs, angles, etc. @@ -113,7 +113,7 @@ specified, a local vector is produced. If two or more inputs are specified, a local array is produced where the number of columns = the number of inputs. The vector or array can be accessed by any command that uses local values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The vector or array values will be integers that correspond to the diff --git a/doc/compute_property_molecule.html b/doc/compute_property_molecule.html index fdb07af960..55cc4955a3 100644 --- a/doc/compute_property_molecule.html +++ b/doc/compute_property_molecule.html @@ -34,9 +34,9 @@

    Description:

    Define a computation that stores the specified attributes as global -data so it can be accessed by other output -commands and used in conjunction with other -commands that generate per-molecule data, such as compute +data so it can be accessed by other output +commands and used in conjunction with +other commands that generate per-molecule data, such as compute com/molecule and compute msd/molecule.

    @@ -61,7 +61,7 @@ rows in the array is the number of molecules. If a single input is specified, a global vector is produced. If two or more inputs are specified, a global array is produced where the number of columns = the number of inputs. The vector or array can be accessed by any -command that uses global values from a compute as input. See this +command that uses global values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_property_molecule.txt b/doc/compute_property_molecule.txt index 540dab079c..c2a4cb0d8e 100644 --- a/doc/compute_property_molecule.txt +++ b/doc/compute_property_molecule.txt @@ -28,8 +28,8 @@ compute 1 all property/molecule mol :pre Define a computation that stores the specified attributes as global data so it can be accessed by other "output -commands"_Section_howto.html#4_15 and used in conjunction with other -commands that generate per-molecule data, such as "compute +commands"_Section_howto.html#howto_15 and used in conjunction with +other commands that generate per-molecule data, such as "compute com/molecule"_compute_com_molecule.html and "compute msd/molecule"_compute_msd_molecule.html. @@ -55,7 +55,7 @@ specified, a global vector is produced. If two or more inputs are specified, a global array is produced where the number of columns = the number of inputs. The vector or array can be accessed by any command that uses global values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The vector or array values will be integers that correspond to the diff --git a/doc/compute_rdf.html b/doc/compute_rdf.html index dd93bfd8f2..ae66e375bc 100644 --- a/doc/compute_rdf.html +++ b/doc/compute_rdf.html @@ -104,7 +104,7 @@ coordinate (center of the bin), Each successive set of 2 columns has the g(r) and coord(r) values for a specific set of itypeN versus jtypeN interactions, as described above. These values can be used by any command that uses a global values from a compute as input. See -this section for an overview of LAMMPS +this section for an overview of LAMMPS output options.

    The array values calculated by this compute are all "intensive". diff --git a/doc/compute_rdf.txt b/doc/compute_rdf.txt index a4ddf137d7..83e835ff3c 100644 --- a/doc/compute_rdf.txt +++ b/doc/compute_rdf.txt @@ -101,7 +101,7 @@ coordinate (center of the bin), Each successive set of 2 columns has the g(r) and coord(r) values for a specific set of {itypeN} versus {jtypeN} interactions, as described above. These values can be used by any command that uses a global values from a compute as input. See -"this section"_Section_howto.html#4_15 for an overview of LAMMPS +"this section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The array values calculated by this compute are all "intensive". diff --git a/doc/compute_reduce.html b/doc/compute_reduce.html index d0f6b2505b..f5533307e5 100644 --- a/doc/compute_reduce.html +++ b/doc/compute_reduce.html @@ -173,8 +173,8 @@ divides by the appropriate atom count. specified or a global vector of length N where N is the number of inputs, and which can be accessed by indices 1 to N. These values can be used by any command that uses global scalar or vector values from a -compute as input. See this section for an -overview of LAMMPS output options. +compute as input. See this section for +an overview of LAMMPS output options.

    All the scalar or vector values calculated by this compute are "intensive", except when the sum mode is used on per-atom or local diff --git a/doc/compute_reduce.txt b/doc/compute_reduce.txt index 043e79fd59..135f83eefe 100644 --- a/doc/compute_reduce.txt +++ b/doc/compute_reduce.txt @@ -160,8 +160,8 @@ This compute calculates a global scalar if a single input value is specified or a global vector of length N where N is the number of inputs, and which can be accessed by indices 1 to N. These values can be used by any command that uses global scalar or vector values from a -compute as input. See "this section"_Section_howto.html#4_15 for an -overview of LAMMPS output options. +compute as input. See "this section"_Section_howto.html#howto_15 for +an overview of LAMMPS output options. All the scalar or vector values calculated by this compute are "intensive", except when the {sum} mode is used on per-atom or local diff --git a/doc/compute_slice.html b/doc/compute_slice.html index 0519c5be15..a48710c249 100644 --- a/doc/compute_slice.html +++ b/doc/compute_slice.html @@ -94,7 +94,7 @@ specified or a global array with N columns where N is the number of inputs. The length of the vector or the number of rows in the array is equal to the number of values extracted from each input vector. These values can be used by any command that uses global vector or -array values from a compute as input. See this +array values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_slice.txt b/doc/compute_slice.txt index 14e5e42f8a..fea181dd2d 100644 --- a/doc/compute_slice.txt +++ b/doc/compute_slice.txt @@ -85,7 +85,7 @@ inputs. The length of the vector or the number of rows in the array is equal to the number of values extracted from each input vector. These values can be used by any command that uses global vector or array values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The vector or array values calculated by this compute are simply diff --git a/doc/compute_stress_atom.html b/doc/compute_stress_atom.html index c85d572fce..f39d75300f 100644 --- a/doc/compute_stress_atom.html +++ b/doc/compute_stress_atom.html @@ -102,8 +102,8 @@ contribution can easily be computed.

    This compute calculates a per-atom array with 6 columns, which can be accessed by indices 1-6 by any command that uses per-atom values from -a compute as input. See this section for an -overview of LAMMPS output options. +a compute as input. See this section +for an overview of LAMMPS output options.

    The per-atom array values will be in pressure*volume units as discussed above. diff --git a/doc/compute_stress_atom.txt b/doc/compute_stress_atom.txt index d055334842..f8d073397f 100644 --- a/doc/compute_stress_atom.txt +++ b/doc/compute_stress_atom.txt @@ -99,8 +99,8 @@ contribution can easily be computed. This compute calculates a per-atom array with 6 columns, which can be accessed by indices 1-6 by any command that uses per-atom values from -a compute as input. See "this section"_Section_howto.html#4_15 for an -overview of LAMMPS output options. +a compute as input. See "this section"_Section_howto.html#howto_15 +for an overview of LAMMPS output options. The per-atom array values will be in pressure*volume "units"_units.html as discussed above. diff --git a/doc/compute_temp.html b/doc/compute_temp.html index f5ddf4e3d3..6005da58da 100644 --- a/doc/compute_temp.html +++ b/doc/compute_temp.html @@ -62,8 +62,8 @@ LAMMPS starts up, as if this command were in the input script:

    See the "thermo_style" command for more details.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.


    @@ -75,14 +75,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

    These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -94,7 +94,7 @@ instructions on how to use the accelerated styles effectively.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_temp.txt b/doc/compute_temp.txt index 1898016f0f..7915e86835 100644 --- a/doc/compute_temp.txt +++ b/doc/compute_temp.txt @@ -58,8 +58,8 @@ compute thermo_temp all temp :pre See the "thermo_style" command for more details. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. :line @@ -71,14 +71,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -91,7 +91,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The diff --git a/doc/compute_temp_asphere.html b/doc/compute_temp_asphere.html index daaad528a9..59b32f6951 100644 --- a/doc/compute_temp_asphere.html +++ b/doc/compute_temp_asphere.html @@ -96,8 +96,8 @@ computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the extra option of the compute_modify command.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.


    @@ -125,7 +125,7 @@ rotational degrees of freedom.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    @@ -137,8 +137,8 @@ vector values will be in energy units.

    Restrictions:

    -

    This compute is part of the "asphere" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This compute is part of the ASPHERE package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    This compute requires that atoms store angular momementum and a diff --git a/doc/compute_temp_asphere.txt b/doc/compute_temp_asphere.txt index cdd8870981..019c1f72c7 100755 --- a/doc/compute_temp_asphere.txt +++ b/doc/compute_temp_asphere.txt @@ -88,8 +88,8 @@ computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the {extra} option of the "compute_modify"_compute_modify.html command. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. :line @@ -118,7 +118,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The @@ -129,9 +129,9 @@ vector values will be in energy "units"_units.html. [Restrictions:] -This compute is part of the "asphere" package. It is only enabled if +This compute is part of the ASPHERE package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. This compute requires that atoms store angular momementum and a quaternion as defined by the "atom_style ellipsoid"_atom_style.html diff --git a/doc/compute_temp_com.html b/doc/compute_temp_com.html index d55c85a074..5635c606d3 100644 --- a/doc/compute_temp_com.html +++ b/doc/compute_temp_com.html @@ -68,8 +68,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the extra option of the compute_modify command.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.

    Output info: @@ -77,7 +77,7 @@ thermostatting.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_temp_com.txt b/doc/compute_temp_com.txt index 80cc4ea737..c7cc5ec4e2 100644 --- a/doc/compute_temp_com.txt +++ b/doc/compute_temp_com.txt @@ -65,8 +65,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the {extra} option of the "compute_modify"_compute_modify.html command. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. [Output info:] @@ -75,7 +75,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The diff --git a/doc/compute_temp_deform.html b/doc/compute_temp_deform.html index 31ba8d6776..def9a12187 100644 --- a/doc/compute_temp_deform.html +++ b/doc/compute_temp_deform.html @@ -92,8 +92,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the extra option of the compute_modify command.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.

    Output info: @@ -101,7 +101,7 @@ thermostatting.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_temp_deform.txt b/doc/compute_temp_deform.txt index 26703f1d02..02b7ca3c22 100644 --- a/doc/compute_temp_deform.txt +++ b/doc/compute_temp_deform.txt @@ -89,8 +89,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the {extra} option of the "compute_modify"_compute_modify.html command. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. [Output info:] @@ -99,7 +99,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The diff --git a/doc/compute_temp_deform_eff.html b/doc/compute_temp_deform_eff.html index 90dcd7c767..6331c8e915 100644 --- a/doc/compute_temp_deform_eff.html +++ b/doc/compute_temp_deform_eff.html @@ -51,7 +51,7 @@ component of the electrons is not affected.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    @@ -63,8 +63,8 @@ vector values will be in energy units.

    Restrictions:

    -

    This compute is part of the "user-eff" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This compute is part of the USER-EFF package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/compute_temp_deform_eff.txt b/doc/compute_temp_deform_eff.txt index 4ae48a79f2..199fa5fdc4 100644 --- a/doc/compute_temp_deform_eff.txt +++ b/doc/compute_temp_deform_eff.txt @@ -49,7 +49,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The @@ -60,9 +60,9 @@ vector values will be in energy "units"_units.html. [Restrictions:] -This compute is part of the "user-eff" package. It is only enabled if +This compute is part of the USER-EFF package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/compute_temp_eff.html b/doc/compute_temp_eff.html index 466ed3bd4b..3cc20e9db7 100644 --- a/doc/compute_temp_eff.html +++ b/doc/compute_temp_eff.html @@ -72,8 +72,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the extra option of the compute_modify command.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.

    Output info: @@ -85,8 +85,8 @@ the simulation.

    Restrictions:

    -

    This compute is part of the "user-eff" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This compute is part of the USER-EFF package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/compute_temp_eff.txt b/doc/compute_temp_eff.txt index cb9b274dfa..194aaa3c7b 100644 --- a/doc/compute_temp_eff.txt +++ b/doc/compute_temp_eff.txt @@ -69,8 +69,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the {extra} option of the "compute_modify"_compute_modify.html command. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. [Output info:] @@ -82,9 +82,9 @@ the simulation. [Restrictions:] -This compute is part of the "user-eff" package. It is only enabled if +This compute is part of the USER-EFF package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/compute_temp_partial.html b/doc/compute_temp_partial.html index 55c2a57bd4..c076a2be52 100644 --- a/doc/compute_temp_partial.html +++ b/doc/compute_temp_partial.html @@ -70,8 +70,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the extra option of the compute_modify command.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.


    @@ -83,14 +83,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

    These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -102,7 +102,7 @@ instructions on how to use the accelerated styles effectively.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_temp_partial.txt b/doc/compute_temp_partial.txt index f4b01f03ed..ab5d42f9d0 100644 --- a/doc/compute_temp_partial.txt +++ b/doc/compute_temp_partial.txt @@ -66,8 +66,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the {extra} option of the "compute_modify"_compute_modify.html command. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. :line @@ -79,14 +79,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -99,7 +99,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The diff --git a/doc/compute_temp_profile.html b/doc/compute_temp_profile.html index 242674a005..52a9f67dfd 100644 --- a/doc/compute_temp_profile.html +++ b/doc/compute_temp_profile.html @@ -106,8 +106,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the extra option of the compute_modify command.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting. Using this compute in conjunction with a thermostatting fix, as explained there, will effectively implement a profile-unbiased thermostat (PUT), as described in (Evans). @@ -117,7 +117,7 @@ profile-unbiased thermostat (PUT), as described in (Evans)This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_temp_profile.txt b/doc/compute_temp_profile.txt index bf2d921287..8eaae69483 100644 --- a/doc/compute_temp_profile.txt +++ b/doc/compute_temp_profile.txt @@ -98,8 +98,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the {extra} option of the "compute_modify"_compute_modify.html command. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. Using this compute in conjunction with a thermostatting fix, as explained there, will effectively implement a profile-unbiased thermostat (PUT), as described in "(Evans)"_#Evans. @@ -110,7 +110,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The diff --git a/doc/compute_temp_ramp.html b/doc/compute_temp_ramp.html index fa8b6b0ecf..686ad9cd61 100644 --- a/doc/compute_temp_ramp.html +++ b/doc/compute_temp_ramp.html @@ -87,8 +87,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the extra option of the compute_modify command.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.

    Output info: @@ -96,7 +96,7 @@ thermostatting.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_temp_ramp.txt b/doc/compute_temp_ramp.txt index 4f1ccc5963..bc9283469c 100644 --- a/doc/compute_temp_ramp.txt +++ b/doc/compute_temp_ramp.txt @@ -83,8 +83,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the {extra} option of the "compute_modify"_compute_modify.html command. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. [Output info:] @@ -93,7 +93,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The diff --git a/doc/compute_temp_region.html b/doc/compute_temp_region.html index 260dd408b4..62f57cacac 100644 --- a/doc/compute_temp_region.html +++ b/doc/compute_temp_region.html @@ -79,8 +79,8 @@ constrain molecular motion, such as fix shake and degrees-of-freedom can be altered using the extra option of the compute_modify command.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.

    Output info: @@ -88,7 +88,7 @@ thermostatting.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_temp_region.txt b/doc/compute_temp_region.txt index 0733eb7a41..c617eeb7a6 100644 --- a/doc/compute_temp_region.txt +++ b/doc/compute_temp_region.txt @@ -76,8 +76,8 @@ constrain molecular motion, such as "fix shake"_fix_shake.html and degrees-of-freedom can be altered using the {extra} option of the "compute_modify"_compute_modify.html command. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. [Output info:] @@ -86,7 +86,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The diff --git a/doc/compute_temp_region_eff.html b/doc/compute_temp_region_eff.html index a4d7d37b3a..e4e84b9e8c 100644 --- a/doc/compute_temp_region_eff.html +++ b/doc/compute_temp_region_eff.html @@ -42,7 +42,7 @@ temp/eff command.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    @@ -54,8 +54,8 @@ vector values will be in energy units.

    Restrictions:

    -

    This compute is part of the "user-eff" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This compute is part of the USER-EFF package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/compute_temp_region_eff.txt b/doc/compute_temp_region_eff.txt index 72585eb694..8baf2dd46c 100644 --- a/doc/compute_temp_region_eff.txt +++ b/doc/compute_temp_region_eff.txt @@ -40,7 +40,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The @@ -51,9 +51,9 @@ vector values will be in energy "units"_units.html. [Restrictions:] -This compute is part of the "user-eff" package. It is only enabled if +This compute is part of the USER-EFF package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/compute_temp_rotate.html b/doc/compute_temp_rotate.html index af0e10ce6a..cbd3a31042 100644 --- a/doc/compute_temp_rotate.html +++ b/doc/compute_temp_rotate.html @@ -67,8 +67,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the extra option of the compute_modify command.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.

    Output info: @@ -76,7 +76,7 @@ thermostatting.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    @@ -88,8 +88,8 @@ vector values will be in energy units.

    Restrictions:

    -

    This compute is part of the "user-misc" package. It is only enabled -if LAMMPS was built with that package. See the Making +

    This compute is part of the USER-MISC package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/compute_temp_rotate.txt b/doc/compute_temp_rotate.txt index ab38031c26..34feca7b6f 100644 --- a/doc/compute_temp_rotate.txt +++ b/doc/compute_temp_rotate.txt @@ -64,8 +64,8 @@ atoms that include these constraints will be computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the {extra} option of the "compute_modify"_compute_modify.html command. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. [Output info:] @@ -74,7 +74,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The @@ -85,9 +85,9 @@ vector values will be in energy "units"_units.html. [Restrictions:] -This compute is part of the "user-misc" package. It is only enabled -if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This compute is part of the USER-MISC package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/compute_temp_sphere.html b/doc/compute_temp_sphere.html index 23e18d16b5..923dab5045 100644 --- a/doc/compute_temp_sphere.html +++ b/doc/compute_temp_sphere.html @@ -87,8 +87,8 @@ computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the extra option of the compute_modify command.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.


    @@ -116,7 +116,7 @@ rotational degrees of freedom.

    This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or -vector values from a compute as input. See this +vector values from a compute as input. See this section for an overview of LAMMPS output options.

    diff --git a/doc/compute_temp_sphere.txt b/doc/compute_temp_sphere.txt index 16d1fcc761..24885e2378 100755 --- a/doc/compute_temp_sphere.txt +++ b/doc/compute_temp_sphere.txt @@ -79,8 +79,8 @@ computed correctly. If needed, the subtracted degrees-of-freedom can be altered using the {extra} option of the "compute_modify"_compute_modify.html command. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. :line @@ -109,7 +109,7 @@ This compute calculates a global scalar (the temperature) and a global vector of length 6 (KE tensor), which can be accessed by indices 1-6. These values can be used by any command that uses global scalar or vector values from a compute as input. See "this -section"_Section_howto.html#4_15 for an overview of LAMMPS output +section"_Section_howto.html#howto_15 for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The diff --git a/doc/compute_ti.html b/doc/compute_ti.html index 404f33e821..4e997fb1c5 100644 --- a/doc/compute_ti.html +++ b/doc/compute_ti.html @@ -102,8 +102,8 @@ du/dl can be found in the paper by Eike.

    This compute calculates a global scalar, namely dUs/dlambda. This value can be used by any command that uses a global scalar value from -a compute as input. See this section for an -overview of LAMMPS output options. +a compute as input. See this section +for an overview of LAMMPS output options.

    The scalar value calculated by this compute is "extensive".

    diff --git a/doc/compute_ti.txt b/doc/compute_ti.txt index 39078cbd28..1d8041ae97 100644 --- a/doc/compute_ti.txt +++ b/doc/compute_ti.txt @@ -94,8 +94,8 @@ du/dl can be found in the paper by "Eike"_#Eike. This compute calculates a global scalar, namely dUs/dlambda. This value can be used by any command that uses a global scalar value from -a compute as input. See "this section"_Section_howto.html#4_15 for an -overview of LAMMPS output options. +a compute as input. See "this section"_Section_howto.html#howto_15 +for an overview of LAMMPS output options. The scalar value calculated by this compute is "extensive". diff --git a/doc/create_box.html b/doc/create_box.html index a4c2a918b0..974af9ee35 100644 --- a/doc/create_box.html +++ b/doc/create_box.html @@ -55,7 +55,7 @@ since if the maximum tilt factor is 5 (as in this example), then configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all geometrically equivalent.

    -

    See this section of the doc pages for a +

    See this section of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, and how to transform these parameters to and from other commonly used triclinic representations. diff --git a/doc/create_box.txt b/doc/create_box.txt index 3576b815fc..247486503a 100644 --- a/doc/create_box.txt +++ b/doc/create_box.txt @@ -52,7 +52,7 @@ since if the maximum tilt factor is 5 (as in this example), then configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all geometrically equivalent. -See "this section"_Section_howto.html#4_12 of the doc pages for a +See "this section"_Section_howto.html#howto_12 of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, and how to transform these parameters to and from other commonly used triclinic representations. diff --git a/doc/dihedral_charmm.html b/doc/dihedral_charmm.html index 8030eab9ea..6c3104c6e3 100644 --- a/doc/dihedral_charmm.html +++ b/doc/dihedral_charmm.html @@ -11,6 +11,8 @@

    dihedral_style charmm command

    +

    dihedral_style charmm/omp command +

    Syntax:

    dihedral_style charmm 
    @@ -67,10 +69,34 @@ weighting factors (4th coeff above) should be set to 0.0.  In this
     case, you can use any pair style you wish, since the dihedral does not
     need any 1-4 information.
     

    +
    + +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Restrictions:

    This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/dihedral_charmm.txt b/doc/dihedral_charmm.txt index d164f369ca..c0b959ffb5 100644 --- a/doc/dihedral_charmm.txt +++ b/doc/dihedral_charmm.txt @@ -7,6 +7,7 @@ :line dihedral_style charmm command :h3 +dihedral_style charmm/omp command :h3 [Syntax:] @@ -64,11 +65,35 @@ weighting factors (4th coeff above) should be set to 0.0. In this case, you can use any pair style you wish, since the dihedral does not need any 1-4 information. +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/dihedral_class2.html b/doc/dihedral_class2.html index 6da37c9a2a..79e7b47d92 100644 --- a/doc/dihedral_class2.html +++ b/doc/dihedral_class2.html @@ -11,6 +11,8 @@

    dihedral_style class2 command

    +

    dihedral_style class2/omp command +

    Syntax:

    dihedral_style class2 
    @@ -137,10 +139,34 @@ listed under a "BondBond13 Coeffs" heading and you must leave out the
     
  • r1 (distance)
  • r3 (distance) +
    + +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Restrictions:

    This dihedral style can only be used if LAMMPS was built with the -"class2" package. See the Making LAMMPS +CLASS2 package. See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/dihedral_class2.txt b/doc/dihedral_class2.txt index 141112823a..ab60aa3812 100644 --- a/doc/dihedral_class2.txt +++ b/doc/dihedral_class2.txt @@ -7,6 +7,7 @@ :line dihedral_style class2 command :h3 +dihedral_style class2/omp command :h3 [Syntax:] @@ -134,10 +135,34 @@ N (energy/distance^2) r1 (distance) r3 (distance) :ul +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This dihedral style can only be used if LAMMPS was built with the -"class2" package. See the "Making LAMMPS"_Section_start.html#2_3 +CLASS2 package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/dihedral_coeff.html b/doc/dihedral_coeff.html index 26021e3a64..9159ee5b21 100644 --- a/doc/dihedral_coeff.html +++ b/doc/dihedral_coeff.html @@ -81,7 +81,7 @@ specified by the associated dihedral_coeff c

    There are also additional dihedral styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the dihedral section of this +the individual styles are given in the dihedral section of this page.


    diff --git a/doc/dihedral_coeff.txt b/doc/dihedral_coeff.txt index e66ac90b75..21228218f2 100644 --- a/doc/dihedral_coeff.txt +++ b/doc/dihedral_coeff.txt @@ -79,7 +79,7 @@ specified by the associated "dihedral_coeff"_dihedral_coeff.html command: There are also additional dihedral styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the dihedral section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. :line diff --git a/doc/dihedral_cosine_shift_exp.html b/doc/dihedral_cosine_shift_exp.html index 73f830c3b2..c6ab2cae79 100644 --- a/doc/dihedral_cosine_shift_exp.html +++ b/doc/dihedral_cosine_shift_exp.html @@ -11,6 +11,8 @@

    dihedral_style cosine/shift/exp command

    +

    dihedral_style cosine/shift/exp/omp command +

    Syntax:

    dihedral_style cosine/shift/exp 
    @@ -49,10 +51,34 @@ commands:
     
  • theta (angle)
  • A (real number) +
    + +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Restrictions:

    This dihedral style can only be used if LAMMPS was built with the -"user-misc" package. See the Making LAMMPS +USER-MISC package. See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/dihedral_cosine_shift_exp.txt b/doc/dihedral_cosine_shift_exp.txt index ee01c29e9d..d1e1c8223b 100644 --- a/doc/dihedral_cosine_shift_exp.txt +++ b/doc/dihedral_cosine_shift_exp.txt @@ -7,6 +7,7 @@ :line dihedral_style cosine/shift/exp command :h3 +dihedral_style cosine/shift/exp/omp command :h3 [Syntax:] @@ -46,10 +47,34 @@ umin (energy) theta (angle) A (real number) :ul +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This dihedral style can only be used if LAMMPS was built with the -"user-misc" package. See the "Making LAMMPS"_Section_start.html#2_3 +USER-MISC package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/dihedral_harmonic.html b/doc/dihedral_harmonic.html index b7313e9709..d8c3a73f69 100644 --- a/doc/dihedral_harmonic.html +++ b/doc/dihedral_harmonic.html @@ -11,6 +11,8 @@

    dihedral_style harmonic command

    +

    dihedral_style harmonic/omp command +

    Syntax:

    dihedral_style harmonic 
    @@ -35,10 +37,34 @@ or read_restart commands:
     
  • d (+1 or -1)
  • n (integer >= 0) +
    + +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Restrictions:

    This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/dihedral_harmonic.txt b/doc/dihedral_harmonic.txt index 6e9c5dee06..a076931a0a 100644 --- a/doc/dihedral_harmonic.txt +++ b/doc/dihedral_harmonic.txt @@ -7,6 +7,7 @@ :line dihedral_style harmonic command :h3 +dihedral_style harmonic/omp command :h3 [Syntax:] @@ -32,11 +33,35 @@ K (energy) d (+1 or -1) n (integer >= 0) :ul +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/dihedral_helix.html b/doc/dihedral_helix.html index 0a0e9c7668..86b3728339 100644 --- a/doc/dihedral_helix.html +++ b/doc/dihedral_helix.html @@ -11,6 +11,8 @@

    dihedral_style helix command

    +

    dihedral_style helix/omp command +

    Syntax:

    dihedral_style helix 
    @@ -43,10 +45,34 @@ or read_restart commands:
     
  • B (energy)
  • C (energy) +
    + +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Restrictions:

    This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/dihedral_helix.txt b/doc/dihedral_helix.txt index f68d66e6f8..8792c10767 100644 --- a/doc/dihedral_helix.txt +++ b/doc/dihedral_helix.txt @@ -7,6 +7,7 @@ :line dihedral_style helix command :h3 +dihedral_style helix/omp command :h3 [Syntax:] @@ -40,11 +41,35 @@ A (energy) B (energy) C (energy) :ul +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/dihedral_hybrid.html b/doc/dihedral_hybrid.html index d831cbcec7..69bbe932df 100644 --- a/doc/dihedral_hybrid.html +++ b/doc/dihedral_hybrid.html @@ -75,10 +75,12 @@ in place of a dihedral style, either in a input script dihedral_coeff command or in the data file, if you desire to turn off interactions for specific dihedral types.

    +
    +

    Restrictions:

    This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Unlike other dihedral styles, the hybrid dihedral style does not store diff --git a/doc/dihedral_hybrid.txt b/doc/dihedral_hybrid.txt index e356224c2f..6b00a2f025 100644 --- a/doc/dihedral_hybrid.txt +++ b/doc/dihedral_hybrid.txt @@ -72,11 +72,13 @@ in place of a dihedral style, either in a input script dihedral_coeff command or in the data file, if you desire to turn off interactions for specific dihedral types. +:line + [Restrictions:] This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. Unlike other dihedral styles, the hybrid dihedral style does not store dihedral coefficient info for individual sub-styles in a "binary diff --git a/doc/dihedral_multi_harmonic.html b/doc/dihedral_multi_harmonic.html index 03dcd350b8..10601f3362 100644 --- a/doc/dihedral_multi_harmonic.html +++ b/doc/dihedral_multi_harmonic.html @@ -11,6 +11,8 @@

    dihedral_style multi/harmonic command

    +

    dihedral_style multi/harmonic/omp command +

    Syntax:

    dihedral_style multi/harmonic 
    @@ -37,10 +39,34 @@ or read_restart commands:
     
  • A4 (energy)
  • A5 (energy) +
    + +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Restrictions:

    This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/dihedral_multi_harmonic.txt b/doc/dihedral_multi_harmonic.txt index 4c71dbc3ca..505857fe81 100644 --- a/doc/dihedral_multi_harmonic.txt +++ b/doc/dihedral_multi_harmonic.txt @@ -7,6 +7,7 @@ :line dihedral_style multi/harmonic command :h3 +dihedral_style multi/harmonic/omp command :h3 [Syntax:] @@ -34,11 +35,35 @@ A3 (energy) A4 (energy) A5 (energy) :ul +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/dihedral_opls.html b/doc/dihedral_opls.html index 6861fb6000..e0656dd837 100644 --- a/doc/dihedral_opls.html +++ b/doc/dihedral_opls.html @@ -11,6 +11,8 @@

    dihedral_style opls command

    +

    dihedral_style opls/omp command +

    Syntax:

    dihedral_style opls 
    @@ -41,10 +43,34 @@ or read_restart commands:
     
  • K3 (energy)
  • K4 (energy) +
    + +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Restrictions:

    This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/dihedral_opls.txt b/doc/dihedral_opls.txt index 67c08e6543..c43e7a279e 100644 --- a/doc/dihedral_opls.txt +++ b/doc/dihedral_opls.txt @@ -7,6 +7,7 @@ :line dihedral_style opls command :h3 +dihedral_style opls/omp command :h3 [Syntax:] @@ -38,11 +39,35 @@ K2 (energy) K3 (energy) K4 (energy) :ul +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This dihedral style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/dihedral_style.html b/doc/dihedral_style.html index f13b8d2ab8..e2f6ea5322 100644 --- a/doc/dihedral_style.html +++ b/doc/dihedral_style.html @@ -88,7 +88,7 @@ specified by the associated dihedral_coeff c

    There are also additional dihedral styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the dihedral section of this +the individual styles are given in the dihedral section of this page.


    @@ -98,11 +98,11 @@ page.

    Dihedral styles can only be set for atom styles that allow dihedrals to be defined.

    -

    Most dihedral styles are part of the "molecular" package. They are -only enabled if LAMMPS was built with that package. See the Making -LAMMPS section for more info on packages. The -doc pages for individual dihedral potentials tell if it is part of a -package. +

    Most dihedral styles are part of the MOLECULAR package. They are only +enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info on packages. +The doc pages for individual dihedral potentials tell if it is part of +a package.

    Related commands:

    diff --git a/doc/dihedral_style.txt b/doc/dihedral_style.txt index a4b9896bbf..788215a6ed 100644 --- a/doc/dihedral_style.txt +++ b/doc/dihedral_style.txt @@ -87,7 +87,7 @@ specified by the associated "dihedral_coeff"_dihedral_coeff.html command: There are also additional dihedral styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the dihedral section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. :line @@ -96,11 +96,11 @@ page"_Section_commands.html#3_5. Dihedral styles can only be set for atom styles that allow dihedrals to be defined. -Most dihedral styles are part of the "molecular" package. They are -only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. The -doc pages for individual dihedral potentials tell if it is part of a -package. +Most dihedral styles are part of the MOLECULAR package. They are only +enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. +The doc pages for individual dihedral potentials tell if it is part of +a package. [Related commands:] diff --git a/doc/dump.html b/doc/dump.html index 6f9c2c462f..23bd26c179 100644 --- a/doc/dump.html +++ b/doc/dump.html @@ -183,7 +183,7 @@ This bounding box is convenient for many visualization programs. The meaning of the 6 character flags for "xx yy zz" is the same as above.

    Note that the first two numbers on each line are now xlo_bound instead -of xlo, etc, since they repesent a bounding box. See this +of xlo, etc, since they repesent a bounding box. See this section of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, simple formulas for how the 6 bounding box extents (xlo_bound,xhi_bound,etc) are @@ -507,24 +507,25 @@ per-atom quantities which could then be output into dump files.

    Restrictions:

    To write gzipped dump files, you must compile LAMMPS with the --DLAMMPS_GZIP option - see the Making LAMMPS -section of the documentation. +-DLAMMPS_GZIP option - see the Making +LAMMPS section of the documentation.

    -

    The xtc style is part of the "xtc" package. It is only enabled if -LAMMPS was built with that package. See the Making -LAMMPS section for more info. This is because -some machines may not support the low-level XDR data format that XTC -files are written with, which will result in a compile-time error when -a low-level include file is not found. Putting this style in a package -makes it easy to exclude from a LAMMPS build for those machines. -However, the XTC package also includes two compatibility header files -and associated functions, which should be a suitable substitute on -machines that do not have the appropriate native header files. This -option can be invoked at build time by adding -DLAMMPS_XDR to the -CCFLAGS variable in the appropriate low-level Makefile, -e.g. src/MAKE/Makefile.foo. This compatibility mode has been tested -successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L machines and -should also work on IBM BG/P, and Windows XP/Vista/7 machines. +

    The xtc style is part of the XTC package. It is only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. This is +because some machines may not support the low-level XDR data format +that XTC files are written with, which will result in a compile-time +error when a low-level include file is not found. Putting this style +in a package makes it easy to exclude from a LAMMPS build for those +machines. However, the XTC package also includes two compatibility +header files and associated functions, which should be a suitable +substitute on machines that do not have the appropriate native header +files. This option can be invoked at build time by adding +-DLAMMPS_XDR to the CCFLAGS variable in the appropriate low-level +Makefile, e.g. src/MAKE/Makefile.foo. This compatibility mode has +been tested successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L +machines and should also work on IBM BG/P, and Windows XP/Vista/7 +machines.

    Related commands:

    diff --git a/doc/dump.txt b/doc/dump.txt index 02f10b1d12..56df5f44a1 100644 --- a/doc/dump.txt +++ b/doc/dump.txt @@ -173,7 +173,7 @@ meaning of the 6 character flags for "xx yy zz" is the same as above. Note that the first two numbers on each line are now xlo_bound instead of xlo, etc, since they repesent a bounding box. See "this -section"_Section_howto.html#4_12 of the doc pages for a geometric +section"_Section_howto.html#howto_12 of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, simple formulas for how the 6 bounding box extents (xlo_bound,xhi_bound,etc) are calculated from the triclinic parameters, and how to transform those @@ -496,24 +496,25 @@ per-atom quantities which could then be output into dump files. [Restrictions:] To write gzipped dump files, you must compile LAMMPS with the --DLAMMPS_GZIP option - see the "Making LAMMPS"_Section_start.html#2_2 -section of the documentation. +-DLAMMPS_GZIP option - see the "Making +LAMMPS"_Section_start.html#start_2 section of the documentation. -The {xtc} style is part of the "xtc" package. It is only enabled if +The {xtc} style is part of the XTC package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. This is because -some machines may not support the low-level XDR data format that XTC -files are written with, which will result in a compile-time error when -a low-level include file is not found. Putting this style in a package -makes it easy to exclude from a LAMMPS build for those machines. -However, the XTC package also includes two compatibility header files -and associated functions, which should be a suitable substitute on -machines that do not have the appropriate native header files. This -option can be invoked at build time by adding -DLAMMPS_XDR to the -CCFLAGS variable in the appropriate low-level Makefile, -e.g. src/MAKE/Makefile.foo. This compatibility mode has been tested -successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L machines and -should also work on IBM BG/P, and Windows XP/Vista/7 machines. +LAMMPS"_Section_start.html#start_3 section for more info. This is +because some machines may not support the low-level XDR data format +that XTC files are written with, which will result in a compile-time +error when a low-level include file is not found. Putting this style +in a package makes it easy to exclude from a LAMMPS build for those +machines. However, the XTC package also includes two compatibility +header files and associated functions, which should be a suitable +substitute on machines that do not have the appropriate native header +files. This option can be invoked at build time by adding +-DLAMMPS_XDR to the CCFLAGS variable in the appropriate low-level +Makefile, e.g. src/MAKE/Makefile.foo. This compatibility mode has +been tested successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L +machines and should also work on IBM BG/P, and Windows XP/Vista/7 +machines. [Related commands:] diff --git a/doc/dump_image.html b/doc/dump_image.html index ab2cda6df0..65eda7079d 100644 --- a/doc/dump_image.html +++ b/doc/dump_image.html @@ -106,9 +106,9 @@ alter what atoms are included in the image.

    The filename suffix determines whether a JPG or PPM file is created. If the suffix is ".jpg" or ".jpeg", then a JPG file is created, else a PPM file is created, which is a text-based format. To write out JPG -files, you must build LAMMPS with a JPEG library. See this -section of the manual for instructions on -how to do this. +files, you must build LAMMPS with a JPEG library. See this +section of the manual for instructions +on how to do this.

    IMPORTANT NOTE: Because periodic boundary conditions are enforced only on timesteps when neighbor lists are rebuilt, the coordinates of an @@ -423,7 +423,7 @@ per-atom quantities which could then be output into dump files.

    Restrictions:

    To write JPG images, you must use a -DLAMMPS_JPEG switch when building -LAMMPS and link with a JPEG library. See the Making +LAMMPS and link with a JPEG library. See the Making LAMMPS section of the documentation for details.

    diff --git a/doc/dump_image.txt b/doc/dump_image.txt index 66cba606bc..08a74c6de4 100644 --- a/doc/dump_image.txt +++ b/doc/dump_image.txt @@ -93,8 +93,8 @@ The filename suffix determines whether a JPG or PPM file is created. If the suffix is ".jpg" or ".jpeg", then a JPG file is created, else a PPM file is created, which is a text-based format. To write out JPG files, you must build LAMMPS with a JPEG library. See "this -section"_Section_start.html#2_2_4 of the manual for instructions on -how to do this. +section"_Section_start.html#start_2_4 of the manual for instructions +on how to do this. IMPORTANT NOTE: Because periodic boundary conditions are enforced only on timesteps when neighbor lists are rebuilt, the coordinates of an @@ -410,7 +410,7 @@ per-atom quantities which could then be output into dump files. To write JPG images, you must use a -DLAMMPS_JPEG switch when building LAMMPS and link with a JPEG library. See the "Making -LAMMPS"_Section_start.html#2_2_4 section of the documentation for +LAMMPS"_Section_start.html#start_2_4 section of the documentation for details. [Related commands:] diff --git a/doc/echo.html b/doc/echo.html index fa79009676..46068aa832 100644 --- a/doc/echo.html +++ b/doc/echo.html @@ -29,8 +29,8 @@ command to the screen and/or log file as it is read and processed. If an input script has errors, it can be useful to look at echoed output to see the last command processed.

    -

    The command-line switch -echo can be used in -place of this command. +

    The command-line switch -echo can be used +in place of this command.

    Restrictions: none

    diff --git a/doc/echo.txt b/doc/echo.txt index 17fca167e0..eeac802ae0 100644 --- a/doc/echo.txt +++ b/doc/echo.txt @@ -26,8 +26,8 @@ command to the screen and/or log file as it is read and processed. If an input script has errors, it can be useful to look at echoed output to see the last command processed. -The "command-line switch"_Section_start.html#2_4 -echo can be used in -place of this command. +The "command-line switch"_Section_start.html#start_4 -echo can be used +in place of this command. [Restrictions:] none diff --git a/doc/fix.html b/doc/fix.html index 51d33fc88c..b2cac319d7 100644 --- a/doc/fix.html +++ b/doc/fix.html @@ -138,7 +138,7 @@ variable. reduce command, or histogrammed by the fix ave/histo command. -

    See this howto section for a summary of +

    See this howto section for a summary of various LAMMPS output options, many of which involve fixes.

    The results of fixes that calculate global quantities can be either @@ -164,7 +164,7 @@ list of fix styles available in LAMMPS:

  • addforce - add a force to each atom
  • aveforce - add an averaged force to each atom
  • ave/atom - compute per-atom time-averaged quantities -
  • ave/histo - compute/output time-averaged histograms +
  • ave/histo - compute/output time-averaged histograms
  • ave/spatial - compute/output time-averaged per-atom quantities by layer
  • ave/time - compute/output global time-averaged quantities
  • bond/break - break bonds on the fly @@ -181,6 +181,7 @@ list of fix styles available in LAMMPS:
  • external - callback to an external driver program
  • freeze - freeze atoms in a granular simulation
  • gravity - add gravity to atoms in a granular simulation +
  • gcmc - grand canonical insertions/deletions
  • heat - add/subtract momentum-conserving heat
  • indent - impose force due to an indenter
  • langevin - Langevin temperature control @@ -192,14 +193,18 @@ list of fix styles available in LAMMPS:
  • nph - constant NPH time integration via Nose/Hoover
  • nph/asphere - NPH for aspherical particles
  • nph/sphere - NPH for spherical particles +
  • nphug - constant-stress Hugoniostat integration
  • npt - constant NPT time integration via Nose/Hoover
  • npt/asphere - NPT for aspherical particles
  • npt/sphere - NPT for spherical particles
  • nve - constant NVE time integration -
  • nve/asphere - NVT for aspherical particles -
  • nve/limit - NVE with limited step length +
  • nve/asphere - NVE for aspherical particles +
  • nve/asphere/noforce - NVE for aspherical particles without forces +
  • nve/limit - NVE with limited step length +
  • nve/line - NVE for line segments
  • nve/noforce - NVE without forces (v only) -
  • nve/sphere - NVT for spherical particles +
  • nve/sphere - NVE for spherical particles +
  • nve/tri - NVE for triangles
  • nvt - constant NVT time integration via Nose/Hoover
  • nvt/asphere - NVT for aspherical particles
  • nvt/sllod - NVT for NEMD with SLLOD equations @@ -211,6 +216,7 @@ list of fix styles available in LAMMPS:
  • press/berendsen - pressure control by Berendsen barostat
  • print - print text and variables during a simulation
  • reax/bonds - write out ReaxFF bond information recenter - constrain the center-of-mass position of a group of atoms +
  • restrain - constrain a bond, angle, dihedral
  • rigid - constrain one or more clusters of atoms to move as a rigid body with NVE integration
  • rigid/nve - constrain one or more clusters of atoms to move as a rigid body with alternate NVE integration
  • rigid/nvt - constrain one or more clusters of atoms to move as a rigid body with NVT integration @@ -240,20 +246,20 @@ list of fix styles available in LAMMPS:

    There are also additional fix styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the fix section of this +the individual styles are given in the fix section of this page.

    There are also additional accelerated fix styles included in the LAMMPS distribution for faster performance on CPUs and GPUs. The list of these with links to the individual styles are given in the pair -section of this page. +section of this page.

    Restrictions:

    Some fix styles are part of specific packages. They are only enabled -if LAMMPS was built with that package. See the Making -LAMMPS section for more info on packages. The -doc pages for individual fixes tell if it is part of a package. +if LAMMPS was built with that package. See the Making +LAMMPS section for more info on packages. +The doc pages for individual fixes tell if it is part of a package.

    Related commands:

    diff --git a/doc/fix.txt b/doc/fix.txt index 4ab287ea7a..4c0df45d11 100644 --- a/doc/fix.txt +++ b/doc/fix.txt @@ -133,7 +133,7 @@ Local values can be reduced by the "compute reduce"_compute_reduce.html command, or histogrammed by the "fix ave/histo"_fix_ave_histo.html command. :l,ule -See this "howto section"_Section_howto.html#4_15 for a summary of +See this "howto section"_Section_howto.html#howto_15 for a summary of various LAMMPS output options, many of which involve fixes. The results of fixes that calculate global quantities can be either @@ -159,7 +159,7 @@ list of fix styles available in LAMMPS: "addforce"_fix_addforce.html - add a force to each atom "aveforce"_fix_aveforce.html - add an averaged force to each atom "ave/atom"_fix_ave_atom.html - compute per-atom time-averaged quantities -"ave/histo"_fix_ave_atom.html - compute/output time-averaged histograms +"ave/histo"_fix_ave_histo.html - compute/output time-averaged histograms "ave/spatial"_fix_ave_spatial.html - compute/output time-averaged per-atom quantities by layer "ave/time"_fix_ave_time.html - compute/output global time-averaged quantities "bond/break"_fix_bond_break.html - break bonds on the fly @@ -176,6 +176,7 @@ list of fix styles available in LAMMPS: "external"_fix_external.html - callback to an external driver program "freeze"_fix_freeze.html - freeze atoms in a granular simulation "gravity"_fix_gravity.html - add gravity to atoms in a granular simulation +"gcmc"_fix_gcmc.html - grand canonical insertions/deletions "heat"_fix_heat.html - add/subtract momentum-conserving heat "indent"_fix_indent.html - impose force due to an indenter "langevin"_fix_langevin.html - Langevin temperature control @@ -187,14 +188,18 @@ list of fix styles available in LAMMPS: "nph"_fix_nh.html - constant NPH time integration via Nose/Hoover "nph/asphere"_fix_nph_asphere.html - NPH for aspherical particles "nph/sphere"_fix_nph_sphere.html - NPH for spherical particles +"nphug"_fix_nphug.html - constant-stress Hugoniostat integration "npt"_fix_nh.html - constant NPT time integration via Nose/Hoover "npt/asphere"_fix_npt_asphere.html - NPT for aspherical particles "npt/sphere"_fix_npt_sphere.html - NPT for spherical particles "nve"_fix_nve.html - constant NVE time integration -"nve/asphere"_fix_nve_asphere.html - NVT for aspherical particles -"nve/limit"_fix_nve_limit.html - NVE with limited step length +"nve/asphere"_fix_nve_asphere.html - NVE for aspherical particles +"nve/asphere/noforce"_fix_nve_asphere_noforce.html - NVE for aspherical particles without forces" +nve/limit"_fix_nve_limit.html - NVE with limited step length +"nve/line"_fix_nve_line.html - NVE for line segments "nve/noforce"_fix_nve_noforce.html - NVE without forces (v only) -"nve/sphere"_fix_nve_sphere.html - NVT for spherical particles +"nve/sphere"_fix_nve_sphere.html - NVE for spherical particles +"nve/tri"_fix_nve_tri.html - NVE for triangles "nvt"_fix_nh.html - constant NVT time integration via Nose/Hoover "nvt/asphere"_fix_nvt_asphere.html - NVT for aspherical particles "nvt/sllod"_fix_nvt_sllod.html - NVT for NEMD with SLLOD equations @@ -210,6 +215,7 @@ list of fix styles available in LAMMPS: "reax/bonds"_fix_reax_bonds.html - write out ReaxFF bond information \ "recenter"_fix_recenter.html - constrain the center-of-mass position \ of a group of atoms +"restrain"_fix_restrain.html - constrain a bond, angle, dihedral "rigid"_fix_rigid.html - constrain one or more clusters of atoms to \ move as a rigid body with NVE integration "rigid/nve"_fix_rigid.html - constrain one or more clusters of atoms to \ @@ -248,19 +254,19 @@ list of fix styles available in LAMMPS: There are also additional fix styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the fix section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. There are also additional accelerated fix styles included in the LAMMPS distribution for faster performance on CPUs and GPUs. The list of these with links to the individual styles are given in the pair -section of "this page"_Section_commands.html#3_5. +section of "this page"_Section_commands.html#cmd_5. [Restrictions:] Some fix styles are part of specific packages. They are only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. The -doc pages for individual fixes tell if it is part of a package. +LAMMPS"_Section_start.html#start_3 section for more info on packages. +The doc pages for individual fixes tell if it is part of a package. [Related commands:] diff --git a/doc/fix_adapt.html b/doc/fix_adapt.html index 810a1c26d2..3d6c1a3430 100644 --- a/doc/fix_adapt.html +++ b/doc/fix_adapt.html @@ -233,9 +233,9 @@ fix 1 center adapt 10 atom diameter v_size

    No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

    Restrictions: none diff --git a/doc/fix_adapt.txt b/doc/fix_adapt.txt index c9f625d054..04e383f2cf 100644 --- a/doc/fix_adapt.txt +++ b/doc/fix_adapt.txt @@ -219,8 +219,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none diff --git a/doc/fix_addforce.html b/doc/fix_addforce.html index 16b3342640..4fe72468f1 100644 --- a/doc/fix_addforce.html +++ b/doc/fix_addforce.html @@ -116,14 +116,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

    These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -145,11 +145,11 @@ decrease in potential energy when atoms move in the direction of the added force.

    This fix computes a global scalar and a global 3-vector of forces, -which can be accessed by various output -commands. The scalar is the potential energy -discussed above. The vector is the total force on the group of atoms -before the forces on individual atoms are changed by the fix. The -scalar and vector values calculated by this fix are "extensive". +which can be accessed by various output +commands. The scalar is the potential +energy discussed above. The vector is the total force on the group of +atoms before the forces on individual atoms are changed by the fix. +The scalar and vector values calculated by this fix are "extensive".

    No parameter of this fix can be used with the start/stop keywords of the run command. diff --git a/doc/fix_addforce.txt b/doc/fix_addforce.txt index 9faa429813..e2c6e2e1fc 100644 --- a/doc/fix_addforce.txt +++ b/doc/fix_addforce.txt @@ -105,14 +105,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -135,10 +135,10 @@ added force. This fix computes a global scalar and a global 3-vector of forces, which can be accessed by various "output -commands"_Section_howto.html#4_15. The scalar is the potential energy -discussed above. The vector is the total force on the group of atoms -before the forces on individual atoms are changed by the fix. The -scalar and vector values calculated by this fix are "extensive". +commands"_Section_howto.html#howto_15. The scalar is the potential +energy discussed above. The vector is the total force on the group of +atoms before the forces on individual atoms are changed by the fix. +The scalar and vector values calculated by this fix are "extensive". No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. diff --git a/doc/fix_addtorque.html b/doc/fix_addtorque.html index bb85b93db2..a9a521e3b7 100644 --- a/doc/fix_addtorque.html +++ b/doc/fix_addtorque.html @@ -71,12 +71,12 @@ forces added by this fix in a consistent manner. I.e. there is a decrease in potential energy when atoms move in the direction of the added forces.

    -

    This fix computes a global scalar and a global 3-vector, -which can be accessed by various output -commands. The scalar is the potential energy -discussed above. The vector is the total torque on the group of atoms -before the forces on individual atoms are changed by the fix. The -scalar and vector values calculated by this fix are "extensive". +

    This fix computes a global scalar and a global 3-vector, which can be +accessed by various output commands. +The scalar is the potential energy discussed above. The vector is the +total torque on the group of atoms before the forces on individual +atoms are changed by the fix. The scalar and vector values calculated +by this fix are "extensive".

    No parameter of this fix can be used with the start/stop keywords of the run command. @@ -89,8 +89,8 @@ the iteration count during the minimization.

    Restrictions:

    -

    This fix is part of the "user-misc" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This fix is part of the USER-MISC package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/fix_addtorque.txt b/doc/fix_addtorque.txt index c0d2741b57..3cda16af67 100644 --- a/doc/fix_addtorque.txt +++ b/doc/fix_addtorque.txt @@ -64,12 +64,12 @@ forces added by this fix in a consistent manner. I.e. there is a decrease in potential energy when atoms move in the direction of the added forces. -This fix computes a global scalar and a global 3-vector, -which can be accessed by various "output -commands"_Section_howto.html#4_15. The scalar is the potential energy -discussed above. The vector is the total torque on the group of atoms -before the forces on individual atoms are changed by the fix. The -scalar and vector values calculated by this fix are "extensive". +This fix computes a global scalar and a global 3-vector, which can be +accessed by various "output commands"_Section_howto.html#howto_15. +The scalar is the potential energy discussed above. The vector is the +total torque on the group of atoms before the forces on individual +atoms are changed by the fix. The scalar and vector values calculated +by this fix are "extensive". No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. @@ -82,9 +82,9 @@ the iteration count during the minimization. [Restrictions:] -This fix is part of the "user-misc" package. It is only enabled if +This fix is part of the USER-MISC package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/fix_atc.html b/doc/fix_atc.html index 83c3207406..18063dd103 100644 --- a/doc/fix_atc.html +++ b/doc/fix_atc.html @@ -144,16 +144,16 @@ distribution. Individual doc pages are listed and linked to below. files. The fix_modify options relevant to this fix are listed below. No global scalar or vector or per-atom quantities are stored by this fix for access by various -output commands. No parameter of this fix -can be used with the start/stop keywords of the run +output commands. No parameter of this +fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

    Restrictions:

    -

    This fix is part of the "user-atc" package. It is only enabled if +

    This fix is part of the USER-ATC package. It is only enabled if LAMMPS was built with that package, which also requires the ATC -library be built and linked with LAMMPS. See the Making +library be built and linked with LAMMPS. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/fix_atc.txt b/doc/fix_atc.txt index 48a1c34c25..551265b9e0 100644 --- a/doc/fix_atc.txt +++ b/doc/fix_atc.txt @@ -137,17 +137,17 @@ No information about this fix is written to "binary restart files"_restart.html. The "fix_modify"_fix_modify.html options relevant to this fix are listed below. No global scalar or vector or per-atom quantities are stored by this fix for access by various -"output commands"_Section_howto.html#4_15. No parameter of this fix -can be used with the {start/stop} keywords of the "run"_run.html +"output commands"_Section_howto.html#howto_15. No parameter of this +fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "user-atc" package. It is only enabled if +This fix is part of the USER-ATC package. It is only enabled if LAMMPS was built with that package, which also requires the ATC library be built and linked with LAMMPS. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/fix_ave_atom.html b/doc/fix_ave_atom.html index d8a0cbc748..b93578e38b 100644 --- a/doc/fix_ave_atom.html +++ b/doc/fix_ave_atom.html @@ -40,13 +40,13 @@ one or more input values can be listed

    Examples:

    fix 1 all ave/atom 1 100 100 vx vy vz
    -fix 1 all ave/atom 10 20 1000 c_my_stress1 
    +fix 1 all ave/atom 10 20 1000 c_my_stress[1] 
     

    Description:

    Use one or more per-atom vectors as inputs every few timesteps, and average them atom by atom over longer timescales. The resulting -per-atom averages can be used by other output +per-atom averages can be used by other output commands such as the fix ave/spatial or dump custom commands.

    @@ -129,11 +129,11 @@ per-atom quantities to time average.

    No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global scalar or vector quantities are -stored by this fix for access by various output +stored by this fix for access by various output commands.

    This fix produces a per-atom vector or array which can be accessed by -various output commands. A vector is +various output commands. A vector is produced if only a single quantity is averaged by this fix. If two or more quantities are averaged, then an array of values is produced. The per-atom values can only be accessed on timesteps that are diff --git a/doc/fix_ave_atom.txt b/doc/fix_ave_atom.txt index 095a8b4c19..bbfab6a25b 100644 --- a/doc/fix_ave_atom.txt +++ b/doc/fix_ave_atom.txt @@ -30,14 +30,14 @@ value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID\[i\], f_ID, f_ID\[i\], v_nam [Examples:] fix 1 all ave/atom 1 100 100 vx vy vz -fix 1 all ave/atom 10 20 1000 c_my_stress[1] :pre +fix 1 all ave/atom 10 20 1000 c_my_stress\[1\] :pre [Description:] Use one or more per-atom vectors as inputs every few timesteps, and average them atom by atom over longer timescales. The resulting per-atom averages can be used by other "output -commands"_Section_howto.html#4_15 such as the "fix +commands"_Section_howto.html#howto_15 such as the "fix ave/spatial"_fix_ave_spatial.html or "dump custom"_dump.html commands. The group specified with the command means only atoms within the group @@ -120,10 +120,10 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global scalar or vector quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. +commands"_Section_howto.html#howto_15. This fix produces a per-atom vector or array which can be accessed by -various "output commands"_Section_howto.html#4_15. A vector is +various "output commands"_Section_howto.html#howto_15. A vector is produced if only a single quantity is averaged by this fix. If two or more quantities are averaged, then an array of values is produced. The per-atom values can only be accessed on timesteps that are diff --git a/doc/fix_ave_correlate.html b/doc/fix_ave_correlate.html index 40e2fb8916..76e1c2edde 100644 --- a/doc/fix_ave_correlate.html +++ b/doc/fix_ave_correlate.html @@ -77,7 +77,7 @@ fix 1 all ave/correlate 1 50 10000 & calculate time correlations bewteen them at varying time intervals, and average the correlation data over longer timescales. The resulting correlation values can be time integrated by -variables or used by other output +variables or used by other output commands such as thermo_style custom, and can also be written to a file.

    @@ -287,7 +287,7 @@ files. None of the fix_modify options are relevant to this fix.

    This fix computes a global array of values which can be accessed by -various output commands. The values can +various output commands. The values can only be accessed on timesteps that are multiples of Nfreq since that is when averaging is performed. The global array has # of rows = Nrepeat and # of columns = Npair+2. The first column has the time diff --git a/doc/fix_ave_correlate.txt b/doc/fix_ave_correlate.txt index ce20deead6..cf792ee112 100644 --- a/doc/fix_ave_correlate.txt +++ b/doc/fix_ave_correlate.txt @@ -65,7 +65,7 @@ calculate time correlations bewteen them at varying time intervals, and average the correlation data over longer timescales. The resulting correlation values can be time integrated by "variables"_variable.html or used by other "output -commands"_Section_howto.html#4_15 such as "thermo_style +commands"_Section_howto.html#howto_15 such as "thermo_style custom"_thermo_style.html, and can also be written to a file. The group specified with this command is ignored. However, note that @@ -274,7 +274,7 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global array of values which can be accessed by -various "output commands"_Section_howto.html#4_15. The values can +various "output commands"_Section_howto.html#howto_15. The values can only be accessed on timesteps that are multiples of {Nfreq} since that is when averaging is performed. The global array has # of rows = {Nrepeat} and # of columns = Npair+2. The first column has the time diff --git a/doc/fix_ave_histo.html b/doc/fix_ave_histo.html index 6330a34e66..ee99ee5236 100644 --- a/doc/fix_ave_histo.html +++ b/doc/fix_ave_histo.html @@ -78,8 +78,9 @@ fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyo

    Use one or more values as inputs every few timesteps, histogram them, and average the histogram over longer timescales. The resulting -histogram can be used by other output -commands, and can also be written to a file. +histogram can be used by other output +commands, and can also be written to a +file.

    The group specified with this command is ignored for global and local input values. For per-atom input values, only atoms in the group @@ -290,10 +291,10 @@ files. None of the fix_modify options are relevant to this fix.

    This fix produces a global vector and global array which can be -accessed by various output commands. The -values can only be accessed on timesteps that are multiples of Nfreq -since that is when a histogram is generated. -The global vector has 4 values: +accessed by various output commands. +The values can only be accessed on timesteps that are multiples of +Nfreq since that is when a histogram is generated. The global +vector has 4 values:

    • 1 = total counts in the histogram
    • 2 = values that were not histogrammed (see beyond keyword) diff --git a/doc/fix_ave_histo.txt b/doc/fix_ave_histo.txt index aa0b046c92..7f009eba04 100644 --- a/doc/fix_ave_histo.txt +++ b/doc/fix_ave_histo.txt @@ -64,7 +64,8 @@ fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyo Use one or more values as inputs every few timesteps, histogram them, and average the histogram over longer timescales. The resulting histogram can be used by other "output -commands"_Section_howto.html#4_15, and can also be written to a file. +commands"_Section_howto.html#howto_15, and can also be written to a +file. The group specified with this command is ignored for global and local input values. For per-atom input values, only atoms in the group @@ -275,10 +276,10 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix produces a global vector and global array which can be -accessed by various "output commands"_Section_howto.html#4_15. The -values can only be accessed on timesteps that are multiples of {Nfreq} -since that is when a histogram is generated. -The global vector has 4 values: +accessed by various "output commands"_Section_howto.html#howto_15. +The values can only be accessed on timesteps that are multiples of +{Nfreq} since that is when a histogram is generated. The global +vector has 4 values: 1 = total counts in the histogram 2 = values that were not histogrammed (see {beyond} keyword) diff --git a/doc/fix_ave_spatial.html b/doc/fix_ave_spatial.html index d1046fb7fe..e61b3d6bb9 100644 --- a/doc/fix_ave_spatial.html +++ b/doc/fix_ave_spatial.html @@ -78,7 +78,7 @@ fix 1 flow ave/spatial 100 5 1000 z lower 1.0 y 0.0 2.5 density/mass ave running

      Use one or more per-atom vectors as inputs every few timesteps, bin their values spatially into 1d, 2d, or 3d bins based on current atom coordinates, and average the bin values over longer timescales. The -resulting bin averages can be used by other output +resulting bin averages can be used by other output commands such as thermo_style custom, and can also be written to a file.

      @@ -163,11 +163,11 @@ counted in the first/last bin in that dimension.

      For orthogonal simulation boxes, the bins are also layers, pencils, or boxes aligned with the xyz coordinate axes. For triclinic (non-orthogonal) simulation boxes, the bins are so that they are -parallel to the tilted faces of the simulation box. See this -section of the manual for a discussion of the -geometry of triclinic boxes in LAMMPS. As described there, a tilted -simulation box has edge vectors a,b,c. In that nomenclature, bins in -the x dimension have faces with normals in the "b" cross "c" +parallel to the tilted faces of the simulation box. See this +section of the manual for a discussion of +the geometry of triclinic boxes in LAMMPS. As described there, a +tilted simulation box has edge vectors a,b,c. In that nomenclature, +bins in the x dimension have faces with normals in the "b" cross "c" direction. Bins in y have faces normal to the "a" cross "c" direction. And bins in z have faces normal to the "a" cross "b" direction. Note that in order to define the size and position of @@ -321,7 +321,7 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes a global array of values which can be accessed by -various output commands. The values can +various output commands. The values can only be accessed on timesteps that are multiples of Nfreq since that is when averaging is performed. The global array has # of rows = Nbins and # of columns = Ndim+1+Nvalues, where Ndim = 1,2,3 for diff --git a/doc/fix_ave_spatial.txt b/doc/fix_ave_spatial.txt index ed3b95f328..f6ce44d8f9 100644 --- a/doc/fix_ave_spatial.txt +++ b/doc/fix_ave_spatial.txt @@ -64,7 +64,7 @@ Use one or more per-atom vectors as inputs every few timesteps, bin their values spatially into 1d, 2d, or 3d bins based on current atom coordinates, and average the bin values over longer timescales. The resulting bin averages can be used by other "output -commands"_Section_howto.html#4_15 such as "thermo_style +commands"_Section_howto.html#howto_15 such as "thermo_style custom"_thermo_style.html, and can also be written to a file. The group specified with the command means only atoms within the group @@ -149,10 +149,10 @@ For orthogonal simulation boxes, the bins are also layers, pencils, or boxes aligned with the xyz coordinate axes. For triclinic (non-orthogonal) simulation boxes, the bins are so that they are parallel to the tilted faces of the simulation box. See "this -section"_Section_howto.html#4_12 of the manual for a discussion of the -geometry of triclinic boxes in LAMMPS. As described there, a tilted -simulation box has edge vectors a,b,c. In that nomenclature, bins in -the x dimension have faces with normals in the "b" cross "c" +section"_Section_howto.html#howto_12 of the manual for a discussion of +the geometry of triclinic boxes in LAMMPS. As described there, a +tilted simulation box has edge vectors a,b,c. In that nomenclature, +bins in the x dimension have faces with normals in the "b" cross "c" direction. Bins in y have faces normal to the "a" cross "c" direction. And bins in z have faces normal to the "a" cross "b" direction. Note that in order to define the size and position of @@ -306,7 +306,7 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global array of values which can be accessed by -various "output commands"_Section_howto.html#4_15. The values can +various "output commands"_Section_howto.html#howto_15. The values can only be accessed on timesteps that are multiples of {Nfreq} since that is when averaging is performed. The global array has # of rows = Nbins and # of columns = Ndim+1+Nvalues, where Ndim = 1,2,3 for diff --git a/doc/fix_ave_time.html b/doc/fix_ave_time.html index 1ca9dd4ff0..78446a1d45 100644 --- a/doc/fix_ave_time.html +++ b/doc/fix_ave_time.html @@ -72,7 +72,7 @@ fix 1 all ave/time 1 100 1000 f_indent f_indent[1] file temp.indent off 1

      Use one or more global values as inputs every few timesteps, and average them over longer timescales. The resulting averages can be -used by other output commands such as +used by other output commands such as thermo_style custom, and can also be written to a file. Note that if no time averaging is done, this command can be used as a convenient way to simply output one or more global values to @@ -283,10 +283,10 @@ files. None of the fix_modify options are relevant to this fix.

      This fix produces a global scalar or global vector or global array -which can be accessed by various output -commands. The values can only be accessed on -timesteps that are multiples of Nfreq since that is when averaging -is performed. +which can be accessed by various output +commands. The values can only be +accessed on timesteps that are multiples of Nfreq since that is when +averaging is performed.

      A scalar is produced if only a single input value is averaged and mode = scalar. A vector is produced if multiple input values are diff --git a/doc/fix_ave_time.txt b/doc/fix_ave_time.txt index aa8a8ffdce..18a224a7e4 100644 --- a/doc/fix_ave_time.txt +++ b/doc/fix_ave_time.txt @@ -59,7 +59,7 @@ fix 1 all ave/time 1 100 1000 f_indent f_indent\[1\] file temp.indent off 1 :pre Use one or more global values as inputs every few timesteps, and average them over longer timescales. The resulting averages can be -used by other "output commands"_Section_howto.html#4_15 such as +used by other "output commands"_Section_howto.html#howto_15 such as "thermo_style custom"_thermo_style.html, and can also be written to a file. Note that if no time averaging is done, this command can be used as a convenient way to simply output one or more global values to @@ -271,9 +271,9 @@ are relevant to this fix. This fix produces a global scalar or global vector or global array which can be accessed by various "output -commands"_Section_howto.html#4_15. The values can only be accessed on -timesteps that are multiples of {Nfreq} since that is when averaging -is performed. +commands"_Section_howto.html#howto_15. The values can only be +accessed on timesteps that are multiples of {Nfreq} since that is when +averaging is performed. A scalar is produced if only a single input value is averaged and {mode} = scalar. A vector is produced if multiple input values are diff --git a/doc/fix_aveforce.html b/doc/fix_aveforce.html index d671deb1ec..d2f9355090 100644 --- a/doc/fix_aveforce.html +++ b/doc/fix_aveforce.html @@ -82,14 +82,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

      -

      These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

      These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

      You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

      See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -103,7 +103,7 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes a global 3-vector of forces, which can be accessed -by various output commands. This is the +by various output commands. This is the total force on the group of atoms before the forces on individual atoms are changed by the fix. The vector values calculated by this fix are "extensive". diff --git a/doc/fix_aveforce.txt b/doc/fix_aveforce.txt index 996c85ea54..b8db603c51 100644 --- a/doc/fix_aveforce.txt +++ b/doc/fix_aveforce.txt @@ -71,14 +71,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -92,7 +92,7 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global 3-vector of forces, which can be accessed -by various "output commands"_Section_howto.html#4_15. This is the +by various "output commands"_Section_howto.html#howto_15. This is the total force on the group of atoms before the forces on individual atoms are changed by the fix. The vector values calculated by this fix are "extensive". diff --git a/doc/fix_bond_break.html b/doc/fix_bond_break.html index 182874d073..55e786263b 100644 --- a/doc/fix_bond_break.html +++ b/doc/fix_bond_break.html @@ -113,9 +113,9 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes two statistics which it stores in a global vector of -length 2, which can be accessed by various output -commands. The vector values calculated by -this fix are "intensive". +length 2, which can be accessed by various output +commands. The vector values calculated +by this fix are "intensive".

      These are the 2 quantities:

      @@ -128,6 +128,10 @@ minimization.

      Restrictions:

      +

      This fix is part of the MC package. It is only enabled if LAMMPS was +built with that package. See the Making +LAMMPS section for more info. +

      Currently, there are 2 restrictions for using this fix. We may relax these in the future if there are new models that would be enabled by it. diff --git a/doc/fix_bond_break.txt b/doc/fix_bond_break.txt index f63c3c3718..d6ee6bec0e 100755 --- a/doc/fix_bond_break.txt +++ b/doc/fix_bond_break.txt @@ -103,8 +103,8 @@ are relevant to this fix. This fix computes two statistics which it stores in a global vector of length 2, which can be accessed by various "output -commands"_Section_howto.html#4_15. The vector values calculated by -this fix are "intensive". +commands"_Section_howto.html#howto_15. The vector values calculated +by this fix are "intensive". These are the 2 quantities: @@ -117,6 +117,10 @@ minimization"_minimize.html. [Restrictions:] +This fix is part of the MC package. It is only enabled if LAMMPS was +built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + Currently, there are 2 restrictions for using this fix. We may relax these in the future if there are new models that would be enabled by it. diff --git a/doc/fix_bond_create.html b/doc/fix_bond_create.html index 1c7eb027d3..a521d01914 100644 --- a/doc/fix_bond_create.html +++ b/doc/fix_bond_create.html @@ -170,9 +170,9 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes two statistics which it stores in a global vector of -length 2, which can be accessed by various output -commands. The vector values calculated by -this fix are "intensive". +length 2, which can be accessed by various output +commands. The vector values calculated +by this fix are "intensive".

      These are the 2 quantities:

      @@ -185,6 +185,10 @@ minimization.

      Restrictions:

      +

      This fix is part of the MC package. It is only enabled if LAMMPS was +built with that package. See the Making +LAMMPS section for more info. +

      Currently, there are 2 restrictions for using this fix. We may relax these in the future if there are new models that would be enabled by it. diff --git a/doc/fix_bond_create.txt b/doc/fix_bond_create.txt index 580f888dfc..17fbb77ede 100755 --- a/doc/fix_bond_create.txt +++ b/doc/fix_bond_create.txt @@ -159,8 +159,8 @@ are relevant to this fix. This fix computes two statistics which it stores in a global vector of length 2, which can be accessed by various "output -commands"_Section_howto.html#4_15. The vector values calculated by -this fix are "intensive". +commands"_Section_howto.html#howto_15. The vector values calculated +by this fix are "intensive". These are the 2 quantities: @@ -173,6 +173,10 @@ minimization"_minimize.html. [Restrictions:] +This fix is part of the MC package. It is only enabled if LAMMPS was +built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + Currently, there are 2 restrictions for using this fix. We may relax these in the future if there are new models that would be enabled by it. diff --git a/doc/fix_bond_swap.html b/doc/fix_bond_swap.html index a4ced35353..4a6e5b7366 100644 --- a/doc/fix_bond_swap.html +++ b/doc/fix_bond_swap.html @@ -145,10 +145,10 @@ defined to this fix which will be used to compute the temperature for the Boltzmann criterion.

      This fix computes two statistical quantities as a global 2-vector of -output, which can be accessed by various output -commands. The first component of the vector -is the cummulative number of swaps performed by all processors. The -second component of the vector is the cummulative number of swaps +output, which can be accessed by various output +commands. The first component of the +vector is the cummulative number of swaps performed by all processors. +The second component of the vector is the cummulative number of swaps attempted (whether accepted or rejected). Note that a swap "attempt" only occurs when swap partners meeting the criteria described above are found on a particular timestep. The vector values calculated by @@ -160,6 +160,10 @@ minimization.

      Restrictions:

      +

      This fix is part of the MC package. It is only enabled if LAMMPS was +built with that package. See the Making +LAMMPS section for more info. +

      The setings of the "special_bond" command must be 0,1,1 in order to use this fix, which is typical of bead-spring chains with FENE or harmonic bonds. This means that pairwise interactions between bonded diff --git a/doc/fix_bond_swap.txt b/doc/fix_bond_swap.txt index eba291c8c7..e1e1aeba5a 100755 --- a/doc/fix_bond_swap.txt +++ b/doc/fix_bond_swap.txt @@ -143,9 +143,9 @@ the Boltzmann criterion. This fix computes two statistical quantities as a global 2-vector of output, which can be accessed by various "output -commands"_Section_howto.html#4_15. The first component of the vector -is the cummulative number of swaps performed by all processors. The -second component of the vector is the cummulative number of swaps +commands"_Section_howto.html#howto_15. The first component of the +vector is the cummulative number of swaps performed by all processors. +The second component of the vector is the cummulative number of swaps attempted (whether accepted or rejected). Note that a swap "attempt" only occurs when swap partners meeting the criteria described above are found on a particular timestep. The vector values calculated by @@ -157,6 +157,10 @@ minimization"_minimize.html. [Restrictions:] +This fix is part of the MC package. It is only enabled if LAMMPS was +built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + The setings of the "special_bond" command must be 0,1,1 in order to use this fix, which is typical of bead-spring chains with FENE or harmonic bonds. This means that pairwise interactions between bonded diff --git a/doc/fix_box_relax.html b/doc/fix_box_relax.html index 1486e17651..917e29a9f8 100644 --- a/doc/fix_box_relax.html +++ b/doc/fix_box_relax.html @@ -280,7 +280,7 @@ compute specified by the press keyword will be unaffected by the temp setting.

      This fix computes a global scalar which can be accessed by various -output commands. The scalar is the +output commands. The scalar is the pressure-volume energy, plus the strain energy, if it exists.

      No parameter of this fix can be used with the start/stop keywords of diff --git a/doc/fix_box_relax.txt b/doc/fix_box_relax.txt index 510458504c..d1b924d0f9 100644 --- a/doc/fix_box_relax.txt +++ b/doc/fix_box_relax.txt @@ -274,7 +274,7 @@ compute specified by the {press} keyword will be unaffected by the {temp} setting. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the +"output commands"_Section_howto.html#howto_15. The scalar is the pressure-volume energy, plus the strain energy, if it exists. No parameter of this fix can be used with the {start/stop} keywords of diff --git a/doc/fix_deform.html b/doc/fix_deform.html index 2cb1805bac..3a090578bd 100644 --- a/doc/fix_deform.html +++ b/doc/fix_deform.html @@ -436,7 +436,7 @@ defined in terms of distance/time.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output +by this fix for access by various output commands.

      This fix can perform deformation over multiple runs, using the start diff --git a/doc/fix_deform.txt b/doc/fix_deform.txt index 3cda5dbd7a..e1f81e3300 100644 --- a/doc/fix_deform.txt +++ b/doc/fix_deform.txt @@ -427,7 +427,7 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. +commands"_Section_howto.html#howto_15. This fix can perform deformation over multiple runs, using the {start} and {stop} keywords of the "run"_run.html command. See the diff --git a/doc/fix_deposit.html b/doc/fix_deposit.html index 43b2d7c82c..574a3d04fd 100644 --- a/doc/fix_deposit.html +++ b/doc/fix_deposit.html @@ -143,7 +143,7 @@ operation of the fix continues in an uninterrupted fashion.

      None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored by this fix for -access by various output commands. No +access by various output commands. No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization. diff --git a/doc/fix_deposit.txt b/doc/fix_deposit.txt index 70e8e61a9c..82ee3056c4 100644 --- a/doc/fix_deposit.txt +++ b/doc/fix_deposit.txt @@ -131,7 +131,7 @@ operation of the fix continues in an uninterrupted fashion. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for -access by various "output commands"_Section_howto.html#4_15. No +access by various "output commands"_Section_howto.html#howto_15. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. diff --git a/doc/fix_drag.html b/doc/fix_drag.html index 5cdd866d18..adef7e6576 100644 --- a/doc/fix_drag.html +++ b/doc/fix_drag.html @@ -46,7 +46,7 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes a global 3-vector of forces, which can be accessed -by various output commands. This is the +by various output commands. This is the total force on the group of atoms by the drag force. The vector values calculated by this fix are "extensive".

      diff --git a/doc/fix_drag.txt b/doc/fix_drag.txt index 3fdf26bcb8..503563d975 100644 --- a/doc/fix_drag.txt +++ b/doc/fix_drag.txt @@ -44,7 +44,7 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global 3-vector of forces, which can be accessed -by various "output commands"_Section_howto.html#4_15. This is the +by various "output commands"_Section_howto.html#howto_15. This is the total force on the group of atoms by the drag force. The vector values calculated by this fix are "extensive". diff --git a/doc/fix_dt_reset.html b/doc/fix_dt_reset.html index e146adfa9d..2831e47d88 100644 --- a/doc/fix_dt_reset.html +++ b/doc/fix_dt_reset.html @@ -70,11 +70,11 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes a global scalar and a global vector of length 1, -which can be accessed by various output -commands. The scalar is the current timestep -size. The cumulative simulation time (in time units) is stored as the -first element of the vector. The scalar and vector values calculated -by this fix are "intensive". +which can be accessed by various output +commands. The scalar is the current +timestep size. The cumulative simulation time (in time units) is +stored as the first element of the vector. The scalar and vector +values calculated by this fix are "intensive".

      No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy diff --git a/doc/fix_dt_reset.txt b/doc/fix_dt_reset.txt index c0100bd7fa..edd1b4c79d 100644 --- a/doc/fix_dt_reset.txt +++ b/doc/fix_dt_reset.txt @@ -67,10 +67,10 @@ are relevant to this fix. This fix computes a global scalar and a global vector of length 1, which can be accessed by various "output -commands"_Section_howto.html#4_15. The scalar is the current timestep -size. The cumulative simulation time (in time units) is stored as the -first element of the vector. The scalar and vector values calculated -by this fix are "intensive". +commands"_Section_howto.html#howto_15. The scalar is the current +timestep size. The cumulative simulation time (in time units) is +stored as the first element of the vector. The scalar and vector +values calculated by this fix are "intensive". No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy diff --git a/doc/fix_efield.html b/doc/fix_efield.html index 894caeb94e..7b3daba5a9 100644 --- a/doc/fix_efield.html +++ b/doc/fix_efield.html @@ -52,9 +52,9 @@ with optional time-dependence as well.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions: none diff --git a/doc/fix_efield.txt b/doc/fix_efield.txt index 70562d5cde..6bc7ba4a6d 100644 --- a/doc/fix_efield.txt +++ b/doc/fix_efield.txt @@ -50,8 +50,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none diff --git a/doc/fix_enforce2d.html b/doc/fix_enforce2d.html index 737a853770..cad153683e 100644 --- a/doc/fix_enforce2d.html +++ b/doc/fix_enforce2d.html @@ -39,14 +39,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

      -

      These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

      These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

      You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

      See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -58,9 +58,9 @@ instructions on how to use the accelerated styles effectively.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command.

      The forces due to this fix are imposed during an energy minimization, invoked by the minimize command. diff --git a/doc/fix_enforce2d.txt b/doc/fix_enforce2d.txt index d266edc563..20bcf8f3c7 100644 --- a/doc/fix_enforce2d.txt +++ b/doc/fix_enforce2d.txt @@ -35,14 +35,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -55,8 +55,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. The forces due to this fix are imposed during an energy minimization, invoked by the "minimize"_minimize.html command. diff --git a/doc/fix_evaporate.html b/doc/fix_evaporate.html index e533c51948..8ef4b2fab5 100644 --- a/doc/fix_evaporate.html +++ b/doc/fix_evaporate.html @@ -79,7 +79,7 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes a global scalar, which can be accessed by various -output commands. The scalar is the +output commands. The scalar is the cummulative number of deleted atoms. The scalar value calculated by this fix is "intensive".

      diff --git a/doc/fix_evaporate.txt b/doc/fix_evaporate.txt index 147fc14457..331accb887 100644 --- a/doc/fix_evaporate.txt +++ b/doc/fix_evaporate.txt @@ -68,7 +68,7 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global scalar, which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the +"output commands"_Section_howto.html#howto_15. The scalar is the cummulative number of deleted atoms. The scalar value calculated by this fix is "intensive". diff --git a/doc/fix_external.html b/doc/fix_external.html index fe57859db8..d08bffc4e6 100644 --- a/doc/fix_external.html +++ b/doc/fix_external.html @@ -64,9 +64,9 @@ quantum forces computed by a density functional code binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command.

      The forces due to this fix are imposed during an energy minimization, invoked by the minimize command. However, LAMMPS diff --git a/doc/fix_external.txt b/doc/fix_external.txt index 74c0b0b881..f8e12ded3a 100644 --- a/doc/fix_external.txt +++ b/doc/fix_external.txt @@ -62,8 +62,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. The forces due to this fix are imposed during an energy minimization, invoked by the "minimize"_minimize.html command. However, LAMMPS diff --git a/doc/fix_freeze.html b/doc/fix_freeze.html index 18cb516256..762460f39d 100644 --- a/doc/fix_freeze.html +++ b/doc/fix_freeze.html @@ -41,14 +41,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

      -

      These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

      These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

      You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

      See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -62,7 +62,7 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes a global 3-vector of forces, which can be accessed -by various output commands. This is the +by various output commands. This is the total force on the group of atoms before the forces on individual atoms are changed by the fix. The vector values calculated by this fix are "extensive". @@ -73,8 +73,8 @@ minimization.

      Restrictions:

      -

      This fix is part of the "granular" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the GRANULAR package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

      There can only be a single freeze fix defined. This is because other diff --git a/doc/fix_freeze.txt b/doc/fix_freeze.txt index 45cae7bbb0..ac89b18190 100644 --- a/doc/fix_freeze.txt +++ b/doc/fix_freeze.txt @@ -37,14 +37,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -58,7 +58,7 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global 3-vector of forces, which can be accessed -by various "output commands"_Section_howto.html#4_15. This is the +by various "output commands"_Section_howto.html#howto_15. This is the total force on the group of atoms before the forces on individual atoms are changed by the fix. The vector values calculated by this fix are "extensive". @@ -69,9 +69,9 @@ minimization"_minimize.html. [Restrictions:] -This fix is part of the "granular" package. It is only enabled if +This fix is part of the GRANULAR package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. There can only be a single freeze fix defined. This is because other the "granular pair styles"_pair_gran.html treat frozen particles diff --git a/doc/fix_gcmc.html b/doc/fix_gcmc.html new file mode 100644 index 0000000000..2832f4f127 --- /dev/null +++ b/doc/fix_gcmc.html @@ -0,0 +1,187 @@ + +

      LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
      + + + + + + +
      + +

      fix gcmc command +

      +

      Syntax: +

      +
      fix ID group-ID gcmc N X M type seed T mu displace keyword values ... 
      +
      +
      • ID, group-ID are documented in fix command + +
      • gcmc = style name of this fix command + +
      • N = invoke this fix every N steps + +
      • X = number of exchanges to attempt every N steps + +
      • M = number of MC displacements to attempt every N steps + +
      • type = atom type of exchanged particles + +
      • seed = random # seed (positive integer) + +
      • T = temperature of the ideal gas reservoir (temperature units) + +
      • mu = chemical potential of the ideal gas reservoir (energy units) + +
      • displace = maximum Monte Carlo displacement distance (length units) + +
      • zero or more keyword/value pairs may be appended to args + +
        keyword = molecule
        +  molecule value = no or yes 
        +
        + +
      +

      Examples: +

      +
      fix 2 all gcmc 10 1000 1000 2 29494 298.0 -0.5 0.01
      +fix 3 all gcmc 10 100 100 1 3456543 3.0 -2.5 0.1 molecule yes 
      +
      +

      Description: +

      +

      This fix performs grand canonical Monte Carlo (GCMC) exchanges of +particles of the given type with an imaginary ideal gas reservoir at +the specified T and chemical potential (mu) as discussed in +(Frenkel). If used with the fix nvt command, +simulations in the grand canonical enemble (muVT, constant chemical +potential, constant volume, and constant temperature) can be +performed. Specific uses include computing isotherms in microporous +materials, or computing vapor-liquid coexistence curves. +

      +

      Perform up to X exchanges of particles of the given type between the +simulation domain and the imaginary reservoir every N timesteps. Also +perform M Monte Carlo displacements of particles of the given type +within the simulation domain. M should typically be chosen to be +approximately equal to the expected number of particles of the given +type within the domain, which will result in roughly one MC +translation per particle per MC cycle. +

      +

      This fix cannot be used to perform MC displacements of particles other +than the exchanged type. All particles in the simulation domain can be +moved using regular time integration displacements, e.g. via +fix_nvt, resulting in a hybrid GCMC+MD simulation. +

      +

      If used with fix_nvt, the temperature of the imaginary +reservoir, T, should be set to be equivalent to the target temperature +used in fix_nvt. Otherwise, the imaginary reservoir +will not be in thermal equilibrium with the simulation domain. +

      +

      Note that neighbor lists are re-built every timestep that this fix is +invoked, so you should not set N to be too small. However, periodic +rebuilds are necessary in order to avoid dangerous rebuilds and missed +interactions. Specifically, avoid performing so many MC displacements +per timestep that a particle can move beyond the neighbor list skin +distance. See the neighbor command for details. +

      +

      When a particle is to be inserted, its coordinates are chosen as a +random position within the current simulation domain, and its velocity +is randomly chosen from the specified temperature distribution given +by T. +

      +

      Exchanged particles have the specified atom type and are assigned to +two groups: the default group "all" and the group specified in the fix +gcmc command (which can also be "all"). +

      +

      If the setting for the molecule keyword is no, then only single +atoms are exchanged. In this case, you should ensure you do not +delete only a portion of a molecule (only some of its atoms), or +LAMMPS will soon generate an error when it tries to find those atoms. +LAMMPS will warn you if any of the atoms eligible for deletion have a +non-zero molecule ID, but does not check for this at the time of +deletion. +

      +

      If the setting for the molecule keyword is yes, entire molecules +are exchanged. This feature is not yet supported. +

      +

      Use of this fix typically will cause the number of atoms to fluctuate, +therefore, you will want to use the +compute_modify command to insure that the +current number of atoms is used as a normalizing factor each time +temperature is computed. Here is the necessary command: +

      +
      compute_modify thermo_temp dynamic yes 
      +
      +

      If LJ units are used, note that a value of 0.18292026 is used by this +fix as the reduced value for Planck's constant. This value was +derived from LJ paramters for argon, where h* = h/sqrt(sigma^2 * +epsilon * mass), sigma = 3.429 angstroms, epsilon/k = 121.85 K, and +mass = 39.948 amu. +

      +

      Restart, fix_modify, output, run start/stop, minimize info: +

      +

      This fix writes the state of the deposition to binary restart +files. This includes information about the random +number generator seed, the next timestep for MC exchanges, etc. See +the read_restart command for info on how to +re-specify a fix in an input script that reads a restart file, so that +the operation of the fix continues in an uninterrupted fashion. +

      +

      None of the fix_modify options are relevant to this +fix. +

      +

      This fix computes a global vector of length 6, which can be accessed +by various output commands. The vector +values are the following global cummulative quantities: +

      +
      • 1 = displacement attempts +
      • 2 = displacement successes +
      • 3 = deletion attempts +
      • 4 = deletion successes +
      • 5 = insertion attempts +
      • 6 = insertion successes +
      +

      The vector values calculated by this fix are "extensive". +

      +

      No parameter of this fix can be used with the start/stop keywords of +the run command. This fix is not invoked during energy +minimization. +

      +

      Restrictions: +

      +

      This fix is part of the MC package. It is only enabled if LAMMPS was +built with that package. See the Making +LAMMPS section for more info. +

      +

      Do not set "neigh_modify once yes" or else this fix will never be +called. Reneighboring is required. +

      +

      You cannot currently exchange charged particles or molecules with a +net charge. +

      +

      Only pairwise interactions, as defined by the +pair_style command, are included in this +calculation. Long-range interactions due to a +kspace_style command are not included. Not all +pair potentials can be evaluated in a pairwise mode as required by +this fix. For example, 3-body potentials, such as +Tersoff and Stillinger-Weber cannot +be used. EAM potentials for metals only include the +pair potential portion of the EAM interaction, not the embedding term. +

      +

      Related commands: +

      +

      fix_nvt, neighbor, +fix_deposit, fix_evaporate +

      +

      Default: +

      +

      The option defaults are molecule = no. +

      +
      + + + +

      (Frenkel) Frenkel and Smit, Understanding Molecular Simulation, +Academic Press, London, 2002. +

      + diff --git a/doc/fix_gcmc.txt b/doc/fix_gcmc.txt new file mode 100644 index 0000000000..e428e5c6aa --- /dev/null +++ b/doc/fix_gcmc.txt @@ -0,0 +1,169 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix gcmc command :h3 + +[Syntax:] + +fix ID group-ID gcmc N X M type seed T mu displace keyword values ... :pre + +ID, group-ID are documented in "fix"_fix.html command :ulb,l +gcmc = style name of this fix command :l +N = invoke this fix every N steps :l +X = number of exchanges to attempt every N steps :l +M = number of MC displacements to attempt every N steps :l +type = atom type of exchanged particles :l +seed = random # seed (positive integer) :l +T = temperature of the ideal gas reservoir (temperature units) :l +mu = chemical potential of the ideal gas reservoir (energy units) :l +displace = maximum Monte Carlo displacement distance (length units) :l +zero or more keyword/value pairs may be appended to args :l +keyword = {molecule} + {molecule} value = {no} or {yes} :pre +:ule + +[Examples:] + +fix 2 all gcmc 10 1000 1000 2 29494 298.0 -0.5 0.01 +fix 3 all gcmc 10 100 100 1 3456543 3.0 -2.5 0.1 molecule yes :pre + +[Description:] + +This fix performs grand canonical Monte Carlo (GCMC) exchanges of +particles of the given type with an imaginary ideal gas reservoir at +the specified T and chemical potential (mu) as discussed in +"(Frenkel)"_#Frenkel. If used with the "fix nvt"_fix_nh.html command, +simulations in the grand canonical enemble (muVT, constant chemical +potential, constant volume, and constant temperature) can be +performed. Specific uses include computing isotherms in microporous +materials, or computing vapor-liquid coexistence curves. + +Perform up to X exchanges of particles of the given type between the +simulation domain and the imaginary reservoir every N timesteps. Also +perform M Monte Carlo displacements of particles of the given type +within the simulation domain. M should typically be chosen to be +approximately equal to the expected number of particles of the given +type within the domain, which will result in roughly one MC +translation per particle per MC cycle. + +This fix cannot be used to perform MC displacements of particles other +than the exchanged type. All particles in the simulation domain can be +moved using regular time integration displacements, e.g. via +"fix_nvt"_fix_nvt.html, resulting in a hybrid GCMC+MD simulation. + +If used with "fix_nvt"_fix_nvt.html, the temperature of the imaginary +reservoir, T, should be set to be equivalent to the target temperature +used in "fix_nvt"_fix_nvt.html. Otherwise, the imaginary reservoir +will not be in thermal equilibrium with the simulation domain. + +Note that neighbor lists are re-built every timestep that this fix is +invoked, so you should not set N to be too small. However, periodic +rebuilds are necessary in order to avoid dangerous rebuilds and missed +interactions. Specifically, avoid performing so many MC displacements +per timestep that a particle can move beyond the neighbor list skin +distance. See the "neighbor"_neighbor.html command for details. + +When a particle is to be inserted, its coordinates are chosen as a +random position within the current simulation domain, and its velocity +is randomly chosen from the specified temperature distribution given +by T. + +Exchanged particles have the specified atom type and are assigned to +two groups: the default group "all" and the group specified in the fix +gcmc command (which can also be "all"). + +If the setting for the {molecule} keyword is {no}, then only single +atoms are exchanged. In this case, you should ensure you do not +delete only a portion of a molecule (only some of its atoms), or +LAMMPS will soon generate an error when it tries to find those atoms. +LAMMPS will warn you if any of the atoms eligible for deletion have a +non-zero molecule ID, but does not check for this at the time of +deletion. + +If the setting for the {molecule} keyword is {yes}, entire molecules +are exchanged. This feature is not yet supported. + +Use of this fix typically will cause the number of atoms to fluctuate, +therefore, you will want to use the +"compute_modify"_compute_modify.html command to insure that the +current number of atoms is used as a normalizing factor each time +temperature is computed. Here is the necessary command: + +compute_modify thermo_temp dynamic yes :pre + +If LJ units are used, note that a value of 0.18292026 is used by this +fix as the reduced value for Planck's constant. This value was +derived from LJ paramters for argon, where h* = h/sqrt(sigma^2 * +epsilon * mass), sigma = 3.429 angstroms, epsilon/k = 121.85 K, and +mass = 39.948 amu. + +[Restart, fix_modify, output, run start/stop, minimize info:] + +This fix writes the state of the deposition to "binary restart +files"_restart.html. This includes information about the random +number generator seed, the next timestep for MC exchanges, etc. See +the "read_restart"_read_restart.html command for info on how to +re-specify a fix in an input script that reads a restart file, so that +the operation of the fix continues in an uninterrupted fashion. + +None of the "fix_modify"_fix_modify.html options are relevant to this +fix. + +This fix computes a global vector of length 6, which can be accessed +by various "output commands"_Section_howto.html#howto_15. The vector +values are the following global cummulative quantities: + +1 = displacement attempts +2 = displacement successes +3 = deletion attempts +4 = deletion successes +5 = insertion attempts +6 = insertion successes :ul + +The vector values calculated by this fix are "extensive". + +No parameter of this fix can be used with the {start/stop} keywords of +the "run"_run.html command. This fix is not invoked during "energy +minimization"_minimize.html. + +[Restrictions:] + +This fix is part of the MC package. It is only enabled if LAMMPS was +built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +Do not set "neigh_modify once yes" or else this fix will never be +called. Reneighboring is required. + +You cannot currently exchange charged particles or molecules with a +net charge. + +Only pairwise interactions, as defined by the +"pair_style"_pair_style.html command, are included in this +calculation. Long-range interactions due to a +"kspace_style"_kspace_style.html command are not included. Not all +pair potentials can be evaluated in a pairwise mode as required by +this fix. For example, 3-body potentials, such as +"Tersoff"_pair_tersoff.html and "Stillinger-Weber"_pair_sw.html cannot +be used. "EAM"_pair_eam.html potentials for metals only include the +pair potential portion of the EAM interaction, not the embedding term. + +[Related commands:] + +"fix_nvt"_fix_nvt.html, "neighbor"_neighbor.html, +"fix_deposit"_fix_deposit.html, "fix_evaporate"_fix_evaporate.html + +[Default:] + +The option defaults are molecule = no. + +:line + +:link(Frenkel) +[(Frenkel)] Frenkel and Smit, Understanding Molecular Simulation, +Academic Press, London, 2002. diff --git a/doc/fix_gravity.html b/doc/fix_gravity.html index 7c40c5e788..fbc2fce7f3 100644 --- a/doc/fix_gravity.html +++ b/doc/fix_gravity.html @@ -13,6 +13,8 @@

      fix gravity/cuda command

      +

      fix gravity/omp command +

      Syntax:

      fix ID group gravity style magnitude args 
      @@ -89,21 +91,22 @@ by (x,y,z).  For 2d systems, the z component is ignored.
       


      -

      Styles with a cuda suffix are functionally the same as the -corresponding style without the suffix. They have been optimized to -run faster, depending on your available hardware, as discussed in -this section of the manual. The accelerated -styles take the same arguments and should produce the same results, -except for round-off and precision issues. +

      Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues.

      -

      These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

      These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info.

      You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

      See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -113,12 +116,23 @@ instructions on how to use the accelerated styles effectively.

      Restart, fix_modify, output, run start/stop, minimize info:

      No information about this fix is written to binary restart -files. None of the fix_modify options -are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. -This fix is not invoked during energy minimization. +files. +

      +

      The fix_modify energy option is supported by this +fix to add the gravitational potential energy of the system to the +system's potential energy as part of thermodynamic +output. +

      +

      This fix computes a global scalar which can be accessed by various +output commands. This scalar is the +gravitational potential energy of the particles in the defined field, +namely mass * (g dot x) for each particles, where x and mass are the +particles position and mass, and g is the gravitational field. The +scalar value calculated by this fix is "extensive". +

      +

      No parameter of this fix can be used with the start/stop keywords of +the run command. This fix is not invoked during energy +minimization.

      Restrictions: none

      diff --git a/doc/fix_gravity.txt b/doc/fix_gravity.txt index cb2c902219..bad5edc997 100644 --- a/doc/fix_gravity.txt +++ b/doc/fix_gravity.txt @@ -8,6 +8,7 @@ fix gravity command :h3 fix gravity/cuda command :h3 +fix gravity/omp command :h3 [Syntax:] @@ -80,21 +81,22 @@ by (x,y,z). For 2d systems, the z component is ignored. :line -Styles with a {cuda} suffix are functionally the same as the -corresponding style without the suffix. They have been optimized to -run faster, depending on your available hardware, as discussed in -"this section"_Section_accelerate.html of the manual. The accelerated -styles take the same arguments and should produce the same results, -except for round-off and precision issues. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -104,12 +106,23 @@ instructions on how to use the accelerated styles effectively. [Restart, fix_modify, output, run start/stop, minimize info:] No information about this fix is written to "binary restart -files"_restart.html. None of the "fix_modify"_fix_modify.html options -are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. -This fix is not invoked during "energy minimization"_minimize.html. +files"_restart.html. + +The "fix_modify"_fix_modify.html {energy} option is supported by this +fix to add the gravitational potential energy of the system to the +system's potential energy as part of "thermodynamic +output"_thermo_style.html. + +This fix computes a global scalar which can be accessed by various +"output commands"_Section_howto.html#howto_15. This scalar is the +gravitational potential energy of the particles in the defined field, +namely mass * (g dot x) for each particles, where x and mass are the +particles position and mass, and g is the gravitational field. The +scalar value calculated by this fix is "extensive". + +No parameter of this fix can be used with the {start/stop} keywords of +the "run"_run.html command. This fix is not invoked during "energy +minimization"_minimize.html. [Restrictions:] none diff --git a/doc/fix_heat.html b/doc/fix_heat.html index 293e131e73..e871f5f484 100644 --- a/doc/fix_heat.html +++ b/doc/fix_heat.html @@ -84,8 +84,8 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes a global scalar which can be accessed by various -output commands. This scalar is the most -recent value by which velocites were scaled. The scalar value +output commands. This scalar is the +most recent value by which velocites were scaled. The scalar value calculated by this fix is "intensive".

      No parameter of this fix can be used with the start/stop keywords of diff --git a/doc/fix_heat.txt b/doc/fix_heat.txt index 9848ccb54e..b6c3ee3560 100644 --- a/doc/fix_heat.txt +++ b/doc/fix_heat.txt @@ -74,8 +74,8 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. This scalar is the most -recent value by which velocites were scaled. The scalar value +"output commands"_Section_howto.html#howto_15. This scalar is the +most recent value by which velocites were scaled. The scalar value calculated by this fix is "intensive". No parameter of this fix can be used with the {start/stop} keywords of diff --git a/doc/fix_imd.html b/doc/fix_imd.html index 9f24cc96a2..1d89148879 100644 --- a/doc/fix_imd.html +++ b/doc/fix_imd.html @@ -50,10 +50,11 @@ visualization program, so that it can monitor the progress of the simulation and interactively apply forces to selected atoms.

      If LAMMPS is compiled with the preprocessor flag -DLAMMPS_ASYNC_IMD -then fix imd will use posix threads to spawn a thread on MPI rank 0 in -order to offload data reading and writing from the main execution -thread and potentiall lower the inferred latencies for slow -communication links. This feature has only been tested under linux. +then fix imd will use POSIX threads to spawn a IMD communication +thread on MPI rank 0 in order to offload data reading and writing +from the main execution thread and potentially lower the inferred +latencies for slow communication links. This feature has only been +tested under linux.

      There are example scripts for using this package with LAMMPS in examples/USER/imd. Additional examples and a driver for use with the @@ -144,24 +145,17 @@ screen output is active.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global scalar or vector or per-atom -quantities are stored by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +quantities are stored by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions:

      -

      This fix is part of the "user-misc" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the USER-MISC package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

      -

      On platforms that support multi-threading, this fix can be compiled in -a way that the coordinate transfers to the IMD client can be handled -from a separate thread, when LAMMPS is compiled with the --DLAMMPS_ASYNC_IMD preprocessor flag. This should to keep MD loop -times low and transfer rates high, especially for systems with many -atoms and for slow connections. -

      When used in combination with VMD, a topology or coordinate file has to be loaded, which matches (in number and ordering of atoms) the group the fix is applied to. The fix internally sorts atom IDs by diff --git a/doc/fix_imd.txt b/doc/fix_imd.txt index 5c0018dad6..283755a796 100644 --- a/doc/fix_imd.txt +++ b/doc/fix_imd.txt @@ -42,10 +42,11 @@ visualization program"_VMD, so that it can monitor the progress of the simulation and interactively apply forces to selected atoms. If LAMMPS is compiled with the preprocessor flag -DLAMMPS_ASYNC_IMD -then fix imd will use posix threads to spawn a thread on MPI rank 0 in -order to offload data reading and writing from the main execution -thread and potentiall lower the inferred latencies for slow -communication links. This feature has only been tested under linux. +then fix imd will use POSIX threads to spawn a IMD communication +thread on MPI rank 0 in order to offload data reading and writing +from the main execution thread and potentially lower the inferred +latencies for slow communication links. This feature has only been +tested under linux. There are example scripts for using this package with LAMMPS in examples/USER/imd. Additional examples and a driver for use with the @@ -125,7 +126,7 @@ If IMD control messages are received, a line of text describing the message and its effect will be printed to the LAMMPS output screen, if screen output is active. -:link(VMD,http://www.ks.uiuc.edu/Research/vmd)x +:link(VMD,http://www.ks.uiuc.edu/Research/vmd) :link(imdvmd,http://www.ks.uiuc.edu/Research/vmd/imd/) :link(vrpnicms,http://sites.google.com/site/akohlmey/software/vrpn-icms) @@ -135,22 +136,15 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global scalar or vector or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "user-misc" package. It is only enabled if +This fix is part of the USER-MISC package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. - -On platforms that support multi-threading, this fix can be compiled in -a way that the coordinate transfers to the IMD client can be handled -from a separate thread, when LAMMPS is compiled with the --DLAMMPS_ASYNC_IMD preprocessor flag. This should to keep MD loop -times low and transfer rates high, especially for systems with many -atoms and for slow connections. +LAMMPS"_Section_start.html#start_3 section for more info. When used in combination with VMD, a topology or coordinate file has to be loaded, which matches (in number and ordering of atoms) the diff --git a/doc/fix_indent.html b/doc/fix_indent.html index b23d54a11f..4e77d2e948 100644 --- a/doc/fix_indent.html +++ b/doc/fix_indent.html @@ -183,7 +183,7 @@ output. The energy of each particle interacting with the indenter is K/3 (r - R)^3.

      This fix computes a global scalar energy and a global 3-vector of -forces (on the indenter), which can be accessed by various output +forces (on the indenter), which can be accessed by various output commands. The scalar and vector values calculated by this fix are "extensive".

      diff --git a/doc/fix_indent.txt b/doc/fix_indent.txt index 3f4983f264..27f33125d2 100644 --- a/doc/fix_indent.txt +++ b/doc/fix_indent.txt @@ -175,7 +175,7 @@ with the indenter is K/3 (r - R)^3. This fix computes a global scalar energy and a global 3-vector of forces (on the indenter), which can be accessed by various "output -commands"_Section_howto.html#4_15. The scalar and vector values +commands"_Section_howto.html#howto_15. The scalar and vector values calculated by this fix are "extensive". The forces due to this fix are imposed during an energy minimization, diff --git a/doc/fix_langevin.html b/doc/fix_langevin.html index b304ac44fb..17fefcd560 100644 --- a/doc/fix_langevin.html +++ b/doc/fix_langevin.html @@ -106,8 +106,8 @@ should not normally be used on atoms that also have their temperature controlled by another fix - e.g. by fix nvt or fix temp/rescale commands.

      -

      See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

      See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.

      The desired temperature at each timestep is a ramped value during the @@ -216,7 +216,7 @@ output. Note that use of this option requires setting the tally keyword to yes.

      This fix computes a global scalar which can be accessed by various -output commands. The scalar is the +output commands. The scalar is the cummulative energy change due to this fix. The scalar value calculated by this fix is "extensive". Note that calculation of this quantity requires setting the tally keyword to yes. diff --git a/doc/fix_langevin.txt b/doc/fix_langevin.txt index 1228b63265..63fd2135f8 100644 --- a/doc/fix_langevin.txt +++ b/doc/fix_langevin.txt @@ -95,8 +95,8 @@ should not normally be used on atoms that also have their temperature controlled by another fix - e.g. by "fix nvt"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html commands. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. The desired temperature at each timestep is a ramped value during the @@ -205,7 +205,7 @@ output"_thermo_style.html. Note that use of this option requires setting the {tally} keyword to {yes}. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the +"output commands"_Section_howto.html#howto_15. The scalar is the cummulative energy change due to this fix. The scalar value calculated by this fix is "extensive". Note that calculation of this quantity requires setting the {tally} keyword to {yes}. diff --git a/doc/fix_langevin_eff.html b/doc/fix_langevin_eff.html index 895c8c47e9..db86010923 100644 --- a/doc/fix_langevin_eff.html +++ b/doc/fix_langevin_eff.html @@ -86,7 +86,7 @@ output. Note that use of this option requires setting the tally keyword to yes.

      This fix computes a global scalar which can be accessed by various -output commands. The scalar is the +output commands. The scalar is the cummulative energy change due to this fix. The scalar value calculated by this fix is "extensive". Note that calculation of this quantity requires setting the tally keyword to yes. @@ -99,8 +99,8 @@ quantity requires setting the tally keyword to yes.

      Restrictions: none

      -

      This fix is part of the "user-eff" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the USER-EFF package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

      Related commands: diff --git a/doc/fix_langevin_eff.txt b/doc/fix_langevin_eff.txt index b48bb84772..a6806a39cd 100644 --- a/doc/fix_langevin_eff.txt +++ b/doc/fix_langevin_eff.txt @@ -76,7 +76,7 @@ output"_thermo_style.html. Note that use of this option requires setting the {tally} keyword to {yes}. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the +"output commands"_Section_howto.html#howto_15. The scalar is the cummulative energy change due to this fix. The scalar value calculated by this fix is "extensive". Note that calculation of this quantity requires setting the {tally} keyword to {yes}. @@ -89,9 +89,9 @@ This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none -This fix is part of the "user-eff" package. It is only enabled if +This fix is part of the USER-EFF package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/fix_lineforce.html b/doc/fix_lineforce.html index 7de7b3ac03..9c87f094e2 100644 --- a/doc/fix_lineforce.html +++ b/doc/fix_lineforce.html @@ -38,9 +38,9 @@ it should continue to move along the line thereafter.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command.

      The forces due to this fix are imposed during an energy minimization, invoked by the minimize command. diff --git a/doc/fix_lineforce.txt b/doc/fix_lineforce.txt index f5e069ada0..8b589632b6 100644 --- a/doc/fix_lineforce.txt +++ b/doc/fix_lineforce.txt @@ -36,8 +36,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. The forces due to this fix are imposed during an energy minimization, invoked by the "minimize"_minimize.html command. diff --git a/doc/fix_meso.html b/doc/fix_meso.html new file mode 100644 index 0000000000..b3684d8720 --- /dev/null +++ b/doc/fix_meso.html @@ -0,0 +1,57 @@ + +

      LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
      + + + + + + +
      + +

      fix meso command +

      +

      Syntax: +

      +
      fix ID group-ID meso 
      +
      +
      • ID, group-ID are documented in fix command +
      • meso = style name of this fix command +
      +

      Examples: +

      +
      fix 1 all meso 
      +
      +

      Description: +

      +

      Perform time integration to update position, velocity, internal energy +and local density for atoms in the group each timestep. This fix is +needed to time-integrate mesoscopic systems where particles carry +internal variables such as SPH or DPDE. +

      +

      See this PDF guide to using SPH in +LAMMPS. +

      +

      Restart, fix_modify, output, run start/stop, minimize info: +

      +

      No information about this fix is written to binary restart +files. None of the fix_modify options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various output +commands. No parameter of this fix can be +used with the start/stop keywords of the run command. +This fix is not invoked during energy minimization. +

      +

      Restrictions: +

      +

      This fix is part of the USER-SPH package. It is only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

      +

      Related commands: +

      +

      "fix meso/stationary" +

      +

      Default: none +

      + diff --git a/doc/fix_meso.txt b/doc/fix_meso.txt new file mode 100644 index 0000000000..7c6a5cfc43 --- /dev/null +++ b/doc/fix_meso.txt @@ -0,0 +1,52 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix meso command :h3 + +[Syntax:] + +fix ID group-ID meso :pre + +ID, group-ID are documented in "fix"_fix.html command +meso = style name of this fix command :ul + +[Examples:] + +fix 1 all meso :pre + +[Description:] + +Perform time integration to update position, velocity, internal energy +and local density for atoms in the group each timestep. This fix is +needed to time-integrate mesoscopic systems where particles carry +internal variables such as SPH or DPDE. + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information about this fix is written to "binary restart +files"_restart.html. None of the "fix_modify"_fix_modify.html options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various "output +commands"_Section_howto.html#4_15. No parameter of this fix can be +used with the {start/stop} keywords of the "run"_run.html command. +This fix is not invoked during "energy minimization"_minimize.html. + +[Restrictions:] + +This fix is part of the USER-SPH package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"fix meso/stationary" + +[Default:] none diff --git a/doc/fix_meso_stationary.html b/doc/fix_meso_stationary.html new file mode 100644 index 0000000000..67a9a6a207 --- /dev/null +++ b/doc/fix_meso_stationary.html @@ -0,0 +1,58 @@ + +
      LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
      + + + + + + +
      + +

      fix meso/stationary command +

      +

      Syntax: +

      +
      fix ID group-ID meso/stationary 
      +
      +
      • ID, group-ID are documented in fix command +
      • meso = style name of this fix command +
      +

      Examples: +

      +
      fix 1 boundary meso/stationary 
      +
      +

      Description: +

      +

      Perform time integration to update internal energy and local density, +but not position or velocity for atoms in the group each timestep. +This fix is needed for SPH simulations to correctly time-integrate +fixed boundary particles which constrain a fluid to a given region in +space. +

      +

      See this PDF guide to using SPH in +LAMMPS. +

      +

      Restart, fix_modify, output, run start/stop, minimize info: +

      +

      No information about this fix is written to binary restart +files. None of the fix_modify options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various output +commands. No parameter of this fix can be +used with the start/stop keywords of the run command. +This fix is not invoked during energy minimization. +

      +

      Restrictions: +

      +

      This fix is part of the USER-SPH package. It is only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

      +

      Related commands: +

      +

      "fix meso" +

      +

      Default: none +

      + diff --git a/doc/fix_meso_stationary.txt b/doc/fix_meso_stationary.txt new file mode 100644 index 0000000000..31bdb4b1f3 --- /dev/null +++ b/doc/fix_meso_stationary.txt @@ -0,0 +1,53 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix meso/stationary command :h3 + +[Syntax:] + +fix ID group-ID meso/stationary :pre + +ID, group-ID are documented in "fix"_fix.html command +meso = style name of this fix command :ul + +[Examples:] + +fix 1 boundary meso/stationary :pre + +[Description:] + +Perform time integration to update internal energy and local density, +but not position or velocity for atoms in the group each timestep. +This fix is needed for SPH simulations to correctly time-integrate +fixed boundary particles which constrain a fluid to a given region in +space. + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information about this fix is written to "binary restart +files"_restart.html. None of the "fix_modify"_fix_modify.html options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various "output +commands"_Section_howto.html#4_15. No parameter of this fix can be +used with the {start/stop} keywords of the "run"_run.html command. +This fix is not invoked during "energy minimization"_minimize.html. + +[Restrictions:] + +This fix is part of the USER-SPH package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"fix meso" + +[Default:] none diff --git a/doc/fix_momentum.html b/doc/fix_momentum.html index ab91b7d3a7..73e1a7a6f9 100644 --- a/doc/fix_momentum.html +++ b/doc/fix_momentum.html @@ -63,9 +63,9 @@ initial velocities with zero aggregate linear and/or angular momentum.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions: none diff --git a/doc/fix_momentum.txt b/doc/fix_momentum.txt index f2ed114b63..6fab08f1cb 100644 --- a/doc/fix_momentum.txt +++ b/doc/fix_momentum.txt @@ -56,8 +56,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none diff --git a/doc/fix_move.html b/doc/fix_move.html index c56dac4f4c..c41d323798 100644 --- a/doc/fix_move.html +++ b/doc/fix_move.html @@ -188,8 +188,8 @@ uninterrupted fashion. fix.

      This fix produces a per-atom array which can be accessed by various -output commands. The number of columns for -each atom is 3, and the columns store the original unwrapped x,y,z +output commands. The number of columns +for each atom is 3, and the columns store the original unwrapped x,y,z coords of each atom. The per-atom values can be accessed on any timestep.

      diff --git a/doc/fix_move.txt b/doc/fix_move.txt index f46724f808..a07bd3307a 100644 --- a/doc/fix_move.txt +++ b/doc/fix_move.txt @@ -179,8 +179,8 @@ None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix produces a per-atom array which can be accessed by various -"output commands"_Section_howto.html#4_15. The number of columns for -each atom is 3, and the columns store the original unwrapped x,y,z +"output commands"_Section_howto.html#howto_15. The number of columns +for each atom is 3, and the columns store the original unwrapped x,y,z coords of each atom. The per-atom values can be accessed on any timestep. diff --git a/doc/fix_msst.html b/doc/fix_msst.html index 99294e06dc..60f2daffe7 100644 --- a/doc/fix_msst.html +++ b/doc/fix_msst.html @@ -139,14 +139,14 @@ variable lgr_pos equal f_msst[4] thermo_style custom step temp ke pe lz pzz etotal v_dhug v_dray v_lgr_vel v_lgr_pos f_msst

      These fixes compute a global scalar and a global vector of 4 -quantities, which can be accessed by various output -commands. The scalar values calculated by -this fix are "extensive"; the vector values are "intensive". +quantities, which can be accessed by various output +commands. The scalar values calculated +by this fix are "extensive"; the vector values are "intensive".

      Restrictions:

      -

      This fix style is part of the "shock" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix style is part of the SHOCK package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

      All cell dimensions must be periodic. This fix can not be used with a @@ -155,7 +155,7 @@ all.

      Related commands:

      -

      fix deform +

      fix nphug, fix deform

      Default:

      diff --git a/doc/fix_msst.txt b/doc/fix_msst.txt index 95612079bc..60dbc1f20d 100644 --- a/doc/fix_msst.txt +++ b/doc/fix_msst.txt @@ -130,14 +130,14 @@ thermo_style custom step temp ke pe lz pzz etotal v_dhug v_dray v_lgr_vel v_ These fixes compute a global scalar and a global vector of 4 quantities, which can be accessed by various "output -commands"_Section_howto.html#4_15. The scalar values calculated by -this fix are "extensive"; the vector values are "intensive". +commands"_Section_howto.html#howto_15. The scalar values calculated +by this fix are "extensive"; the vector values are "intensive". [Restrictions:] -This fix style is part of the "shock" package. It is only enabled if +This fix style is part of the SHOCK package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. All cell dimensions must be periodic. This fix can not be used with a triclinic cell. The MSST fix has been tested only for the group-ID @@ -145,7 +145,7 @@ all. [Related commands:] -"fix deform"_fix_deform.html +"fix nphug"_fix_nphug.html, "fix deform"_fix_deform.html [Default:] diff --git a/doc/fix_neb.html b/doc/fix_neb.html index 69837ca052..79390f9b38 100644 --- a/doc/fix_neb.html +++ b/doc/fix_neb.html @@ -29,7 +29,7 @@ simulation run via the neb command to perform a nudged elastic band (NEB) calculation for transition state finding. Hi-level explanations of NEB are given with the neb command and in -this section of the manual. The fix neb +this section of the manual. The fix neb command must be used with the "neb" command to define how inter-replica forces are computed.

      @@ -81,9 +81,9 @@ first equation.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command.

      The forces due to this fix are imposed during an energy minimization, as invoked by the minimize command via the @@ -91,9 +91,9 @@ as invoked by the minimize command via the

      Restrictions:

      -

      This command can only be used if LAMMPS was built with the "replica" -package. See the Making LAMMPS section for -more info on packages. +

      This command can only be used if LAMMPS was built with the REPLICA +package. See the Making LAMMPS section +for more info on packages.

      Related commands:

      diff --git a/doc/fix_neb.txt b/doc/fix_neb.txt index 353bde8bfd..397a259c4f 100644 --- a/doc/fix_neb.txt +++ b/doc/fix_neb.txt @@ -26,7 +26,7 @@ Add inter-replica forces to atoms in the group for a multi-replica simulation run via the "neb"_neb.html command to perform a nudged elastic band (NEB) calculation for transition state finding. Hi-level explanations of NEB are given with the "neb"_neb.html command and in -"this section"_Section_howto.html#4_5 of the manual. The fix neb +"this section"_Section_howto.html#howto_5 of the manual. The fix neb command must be used with the "neb" command to define how inter-replica forces are computed. @@ -79,8 +79,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. The forces due to this fix are imposed during an energy minimization, as invoked by the "minimize"_minimize.html command via the @@ -88,9 +88,9 @@ as invoked by the "minimize"_minimize.html command via the [Restrictions:] -This command can only be used if LAMMPS was built with the "replica" -package. See the "Making LAMMPS"_Section_start.html#2_3 section for -more info on packages. +This command can only be used if LAMMPS was built with the REPLICA +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. [Related commands:] diff --git a/doc/fix_nh.html b/doc/fix_nh.html index 684641e6d8..6bf376ba76 100644 --- a/doc/fix_nh.html +++ b/doc/fix_nh.html @@ -28,7 +28,7 @@
    • style_name = nvt or npt or nph
      one or more keyword value pairs may be appended
      -keyword = temp or iso or aniso or tri or x or y or z or xy or yz or xz or couple or tchain or pchain or mtk or tloop or ploop or nreset or drag or dilate
      +keyword = temp or iso or aniso or tri or x or y or z or xy or yz or xz or couple or tchain or pchain or mtk or tloop or ploop or nreset or drag or dilate or scaleyz or scalexz or scalexy
         temp values = Tstart Tstop Tdamp
           Tstart,Tstop = external temperature at start/end of run
           Tdamp = temperature damping parameter (time units)
      @@ -322,8 +322,8 @@ have their temperature controlled by another fix - e.g. by fix temp/rescale
       commands.
       

      -

      See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

      See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting and barostatting.


      @@ -380,14 +380,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

      -

      These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

      These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

      You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

      See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -428,7 +428,7 @@ and barostatting to the system's potential energy as part of thermodynamic output.

      These fixes compute a global scalar and a global vector of quantities, -which can be accessed by various output +which can be accessed by various output commands. The scalar value calculated by these fixes is "extensive"; the vector values are "intensive".

      diff --git a/doc/fix_nh.txt b/doc/fix_nh.txt index 0f766fb9d2..f7dd7f2561 100644 --- a/doc/fix_nh.txt +++ b/doc/fix_nh.txt @@ -19,7 +19,7 @@ fix ID group-ID style_name keyword value ... :pre ID, group-ID are documented in "fix"_fix.html command :ulb,l style_name = {nvt} or {npt} or {nph} :l one or more keyword value pairs may be appended -keyword = {temp} or {iso} or {aniso} or {tri} or {x} or {y} or {z} or {xy} or {yz} or {xz} or {couple} or {tchain} or {pchain} or {mtk} or {tloop} or {ploop} or {nreset} or {drag} or {dilate} +keyword = {temp} or {iso} or {aniso} or {tri} or {x} or {y} or {z} or {xy} or {yz} or {xz} or {couple} or {tchain} or {pchain} or {mtk} or {tloop} or {ploop} or {nreset} or {drag} or {dilate} or {scaleyz} or {scalexz} or {scalexy} {temp} values = Tstart Tstop Tdamp Tstart,Tstop = external temperature at start/end of run Tdamp = temperature damping parameter (time units) @@ -312,8 +312,8 @@ have their temperature controlled by another fix - e.g. by "fix langevin"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html commands. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting and barostatting. :line @@ -370,14 +370,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -419,7 +419,7 @@ and barostatting to the system's potential energy as part of These fixes compute a global scalar and a global vector of quantities, which can be accessed by various "output -commands"_Section_howto.html#4_15. The scalar value calculated by +commands"_Section_howto.html#howto_15. The scalar value calculated by these fixes is "extensive"; the vector values are "intensive". The scalar is the cumulative energy change due to the fix. diff --git a/doc/fix_nh_eff.html b/doc/fix_nh_eff.html index 5677e960c8..7d159b4bd6 100644 --- a/doc/fix_nh_eff.html +++ b/doc/fix_nh_eff.html @@ -110,8 +110,8 @@ for details.

      Restrictions:

      -

      This fix is part of the "user-eff" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the USER-EFF package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

      Other restriction discussed on the doc page for the fix nvt, npt, and diff --git a/doc/fix_nh_eff.txt b/doc/fix_nh_eff.txt index 3d7a261e77..84ef87d6f7 100644 --- a/doc/fix_nh_eff.txt +++ b/doc/fix_nh_eff.txt @@ -102,9 +102,9 @@ for details. [Restrictions:] -This fix is part of the "user-eff" package. It is only enabled if +This fix is part of the USER-EFF package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. Other restriction discussed on the doc page for the "fix nvt, npt, and nph"_fix_nh.html commands also apply. diff --git a/doc/fix_nph_asphere.html b/doc/fix_nph_asphere.html index fb9fe89e12..43e2383abc 100644 --- a/doc/fix_nph_asphere.html +++ b/doc/fix_nph_asphere.html @@ -111,8 +111,8 @@ quantities as does the fix nph command.

      Restrictions:

      -

      This fix is part of the "asphere" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the Making LAMMPS section for more info.

      This fix requires that atoms store torque and angular momementum and a diff --git a/doc/fix_nph_asphere.txt b/doc/fix_nph_asphere.txt index e866b685fc..857ff9fd8a 100755 --- a/doc/fix_nph_asphere.txt +++ b/doc/fix_nph_asphere.txt @@ -108,9 +108,9 @@ This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "asphere" package. It is only enabled if -LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. This fix requires that atoms store torque and angular momementum and a quaternion as defined by the "atom_style ellipsoid"_atom_style.html diff --git a/doc/fix_nphug.html b/doc/fix_nphug.html new file mode 100644 index 0000000000..5d4b56cbce --- /dev/null +++ b/doc/fix_nphug.html @@ -0,0 +1,214 @@ + +

      LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
      + + + + + + +
      + +

      fix nphug command +

      +

      Syntax: +

      +
      fix ID group-ID nphug keyword value ... 
      +
      +
      • ID, group-ID are documented in fix command + +
        one or more keyword value pairs may be appended
        +keyword = temp or iso or aniso or tri or x or y or z or couple or tchain or pchain or mtk or tloop or ploop or nreset or drag or dilate or scaleyz or scalexz or scalexy
        +  temp values = Value1 Value2 Tdamp
        +    Value1, Value2 = Nose-Hoover target temperatures, ignored by Hugoniostat
        +    Tdamp = temperature damping parameter (time units)
        +  iso or aniso or tri values = Pstart Pstop Pdamp
        +    Pstart,Pstop = scalar external pressures, must be equal (pressure units)
        +    Pdamp = pressure damping parameter (time units)
        +  x or y or z or xy or yz or xz values = Pstart Pstop Pdamp
        +    Pstart,Pstop = external stress tensor components, must be equal (pressure units)
        +    Pdamp = stress damping parameter (time units)
        +  couple = none or xyz or xy or yz or xz
        +  tchain value = length of thermostat chain (1 = single thermostat)
        +  pchain values = length of thermostat chain on barostat (0 = no thermostat)
        +  mtk value = yes or no = add in MTK adjustment term or not
        +  tloop value = number of sub-cycles to perform on thermostat
        +  ploop value = number of sub-cycles to perform on barostat thermostat
        +  nreset value = reset reference cell every this many timesteps
        +  drag value = drag factor added to barostat/thermostat (0.0 = no drag)
        +  dilate value = all or partial
        +  scaleyz value = yes or no = scale yz with lz
        +  scalexz value = yes or no = scale xz with lz
        +  scalexy value = yes or no = scale xy with ly 
        +
        + +
      +

      Examples: +

      +
      fix myhug all nphug temp 1.0 1.0 10.0 z 40.0 40.0 70.0
      +fix myhug all nphug temp 1.0 1.0 10.0 iso 40.0 40.0 70.0 drag 200.0 tchain 1 pchain 0 
      +
      +

      Description: +

      +

      This command is a variant of the Nose-Hoover +fix npt fix style. +It performs time integration of the Hugoniostat equations +of motion developed by Ravelo et al. (Ravelo). +These equations compress the system to a state with average +axial stress or pressure equal to the specified target value +and that satisfies the Rankine-Hugoniot (RH) +jump conditions for steady shocks. +

      +

      The compression can be performed +either +hydrostatically (using keyword iso, aniso, or tri) or uniaxially +(using keywords x, y, or z). In the hydrostatic case, +the cell dimensions change dynamically so that the average axial stress +in all three directions converges towards the specified target value. +In the uniaxial case, the chosen cell dimension changes dynamically +so that the average +axial stress in that direction converges towards the target value. The +other two cell dimensions are kept fixed (zero lateral strain). +

      +

      This leads to the following additional restrictions on the keywords: +

      +
      • One and only one of the following keywords should be used: iso, aniso, tri, x, y, z +
      • The specified initial and final target pressures must be the same. +
      • The keywords xy, xz, yz may not be used. +
      • The only admissible value for the couple keyword is xyz, which has the same effect as keyword iso +
      • The temp keyword must be used to specify the time constant for kinetic energy relaxation, but initial and final target temperature values are ignored. +
      +

      Essentially, a Hugoniostat simulation is an NPT simulation in which the +user-specified target temperature is replaced with a time-dependent +target temperature Tt obtained from the following equation: +

      +
      +
      +

      where T and Tt are the instantaneous and target temperatures, +P and P0 are the instantaneous and reference pressures or axial stresses, +depending on whether hydrostatic or uniaxial compression is being +performed, V and V0 are the instantaneous and reference volumes, +E and E0 are the instantaneous and reference internal energy (potential +plus kinetic), Ndof is the number of degrees of freedom used in the +definition of temperature, and kB is the Boltzmann constant. Delta is the +negative deviation of the instantaneous temperature from the target temperature. +When the system reaches a stable equilibrium, the value of Delta should +fluctuate about zero. +

      +

      The values of E0, V0, and P0 are the instantaneous values at the start of +the simulation. These can be overridden using the fix_modify keywords e0, +v0, and p0 described below. +

      +
      + +

      IMPORTANT NOTE: Unlike the fix +temp/berendsen command which performs +thermostatting but NO time integration, this fix performs +thermostatting/barostatting AND time integration. Thus you should not +use any other time integration fix, such as fix nve on +atoms to which this fix is applied. Likewise, this fix should not be +used on atoms that have their temperature controlled by another fix +- e.g. by fix langevin or fix temp/rescale +commands. +

      +
      + +

      This fix computes a temperature and pressure at each timestep. To do +this, the fix creates its own computes of style "temp" and "pressure", +as if one of these two sets of commands had been issued: +

      +
      compute fix-ID_temp group-ID temp
      +compute fix-ID_press group-ID pressure fix-ID_temp 
      +
      +
      compute fix-ID_temp all temp
      +compute fix-ID_press all pressure fix-ID_temp 
      +
      +

      See the compute temp and compute +pressure commands for details. Note that the +IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID ++ underscore + "press". The group for +the new computes is "all" since pressure is computed for the entire +system. +

      +

      Note that these are NOT the computes used by thermodynamic output (see +the thermo_style command) with ID = thermo_temp +and thermo_press. This means you can change the attributes of this +fix's temperature or pressure via the +compute_modify command or print this temperature +or pressure during thermodynamic output via the thermo_style +custom command using the appropriate compute-ID. +It also means that changing attributes of thermo_temp or +thermo_press will have no effect on this fix. +

      +
      + +

      Restart, fix_modify, output, run start/stop, minimize info: +

      +

      This fix writes the values of E0, V0, and P0, as well as the +state of all the thermostat and barostat +variables to binary restart files. See the +read_restart command for info on how to re-specify +a fix in an input script that reads a restart file, so that the +operation of the fix continues in an uninterrupted fashion. +

      +

      The fix_modify e0, v0 and p0 keywords +can be used to define the values of E0, V0, and P0. Note the +the values for e0 and p0 are extensive, and so must correspond +to the total energy and volume of the entire system, not energy and +volume per atom. If any of these quantities are not specified, then the +instanteous value in the system at the start of the simulation is used. +

      +

      The fix_modify temp and press options are +supported by these fixes. You can use them to assign a +compute you have defined to this fix which will be used +in its thermostatting or barostatting procedure, as described above. +If you do this, note that the kinetic energy derived from the compute +temperature should be consistent with the virial term computed using +all atoms for the pressure. LAMMPS will warn you if you choose to +compute temperature on a subset of atoms. +

      +

      The fix_modify energy option is supported by these +fixes to add the energy change induced by Nose/Hoover thermostatting +and barostatting to the system's potential energy as part of +thermodynamic output. Either way, this energy is *not* +included in the definition of internal energy E when calculating the value +of Delta in the above equation. +

      +

      These fixes compute a global scalar and a global vector of quantities, +which can be accessed by various output +commands. The scalar value calculated by +these fixes is "extensive"; the vector values are "intensive". +

      +

      The scalar is the cumulative energy change due to the fix. +

      +

      The vector stores three quantities unique to this fix (Delta, Us, and up), +followed by all the internal Nose/Hoover thermostat and barostat +variables defined for fix_style npt. Delta is the deviation +of the temperature from the target temperature, given by the above equation. +Us and up are the shock and particle velocity corresponding to a steady +shock calculated from the RH conditions. They have units of distance/time. +

      +

      Restrictions: +

      +

      This fix style is part of the SHOCK package. It is only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

      +

      All the usual restrictions for fix_style npt apply, +plus the additional ones mentioned above. +

      +

      Related commands: +

      +

      fix msst, fix npt, fix_modify +

      +

      Default: +

      +

      The keyword defaults are the same as those for fix npt +

      +
      + + + +

      (Ravelo) Ravelo, Holian, Germann and Lomdahl, Phys Rev B, 70, 014103 (2004). +

      + diff --git a/doc/fix_nphug.txt b/doc/fix_nphug.txt new file mode 100644 index 0000000000..6ac59d1e16 --- /dev/null +++ b/doc/fix_nphug.txt @@ -0,0 +1,206 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix nphug command :h3 + +[Syntax:] + +fix ID group-ID nphug keyword value ... :pre + +ID, group-ID are documented in "fix"_fix.html command :ulb,l +one or more keyword value pairs may be appended +keyword = {temp} or {iso} or {aniso} or {tri} or {x} or {y} or {z} or {couple} or {tchain} or {pchain} or {mtk} or {tloop} or {ploop} or {nreset} or {drag} or {dilate} or {scaleyz} or {scalexz} or {scalexy} + {temp} values = Value1 Value2 Tdamp + Value1, Value2 = Nose-Hoover target temperatures, ignored by Hugoniostat + Tdamp = temperature damping parameter (time units) + {iso} or {aniso} or {tri} values = Pstart Pstop Pdamp + Pstart,Pstop = scalar external pressures, must be equal (pressure units) + Pdamp = pressure damping parameter (time units) + {x} or {y} or {z} or {xy} or {yz} or {xz} values = Pstart Pstop Pdamp + Pstart,Pstop = external stress tensor components, must be equal (pressure units) + Pdamp = stress damping parameter (time units) + {couple} = {none} or {xyz} or {xy} or {yz} or {xz} + {tchain} value = length of thermostat chain (1 = single thermostat) + {pchain} values = length of thermostat chain on barostat (0 = no thermostat) + {mtk} value = {yes} or {no} = add in MTK adjustment term or not + {tloop} value = number of sub-cycles to perform on thermostat + {ploop} value = number of sub-cycles to perform on barostat thermostat + {nreset} value = reset reference cell every this many timesteps + {drag} value = drag factor added to barostat/thermostat (0.0 = no drag) + {dilate} value = {all} or {partial} + {scaleyz} value = {yes} or {no} = scale yz with lz + {scalexz} value = {yes} or {no} = scale xz with lz + {scalexy} value = {yes} or {no} = scale xy with ly :pre +:ule + +[Examples:] + +fix myhug all nphug temp 1.0 1.0 10.0 z 40.0 40.0 70.0 +fix myhug all nphug temp 1.0 1.0 10.0 iso 40.0 40.0 70.0 drag 200.0 tchain 1 pchain 0 :pre + +[Description:] + +This command is a variant of the Nose-Hoover +"fix npt"_fix_nh.html fix style. +It performs time integration of the Hugoniostat equations +of motion developed by Ravelo et al. "(Ravelo)"_#Ravelo. +These equations compress the system to a state with average +axial stress or pressure equal to the specified target value +and that satisfies the Rankine-Hugoniot (RH) +jump conditions for steady shocks. + +The compression can be performed +either +hydrostatically (using keyword {iso}, {aniso}, or {tri}) or uniaxially +(using keywords {x}, {y}, or {z}). In the hydrostatic case, +the cell dimensions change dynamically so that the average axial stress +in all three directions converges towards the specified target value. +In the uniaxial case, the chosen cell dimension changes dynamically +so that the average +axial stress in that direction converges towards the target value. The +other two cell dimensions are kept fixed (zero lateral strain). + +This leads to the following additional restrictions on the keywords: + +One and only one of the following keywords should be used: {iso}, {aniso}, {tri}, {x}, {y}, {z} +The specified initial and final target pressures must be the same. +The keywords {xy}, {xz}, {yz} may not be used. +The only admissible value for the couple keyword is {xyz}, which has the same effect as keyword {iso} +The {temp} keyword must be used to specify the time constant for kinetic energy relaxation, but initial and final target temperature values are ignored. :ul + +Essentially, a Hugoniostat simulation is an NPT simulation in which the +user-specified target temperature is replaced with a time-dependent +target temperature Tt obtained from the following equation: + +:c,image(Eqs/fix_nphug.jpg) + +where T and Tt are the instantaneous and target temperatures, +P and P0 are the instantaneous and reference pressures or axial stresses, +depending on whether hydrostatic or uniaxial compression is being +performed, V and V0 are the instantaneous and reference volumes, +E and E0 are the instantaneous and reference internal energy (potential +plus kinetic), Ndof is the number of degrees of freedom used in the +definition of temperature, and kB is the Boltzmann constant. Delta is the +negative deviation of the instantaneous temperature from the target temperature. +When the system reaches a stable equilibrium, the value of Delta should +fluctuate about zero. + +The values of E0, V0, and P0 are the instantaneous values at the start of +the simulation. These can be overridden using the fix_modify keywords {e0}, +{v0}, and {p0} described below. + +:line + +IMPORTANT NOTE: Unlike the "fix +temp/berendsen"_fix_temp_berendsen.html command which performs +thermostatting but NO time integration, this fix performs +thermostatting/barostatting AND time integration. Thus you should not +use any other time integration fix, such as "fix nve"_fix_nve.html on +atoms to which this fix is applied. Likewise, this fix should not be +used on atoms that have their temperature controlled by another fix +- e.g. by "fix langevin"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html +commands. + +:line + +This fix computes a temperature and pressure at each timestep. To do +this, the fix creates its own computes of style "temp" and "pressure", +as if one of these two sets of commands had been issued: + +compute fix-ID_temp group-ID temp +compute fix-ID_press group-ID pressure fix-ID_temp :pre + +compute fix-ID_temp all temp +compute fix-ID_press all pressure fix-ID_temp :pre + +See the "compute temp"_compute_temp.html and "compute +pressure"_compute_pressure.html commands for details. Note that the +IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID ++ underscore + "press". The group for +the new computes is "all" since pressure is computed for the entire +system. + +Note that these are NOT the computes used by thermodynamic output (see +the "thermo_style"_thermo_style.html command) with ID = {thermo_temp} +and {thermo_press}. This means you can change the attributes of this +fix's temperature or pressure via the +"compute_modify"_compute_modify.html command or print this temperature +or pressure during thermodynamic output via the "thermo_style +custom"_thermo_style.html command using the appropriate compute-ID. +It also means that changing attributes of {thermo_temp} or +{thermo_press} will have no effect on this fix. + +:line + +[Restart, fix_modify, output, run start/stop, minimize info:] + +This fix writes the values of E0, V0, and P0, as well as the +state of all the thermostat and barostat +variables to "binary restart files"_restart.html. See the +"read_restart"_read_restart.html command for info on how to re-specify +a fix in an input script that reads a restart file, so that the +operation of the fix continues in an uninterrupted fashion. + +The "fix_modify"_fix_modify.html {e0}, {v0} and {p0} keywords +can be used to define the values of E0, V0, and P0. Note the +the values for {e0} and {p0} are extensive, and so must correspond +to the total energy and volume of the entire system, not energy and +volume per atom. If any of these quantities are not specified, then the +instanteous value in the system at the start of the simulation is used. + +The "fix_modify"_fix_modify.html {temp} and {press} options are +supported by these fixes. You can use them to assign a +"compute"_compute.html you have defined to this fix which will be used +in its thermostatting or barostatting procedure, as described above. +If you do this, note that the kinetic energy derived from the compute +temperature should be consistent with the virial term computed using +all atoms for the pressure. LAMMPS will warn you if you choose to +compute temperature on a subset of atoms. + +The "fix_modify"_fix_modify.html {energy} option is supported by these +fixes to add the energy change induced by Nose/Hoover thermostatting +and barostatting to the system's potential energy as part of +"thermodynamic output"_thermo_style.html. Either way, this energy is *not* +included in the definition of internal energy E when calculating the value +of Delta in the above equation. + +These fixes compute a global scalar and a global vector of quantities, +which can be accessed by various "output +commands"_Section_howto.html#howto_15. The scalar value calculated by +these fixes is "extensive"; the vector values are "intensive". + +The scalar is the cumulative energy change due to the fix. + +The vector stores three quantities unique to this fix (Delta, Us, and up), +followed by all the internal Nose/Hoover thermostat and barostat +variables defined for "fix_style npt"_fix_nh.html. Delta is the deviation +of the temperature from the target temperature, given by the above equation. +Us and up are the shock and particle velocity corresponding to a steady +shock calculated from the RH conditions. They have units of distance/time. + +[Restrictions:] + +This fix style is part of the SHOCK package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +All the usual restrictions for "fix_style npt"_fix_nh.html apply, +plus the additional ones mentioned above. + +[Related commands:] + +"fix msst"_fix_msst.html, "fix npt"_fix_nh.html, "fix_modify"_fix_modify.html + +[Default:] + +The keyword defaults are the same as those for "fix npt"_fix_nh.html + +:line + +:link(Ravelo) +[(Ravelo)] Ravelo, Holian, Germann and Lomdahl, Phys Rev B, 70, 014103 (2004). diff --git a/doc/fix_npt_asphere.html b/doc/fix_npt_asphere.html index ff67e97291..7eb9df9abc 100644 --- a/doc/fix_npt_asphere.html +++ b/doc/fix_npt_asphere.html @@ -136,8 +136,8 @@ this.

      Restrictions:

      -

      This fix is part of the "asphere" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the Making LAMMPS section for more info.

      This fix requires that atoms store torque and angular momementum and a diff --git a/doc/fix_npt_asphere.txt b/doc/fix_npt_asphere.txt index 0ca79dd517..e11ef0eb7d 100755 --- a/doc/fix_npt_asphere.txt +++ b/doc/fix_npt_asphere.txt @@ -133,9 +133,9 @@ This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "asphere" package. It is only enabled if -LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. This fix requires that atoms store torque and angular momementum and a quaternion as defined by the "atom_style ellipsoid"_atom_style.html diff --git a/doc/fix_nve.html b/doc/fix_nve.html index 5b9b630495..e08b86dcde 100644 --- a/doc/fix_nve.html +++ b/doc/fix_nve.html @@ -40,14 +40,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

      -

      These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

      These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

      You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

      See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -59,9 +59,9 @@ instructions on how to use the accelerated styles effectively.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions: none diff --git a/doc/fix_nve.txt b/doc/fix_nve.txt index c60d3b123f..fbc23c25e4 100644 --- a/doc/fix_nve.txt +++ b/doc/fix_nve.txt @@ -36,14 +36,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -56,8 +56,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none diff --git a/doc/fix_nve_asphere.html b/doc/fix_nve_asphere.html index d37e659769..8b5ea4a3f5 100644 --- a/doc/fix_nve_asphere.html +++ b/doc/fix_nve_asphere.html @@ -37,15 +37,15 @@ assumes point particles and only updates their position and velocity.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions:

      -

      This fix is part of the "asphere" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the Making LAMMPS section for more info.

      This fix requires that atoms store torque and angular momementum and a diff --git a/doc/fix_nve_asphere.txt b/doc/fix_nve_asphere.txt index 27b5392ce4..d7b70f41ec 100755 --- a/doc/fix_nve_asphere.txt +++ b/doc/fix_nve_asphere.txt @@ -35,15 +35,15 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "asphere" package. It is only enabled if -LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. This fix requires that atoms store torque and angular momementum and a quaternion as defined by the "atom_style ellipsoid"_atom_style.html diff --git a/doc/fix_nve_asphere_noforce.html b/doc/fix_nve_asphere_noforce.html new file mode 100644 index 0000000000..4dd6f31ad6 --- /dev/null +++ b/doc/fix_nve_asphere_noforce.html @@ -0,0 +1,70 @@ + +

      LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
      + + + + + + +
      + +

      fix nve/asphere/noforce command +

      +

      Syntax: +

      +
      fix ID group-ID nve/asphere/noforce 
      +
      +
      • ID, group-ID are documented in fix command +
      • nve/asphere/noforce = style name of this fix command +
      +

      Examples: +

      +

      fix 1 all nve/asphere/noforce +

      +

      Description: +

      +

      Perform updates of position and orientation, but not velocity or +angular momentum for atoms in the group each timestep. In other +words, the force and torque on the atoms is ignored and their velocity +and angular momentum are not updated. The atom velocities and +angularm momenta are used to update their positions and orientation. +

      +

      This is useful as an implicit time integrator for Fast Lubrication +Dynamics, since the velocity and angular momentum are updated by the +pair_style lubricuteU command. +

      +
      + +

      Restart, fix_modify, output, run start/stop, minimize info: +

      +

      No information about this fix is written to binary restart +files. None of the fix_modify options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. +This fix is not invoked during energy minimization. +

      +

      Restrictions: +

      +

      This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the Making +LAMMPS section for more info. +

      +

      This fix requires that atoms store torque and angular momementum and a +quaternion as defined by the atom_style ellipsoid +command. +

      +

      All particles in the group must be finite-size. They cannot be point +particles, but they can be aspherical or spherical as defined by their +shape attribute. +

      +

      Related commands: +

      +

      fix nve/noforce, fix +nve/asphere +

      +

      Default: none +

      + diff --git a/doc/fix_nve_asphere_noforce.txt b/doc/fix_nve_asphere_noforce.txt new file mode 100755 index 0000000000..bc7bc698d2 --- /dev/null +++ b/doc/fix_nve_asphere_noforce.txt @@ -0,0 +1,65 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix nve/asphere/noforce command :h3 + +[Syntax:] + +fix ID group-ID nve/asphere/noforce :pre + +ID, group-ID are documented in "fix"_fix.html command +nve/asphere/noforce = style name of this fix command :ul + +[Examples:] + +fix 1 all nve/asphere/noforce + +[Description:] + +Perform updates of position and orientation, but not velocity or +angular momentum for atoms in the group each timestep. In other +words, the force and torque on the atoms is ignored and their velocity +and angular momentum are not updated. The atom velocities and +angularm momenta are used to update their positions and orientation. + +This is useful as an implicit time integrator for Fast Lubrication +Dynamics, since the velocity and angular momentum are updated by the +"pair_style lubricuteU"_pair_lubricateU.txt command. + +:line + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information about this fix is written to "binary restart +files"_restart.html. None of the "fix_modify"_fix_modify.html options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various "output +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. +This fix is not invoked during "energy minimization"_minimize.html. + +[Restrictions:] + +This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +This fix requires that atoms store torque and angular momementum and a +quaternion as defined by the "atom_style ellipsoid"_atom_style.html +command. + +All particles in the group must be finite-size. They cannot be point +particles, but they can be aspherical or spherical as defined by their +shape attribute. + +[Related commands:] + +"fix nve/noforce"_fix_nve_noforce.html, "fix +nve/asphere"_fix_nve_asphere.html + +[Default:] none diff --git a/doc/fix_nve_eff.html b/doc/fix_nve_eff.html index 28a9a32018..80b1509242 100644 --- a/doc/fix_nve_eff.html +++ b/doc/fix_nve_eff.html @@ -38,15 +38,15 @@ of electrons are also updated.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions:

      -

      This fix is part of the "user-eff" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the USER-EFF package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

      Related commands: diff --git a/doc/fix_nve_eff.txt b/doc/fix_nve_eff.txt index 33f257c985..156f184dac 100644 --- a/doc/fix_nve_eff.txt +++ b/doc/fix_nve_eff.txt @@ -36,15 +36,15 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "user-eff" package. It is only enabled if +This fix is part of the USER-EFF package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/fix_nve_limit.html b/doc/fix_nve_limit.html index 2713bb1e71..ae9d726d2c 100644 --- a/doc/fix_nve_limit.html +++ b/doc/fix_nve_limit.html @@ -57,9 +57,9 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes a global scalar which can be accessed by various -output commands. The scalar is the count of -how many updates of atom's velocity/position were limited by the -maximum distance criterion. This should be roughly the number of +output commands. The scalar is the +count of how many updates of atom's velocity/position were limited by +the maximum distance criterion. This should be roughly the number of atoms so affected, except that updates occur at both the beginning and end of a timestep in a velocity Verlet timestepping algorithm. This is a cumulative quantity for the current run, but is re-initialized to diff --git a/doc/fix_nve_limit.txt b/doc/fix_nve_limit.txt index 3d3a36d9c9..79cb7c30f6 100644 --- a/doc/fix_nve_limit.txt +++ b/doc/fix_nve_limit.txt @@ -54,9 +54,9 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the count of -how many updates of atom's velocity/position were limited by the -maximum distance criterion. This should be roughly the number of +"output commands"_Section_howto.html#howto_15. The scalar is the +count of how many updates of atom's velocity/position were limited by +the maximum distance criterion. This should be roughly the number of atoms so affected, except that updates occur at both the beginning and end of a timestep in a velocity Verlet timestepping algorithm. This is a cumulative quantity for the current run, but is re-initialized to diff --git a/doc/fix_nve_line.html b/doc/fix_nve_line.html new file mode 100644 index 0000000000..2a39e7b177 --- /dev/null +++ b/doc/fix_nve_line.html @@ -0,0 +1,60 @@ + +

      LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
      + + + + + + +
      + +

      fix nve/line command +

      +

      Syntax: +

      +
      fix ID group-ID nve/line 
      +
      +
      • ID, group-ID are documented in fix command +
      • nve/line = style name of this fix command +
      +

      Examples: +

      +
      fix 1 all nve/line 
      +
      +

      Description: +

      +

      Perform constant NVE integration to update position, velocity, +orientation, and angular velocity for line segment particles in the +group each timestep. V is volume; E is energy. This creates a system +trajectory consistent with the microcanonical ensemble. +

      +

      This fix differs from the fix nve command, which +assumes point particles and only updates their position and velocity. +

      +

      Restart, fix_modify, output, run start/stop, minimize info: +

      +

      No information about this fix is written to binary restart +files. None of the fix_modify options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. +This fix is not invoked during energy minimization. +

      +

      Restrictions: +

      +

      This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the Making +LAMMPS section for more info. +

      +

      This fix requires that particles be line segments as defined by the +atom_style line command. +

      +

      Related commands: +

      +

      fix nve, fix nve/asphere +

      +

      Default: none +

      + diff --git a/doc/fix_nve_line.txt b/doc/fix_nve_line.txt new file mode 100755 index 0000000000..da93f30dbb --- /dev/null +++ b/doc/fix_nve_line.txt @@ -0,0 +1,55 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix nve/line command :h3 + +[Syntax:] + +fix ID group-ID nve/line :pre + +ID, group-ID are documented in "fix"_fix.html command +nve/line = style name of this fix command :ul + +[Examples:] + +fix 1 all nve/line :pre + +[Description:] + +Perform constant NVE integration to update position, velocity, +orientation, and angular velocity for line segment particles in the +group each timestep. V is volume; E is energy. This creates a system +trajectory consistent with the microcanonical ensemble. + +This fix differs from the "fix nve"_fix_nve.html command, which +assumes point particles and only updates their position and velocity. + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information about this fix is written to "binary restart +files"_restart.html. None of the "fix_modify"_fix_modify.html options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various "output +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. +This fix is not invoked during "energy minimization"_minimize.html. + +[Restrictions:] + +This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +This fix requires that particles be line segments as defined by the +"atom_style line"_atom_style.html command. + +[Related commands:] + +"fix nve"_fix_nve.html, "fix nve/asphere"_fix_nve_asphere.html + +[Default:] none diff --git a/doc/fix_nve_noforce.html b/doc/fix_nve_noforce.html index 01c32cb80f..8150e5668a 100644 --- a/doc/fix_nve_noforce.html +++ b/doc/fix_nve_noforce.html @@ -43,9 +43,9 @@ fcm() group function to compute the total force on the group of atoms.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions: none diff --git a/doc/fix_nve_noforce.txt b/doc/fix_nve_noforce.txt index 61abe4e16a..a0dbcc80f1 100644 --- a/doc/fix_nve_noforce.txt +++ b/doc/fix_nve_noforce.txt @@ -41,8 +41,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none diff --git a/doc/fix_nve_sphere.html b/doc/fix_nve_sphere.html index e0289f2acd..f2f5678cd7 100644 --- a/doc/fix_nve_sphere.html +++ b/doc/fix_nve_sphere.html @@ -11,6 +11,8 @@

      fix nve/sphere command

      +

      fix nve/sphere/omp command +

      Syntax:

      fix ID group-ID nve/sphere 
      @@ -49,14 +51,38 @@ during the time integration.  This option should be used for models
       where a dipole moment is assigned to particles via use of the
       atom_style dipole command.
       

      +
      + +

      Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

      +

      These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

      +

      You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

      +

      See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

      +
      +

      Restart, fix_modify, output, run start/stop, minimize info:

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions: diff --git a/doc/fix_nve_sphere.txt b/doc/fix_nve_sphere.txt index c579ed5fb2..3c5864d3f4 100755 --- a/doc/fix_nve_sphere.txt +++ b/doc/fix_nve_sphere.txt @@ -7,6 +7,7 @@ :line fix nve/sphere command :h3 +fix nve/sphere/omp command :h3 [Syntax:] @@ -41,14 +42,38 @@ during the time integration. This option should be used for models where a dipole moment is assigned to particles via use of the "atom_style dipole"_atom_style.html command. +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Restart, fix_modify, output, run start/stop, minimize info:] No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] diff --git a/doc/fix_nve_tri.html b/doc/fix_nve_tri.html new file mode 100644 index 0000000000..cddb90aba3 --- /dev/null +++ b/doc/fix_nve_tri.html @@ -0,0 +1,60 @@ + +

      LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
      + + + + + + +
      + +

      fix nve/tri command +

      +

      Syntax: +

      +
      fix ID group-ID nve/tri 
      +
      +
      • ID, group-ID are documented in fix command +
      • nve/tri = style name of this fix command +
      +

      Examples: +

      +
      fix 1 all nve/tri 
      +
      +

      Description: +

      +

      Perform constant NVE integration to update position, velocity, +orientation, and angular momentum for triangular particles in the +group each timestep. V is volume; E is energy. This creates a system +trajectory consistent with the microcanonical ensemble. +

      +

      This fix differs from the fix nve command, which +assumes point particles and only updates their position and velocity. +

      +

      Restart, fix_modify, output, run start/stop, minimize info: +

      +

      No information about this fix is written to binary restart +files. None of the fix_modify options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. +This fix is not invoked during energy minimization. +

      +

      Restrictions: +

      +

      This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the Making +LAMMPS section for more info. +

      +

      This fix requires that particles be triangles as defined by the +atom_style tri command. +

      +

      Related commands: +

      +

      fix nve, fix nve/asphere +

      +

      Default: none +

      + diff --git a/doc/fix_nve_tri.txt b/doc/fix_nve_tri.txt new file mode 100755 index 0000000000..6ea568b4ea --- /dev/null +++ b/doc/fix_nve_tri.txt @@ -0,0 +1,55 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix nve/tri command :h3 + +[Syntax:] + +fix ID group-ID nve/tri :pre + +ID, group-ID are documented in "fix"_fix.html command +nve/tri = style name of this fix command :ul + +[Examples:] + +fix 1 all nve/tri :pre + +[Description:] + +Perform constant NVE integration to update position, velocity, +orientation, and angular momentum for triangular particles in the +group each timestep. V is volume; E is energy. This creates a system +trajectory consistent with the microcanonical ensemble. + +This fix differs from the "fix nve"_fix_nve.html command, which +assumes point particles and only updates their position and velocity. + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information about this fix is written to "binary restart +files"_restart.html. None of the "fix_modify"_fix_modify.html options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various "output +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. +This fix is not invoked during "energy minimization"_minimize.html. + +[Restrictions:] + +This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +This fix requires that particles be triangles as defined by the +"atom_style tri"_atom_style.html command. + +[Related commands:] + +"fix nve"_fix_nve.html, "fix nve/asphere"_fix_nve_asphere.html + +[Default:] none diff --git a/doc/fix_nvt_asphere.html b/doc/fix_nvt_asphere.html index 134178020f..903d3bccb7 100644 --- a/doc/fix_nvt_asphere.html +++ b/doc/fix_nvt_asphere.html @@ -112,8 +112,8 @@ quantities as does the fix nvt command.

      Restrictions:

      -

      This fix is part of the "asphere" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the Making LAMMPS section for more info.

      This fix requires that atoms store torque and angular momementum and a diff --git a/doc/fix_nvt_asphere.txt b/doc/fix_nvt_asphere.txt index 29247cff62..8af5be1288 100755 --- a/doc/fix_nvt_asphere.txt +++ b/doc/fix_nvt_asphere.txt @@ -109,9 +109,9 @@ This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "asphere" package. It is only enabled if -LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This fix is part of the ASPHERE package. It is only enabled if LAMMPS +was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. This fix requires that atoms store torque and angular momementum and a quaternion as defined by the "atom_style ellipsoid"_atom_style.html diff --git a/doc/fix_nvt_sllod_eff.html b/doc/fix_nvt_sllod_eff.html index e1fdf0c048..072b124356 100644 --- a/doc/fix_nvt_sllod_eff.html +++ b/doc/fix_nvt_sllod_eff.html @@ -71,8 +71,8 @@ quantities as does the fix nvt/eff command.

      Restrictions:

      -

      This fix is part of the "user-eff" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the USER-EFF package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

      This fix works best without Nose-Hoover chain thermostats, i.e. using diff --git a/doc/fix_nvt_sllod_eff.txt b/doc/fix_nvt_sllod_eff.txt index 697640a5be..c2d397097c 100644 --- a/doc/fix_nvt_sllod_eff.txt +++ b/doc/fix_nvt_sllod_eff.txt @@ -68,9 +68,9 @@ This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "user-eff" package. It is only enabled if +This fix is part of the USER-EFF package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. This fix works best without Nose-Hoover chain thermostats, i.e. using tchain = 1. Setting tchain to larger values can result in poor diff --git a/doc/fix_orient_fcc.html b/doc/fix_orient_fcc.html index 99ab333eca..65be97ec45 100644 --- a/doc/fix_orient_fcc.html +++ b/doc/fix_orient_fcc.html @@ -127,14 +127,14 @@ boundary driving force to the system's potential energy as part of thermodynamic output.

      This fix calculates a global scalar which can be accessed by various -output commands. The scalar is the +output commands. The scalar is the potential energy change due to this fix. The scalar value calculated by this fix is "extensive".

      This fix also calculates a per-atom array which can be accessed by -various output commands. The array stores -the order parameter Xi and normalized order parameter (0 to 1) for -each atom. The per-atom values can be accessed on any timestep. +various output commands. The array +stores the order parameter Xi and normalized order parameter (0 to 1) +for each atom. The per-atom values can be accessed on any timestep.

      No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy diff --git a/doc/fix_orient_fcc.txt b/doc/fix_orient_fcc.txt index 4b634e8d5c..bde9f08ddf 100644 --- a/doc/fix_orient_fcc.txt +++ b/doc/fix_orient_fcc.txt @@ -124,14 +124,14 @@ boundary driving force to the system's potential energy as part of "thermodynamic output"_thermo_style.html. This fix calculates a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the +"output commands"_Section_howto.html#howto_15. The scalar is the potential energy change due to this fix. The scalar value calculated by this fix is "extensive". This fix also calculates a per-atom array which can be accessed by -various "output commands"_Section_howto.html#4_15. The array stores -the order parameter Xi and normalized order parameter (0 to 1) for -each atom. The per-atom values can be accessed on any timestep. +various "output commands"_Section_howto.html#howto_15. The array +stores the order parameter Xi and normalized order parameter (0 to 1) +for each atom. The per-atom values can be accessed on any timestep. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy diff --git a/doc/fix_planeforce.html b/doc/fix_planeforce.html index aefcd57f82..d2e465c612 100644 --- a/doc/fix_planeforce.html +++ b/doc/fix_planeforce.html @@ -38,9 +38,9 @@ should continue to move in the plane thereafter.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command.

      The forces due to this fix are imposed during an energy minimization, invoked by the minimize command. diff --git a/doc/fix_planeforce.txt b/doc/fix_planeforce.txt index a36c0f8896..133ed61bde 100644 --- a/doc/fix_planeforce.txt +++ b/doc/fix_planeforce.txt @@ -36,8 +36,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. The forces due to this fix are imposed during an energy minimization, invoked by the "minimize"_minimize.html command. diff --git a/doc/fix_poems.html b/doc/fix_poems.html index 11806aa60a..0bc381f4e6 100644 --- a/doc/fix_poems.html +++ b/doc/fix_poems.html @@ -115,16 +115,16 @@ off, and there is only a single fix poems defined.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions:

      -

      This fix is part of the "poems" package. It is only enabled if LAMMPS +

      This fix is part of the POEMS package. It is only enabled if LAMMPS was built with that package, which also requires the POEMS library be -built and linked with LAMMPS. See the Making +built and linked with LAMMPS. See the Making LAMMPS section for more info.

      Related commands: diff --git a/doc/fix_poems.txt b/doc/fix_poems.txt index f37f1dd89a..d90d832cb8 100644 --- a/doc/fix_poems.txt +++ b/doc/fix_poems.txt @@ -109,16 +109,16 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "poems" package. It is only enabled if LAMMPS +This fix is part of the POEMS package. It is only enabled if LAMMPS was built with that package, which also requires the POEMS library be built and linked with LAMMPS. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/fix_pour.html b/doc/fix_pour.html index 8970402686..8ef12fa784 100644 --- a/doc/fix_pour.html +++ b/doc/fix_pour.html @@ -120,15 +120,15 @@ appropriately.

      None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored by this fix for -access by various output commands. No +access by various output commands. No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions:

      -

      This fix is part of the "granular" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the GRANULAR package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

      For 3d simulations, a gravity fix in the -z direction must be defined diff --git a/doc/fix_pour.txt b/doc/fix_pour.txt index 54e22b66cd..e1521809cf 100644 --- a/doc/fix_pour.txt +++ b/doc/fix_pour.txt @@ -109,16 +109,16 @@ appropriately. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for -access by various "output commands"_Section_howto.html#4_15. No +access by various "output commands"_Section_howto.html#howto_15. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "granular" package. It is only enabled if +This fix is part of the GRANULAR package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. For 3d simulations, a gravity fix in the -z direction must be defined for use in conjunction with this fix. For 2d simulations, gravity diff --git a/doc/fix_press_berendsen.html b/doc/fix_press_berendsen.html index e86d9be9af..673c1b3436 100644 --- a/doc/fix_press_berendsen.html +++ b/doc/fix_press_berendsen.html @@ -64,8 +64,8 @@ conjunction with thermostatting fixes to control the temperature, such as fix nvt or fix langevin or fix temp/berendsen.

      -

      See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

      See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting and barostatting.


      @@ -194,7 +194,7 @@ pressure. LAMMPS will warn you if you choose to compute temperature on a subset of atoms.

      No global or per-atom quantities are stored by this fix for access by -various output commands. +various output commands.

      This fix can ramp its target pressure over multiple runs, using the start and stop keywords of the run command. See the diff --git a/doc/fix_press_berendsen.txt b/doc/fix_press_berendsen.txt index b3dbf3ea7e..eda073703c 100644 --- a/doc/fix_press_berendsen.txt +++ b/doc/fix_press_berendsen.txt @@ -58,8 +58,8 @@ conjunction with thermostatting fixes to control the temperature, such as "fix nvt"_fix_nh.html or "fix langevin"_fix_langevin.html or "fix temp/berendsen"_fix_temp_berendsen.html. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting and barostatting. :line @@ -188,7 +188,7 @@ pressure. LAMMPS will warn you if you choose to compute temperature on a subset of atoms. No global or per-atom quantities are stored by this fix for access by -various "output commands"_Section_howto.html#4_15. +various "output commands"_Section_howto.html#howto_15. This fix can ramp its target pressure over multiple runs, using the {start} and {stop} keywords of the "run"_run.html command. See the diff --git a/doc/fix_print.html b/doc/fix_print.html index 5a4282a777..98b233769b 100644 --- a/doc/fix_print.html +++ b/doc/fix_print.html @@ -81,9 +81,9 @@ keyword was used. By default, the title line is as follows:

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions: none diff --git a/doc/fix_print.txt b/doc/fix_print.txt index 7827bc6aef..0ac44ef9b6 100644 --- a/doc/fix_print.txt +++ b/doc/fix_print.txt @@ -72,8 +72,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none diff --git a/doc/fix_qeq_comb.html b/doc/fix_qeq_comb.html index 45ab968c3a..c66b49dc4d 100644 --- a/doc/fix_qeq_comb.html +++ b/doc/fix_qeq_comb.html @@ -11,6 +11,8 @@

      fix qeq/comb command

      +

      fix qeq/comb/omp command +

      Syntax:

      fix ID group-ID qeq/comb Nevery precision keyword value ... 
      @@ -66,6 +68,30 @@ performing charge equilibration (more iterations) and accuracy.
       

      If the file keyword is used, then information about each equilibration calculation is written to the specifed file.

      +
      + +

      Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

      +

      These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

      +

      You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

      +

      See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

      +
      +

      Restart, fix_modify, output, run start/stop, minimize info:

      No information about this fix is written to binary restart @@ -73,7 +99,7 @@ files. None of the fix_modify options are relevant to this fix.

      This fix produces a per-atom vector which can be accessed by various -output commands. The vector stores the +output commands. The vector stores the gradient of the charge on each atom. The per-atom values be accessed on any timestep.

      diff --git a/doc/fix_qeq_comb.txt b/doc/fix_qeq_comb.txt index 36deb87ab9..3fbb9dc7b9 100644 --- a/doc/fix_qeq_comb.txt +++ b/doc/fix_qeq_comb.txt @@ -7,6 +7,7 @@ :line fix qeq/comb command :h3 +fix qeq/comb/omp command :h3 [Syntax:] @@ -56,6 +57,30 @@ performing charge equilibration (more iterations) and accuracy. If the {file} keyword is used, then information about each equilibration calculation is written to the specifed file. +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Restart, fix_modify, output, run start/stop, minimize info:] No information about this fix is written to "binary restart @@ -63,7 +88,7 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix produces a per-atom vector which can be accessed by various -"output commands"_Section_howto.html#4_15. The vector stores the +"output commands"_Section_howto.html#howto_15. The vector stores the gradient of the charge on each atom. The per-atom values be accessed on any timestep. diff --git a/doc/fix_qeq_reax.html b/doc/fix_qeq_reax.html index c241e30a0b..f2b47635e7 100644 --- a/doc/fix_qeq_reax.html +++ b/doc/fix_qeq_reax.html @@ -37,6 +37,8 @@ reax/c command, but it can be used with any potential in LAMMPS, so long as it defines and uses charges on each atom. The fix qeq/comb command should be used to perform charge equliibration with the COMB potential. +For more technical details about the charge equilibration performed by +fix qeq/reax, see the "(Aktulga)" paper.

      The QEq method minimizes the electrostatic energy of the system by adjusting the partial charge on individual atoms based on interactions @@ -63,18 +65,22 @@ of this fix are hard-coded to be A, eV, and electronic charge.

      No information about this fix is written to binary restart files. No global scalar or vector or per-atom -quantities are stored by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +quantities are stored by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command.

      This fix is invoked during energy minimization.

      Restrictions:

      -

      This fix is part of the "user-reaxc" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the USER-REAXC package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

      +

      This fix does not correctly handle interactions +involving multiple periodic images of the same atom. Hence, it should not +be used for periodic cell dimensions less than 10 angstroms. +

      Related commands:

      pair_style reax/c @@ -92,4 +98,7 @@ LAMMPS section for more info.

      (Nakano) Nakano, Computer Physics Communications, 104, 59-69 (1997).

      +

      :link(Aktulga) (Aktulga) Aktulga, Fogarty, Pandit, Grama, Parallel +Computing, to appear (2011). +

      diff --git a/doc/fix_qeq_reax.txt b/doc/fix_qeq_reax.txt index 6c6b95b1c2..4f45ecefd2 100644 --- a/doc/fix_qeq_reax.txt +++ b/doc/fix_qeq_reax.txt @@ -34,6 +34,8 @@ reax/c"_pair_reax_c.html command, but it can be used with any potential in LAMMPS, so long as it defines and uses charges on each atom. The "fix qeq/comb"_fix_qeq_comb.html command should be used to perform charge equliibration with the "COMB potential"_pair_comb.html. +For more technical details about the charge equilibration performed by +fix qeq/reax, see the "(Aktulga)" paper. The QEq method minimizes the electrostatic energy of the system by adjusting the partial charge on individual atoms based on interactions @@ -61,16 +63,20 @@ of this fix are hard-coded to be A, eV, and electronic charge. No information about this fix is written to "binary restart files"_restart.html. No global scalar or vector or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "user-reaxc" package. It is only enabled if +This fix is part of the USER-REAXC package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. + +This fix does not correctly handle interactions +involving multiple periodic images of the same atom. Hence, it should not +be used for periodic cell dimensions less than 10 angstroms. [Related commands:] @@ -86,3 +92,6 @@ LAMMPS"_Section_start.html#2_3 section for more info. :link(Nakano_1997) [(Nakano)] Nakano, Computer Physics Communications, 104, 59-69 (1997). + +:link(Aktulga) [(Aktulga)] Aktulga, Fogarty, Pandit, Grama, Parallel +Computing, to appear (2011). diff --git a/doc/fix_reax_bonds.html b/doc/fix_reax_bonds.html index 113b2c9827..09f23c1f19 100644 --- a/doc/fix_reax_bonds.html +++ b/doc/fix_reax_bonds.html @@ -40,17 +40,17 @@ including timestep 0.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions:

      This fix requires that the pair_style reax be -invoked. This fix is part of the "reax" package. It is only enabled -if LAMMPS was built with that package, which also requires the REAX -library be built and linked with LAMMPS. See the Making +invoked. This fix is part of the REAX package. It is only enabled if +LAMMPS was built with that package, which also requires the REAX +library be built and linked with LAMMPS. See the Making LAMMPS section for more info.

      Related commands: diff --git a/doc/fix_reax_bonds.txt b/doc/fix_reax_bonds.txt index 7414083e04..5ebb2a5265 100644 --- a/doc/fix_reax_bonds.txt +++ b/doc/fix_reax_bonds.txt @@ -38,17 +38,17 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] This fix requires that the "pair_style reax"_pair_reax.html be -invoked. This fix is part of the "reax" package. It is only enabled -if LAMMPS was built with that package, which also requires the REAX +invoked. This fix is part of the REAX package. It is only enabled if +LAMMPS was built with that package, which also requires the REAX library be built and linked with LAMMPS. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/fix_recenter.html b/doc/fix_recenter.html index d4a08370d8..f62b289062 100644 --- a/doc/fix_recenter.html +++ b/doc/fix_recenter.html @@ -100,9 +100,9 @@ to tether the molecule in place.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions: diff --git a/doc/fix_recenter.txt b/doc/fix_recenter.txt index 6040f51780..5242c0fa47 100644 --- a/doc/fix_recenter.txt +++ b/doc/fix_recenter.txt @@ -93,8 +93,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] diff --git a/doc/fix_restrain.html b/doc/fix_restrain.html new file mode 100644 index 0000000000..d42f07cc09 --- /dev/null +++ b/doc/fix_restrain.html @@ -0,0 +1,150 @@ + +

      LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
      + + + + + + +
      + +

      fix restrain command +

      +

      Syntax: +

      +
      fix ID group-ID restrain Kstart Kstop keyword value(s) 
      +
      +
      • ID, group-ID are documented in fix command + +
      • restrain = style name of this fix command + +
      • Kstart, Kstop = restraint coefficient at start/end of run (energy +units) + +
      • one keyword with one or more sets of parameter values may be appended to args + +
      • keyword = dihedral + +
          dihedral value = atom1 atom2 atom3 atom4 target
        +    atom1,atom2,atom3,atom4 = IDs of 4 atoms in restrained dihedral
        +    target = target value for specified dihedral angle (degrees) 
        +
        + +
      +

      Examples: +

      +
      fix holdem all restrain 2000.0 2000.0 dihedral 1 2 3 4 120.0
      +fix texas_holdem all restrain 0.0 2000.0 dihedral 1 2 3 4 120.0 1 2 3 5 -120.0 1 2 3 6 0.0 
      +
      +

      Description: +

      +

      Restrain the motion of the specified atoms by making them part of a +bond or angle or dihedral interaction whose strength can vary over +time during a simulation. This is functionally equivalent to creating +a bond or angle or dihedral for the atoms in a data file, as specified +by the read_data command, albeit with a time-varying +pre-factor coefficient. For the purpose of forcefield +parameter-fitting or mapping a molecular potential energy surface, +this fix reduces the hassle and risk associated with modifying data +files. In other words, use this fix to temporarily force a molecule +to adopt a particular conformation. To form a permanent bond or angle +or dihedral, modify the data file. +

      +

      The first example above applies a restraint to hold the dihedral angle +formed by atoms 1, 2, 3, and 4 near 120 degrees using a constant +restraint coefficient. The second example applies similar restraints +to multiple dihedral angles using a restraint coefficient that +increases from 0.0 to 2000.0 over the course of the run. +

      +

      IMPORTANT NOTE: Adding a force to atoms implies a change in their +potential energy as they move due to the applied force field. For +dynamics via the run command, this energy can be added to +the system's potential energy for thermodynamic output (see below). +For energy minimization via the minimize command, this +energy must be added to the system's potential energy to formulate a +self-consistent minimization problem (see below). +

      +

      In order for a restraint to be effective, the restraint force must +typically be significantly larger than the forces associated with +conventional forcefield terms. If the restraint is applied during a +dynamics run (as opposed to during an energy minimization), a large +restraint coefficient can significantly reduce the stable timestep +size, especially if the atoms are initially far from the preferred +conformation. You may need to experiment to determine what value of K +works best for a given application. +

      +

      For the case of finding a minimum energy structure for a single +molecule with particular restratins (e.g. for fitting forcefield +parameters or constructing a potential energy surface), commands such +as the following might be useful: +

      +
      # minimize molecule energy with restraints
      +velocity all create 600.0 8675309 mom yes rot yes dist gaussian
      +fix NVE all nve
      +fix TFIX all langevin 600.0 0.0 100 24601
      +fix REST all restrain 0.0 5000.0 dihedral 2 1 3 8 $angle1 3 1 2 9 $angle2
      +fix_modify REST energy yes
      +run 10000
      +fix TFIX all langevin 0.0 0.0 100 24601
      +fix REST all restrain 5000.0 5000.0 dihedral 2 1 3 8 $angle1 3 1 2 9 $angle2
      +fix_modify REST energy yes
      +run 10000
      +# sanity check for convergence
      +minimize 1e-6 1e-9 1000 100000
      +# report unrestrained energies
      +unfix REST
      +run 0 
      +
      +
      + +

      The dihedral keyword applies a dihedral restraint to the specified +atoms using a simplified form of the function used in dihedral_style +charmm. Specifically, the potential associated +with the restraint is +

      +
      +
      +

      with the following coefficients: +

      +
      • K (energy) = K (specified above) +
      • n = 1 +
      • d (degrees) = 180.0 + target (specified above) +
      +
      + +

      Restart, fix_modify, output, run start/stop, minimize info: +

      +

      No information about this fix is written to binary restart +files. +

      +

      The fix_modify energy option is supported by this +fix to add the potential energy associated with this fix to the +system's potential energy as part of thermodynamic +output. +

      +

      IMPORTANT NOTE: If you want the fictitious potential energy associated +with the added forces to be included in the total potential energy of +the system (the quantity being minimized), you MUST enable the +fix_modify energy option for this fix. +

      +

      This fix computes a global scalar, which can be accessed by various +output commands. The scalar is the +potential energy discussed above. The scalar value calculated by this +fix is "extensive". +

      +

      No parameter of this fix can be used with the start/stop keywords of +the run command. +

      +

      Restrictions: +

      +

      The group-ID specified by this fix is ignored. +

      +

      Currently, only dihedral restraints are allowed, but modification of +the code to allow angle and bond restraints would be straightforward. +

      +

      Related commands: none +

      +

      Default: none +

      + diff --git a/doc/fix_restrain.txt b/doc/fix_restrain.txt new file mode 100644 index 0000000000..f70eded736 --- /dev/null +++ b/doc/fix_restrain.txt @@ -0,0 +1,139 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix restrain command :h3 + +[Syntax:] + +fix ID group-ID restrain Kstart Kstop keyword value(s) :pre + +ID, group-ID are documented in "fix"_fix.html command :ulb,l +restrain = style name of this fix command :l +Kstart, Kstop = restraint coefficient at start/end of run (energy +units) :l +one keyword with one or more sets of parameter values may be appended to args :l +keyword = {dihedral} :l + {dihedral} value = atom1 atom2 atom3 atom4 target + atom1,atom2,atom3,atom4 = IDs of 4 atoms in restrained dihedral + target = target value for specified dihedral angle (degrees) :pre +:ule + +[Examples:] + +fix holdem all restrain 2000.0 2000.0 dihedral 1 2 3 4 120.0 +fix texas_holdem all restrain 0.0 2000.0 dihedral 1 2 3 4 120.0 1 2 3 5 -120.0 1 2 3 6 0.0 :pre + +[Description:] + +Restrain the motion of the specified atoms by making them part of a +bond or angle or dihedral interaction whose strength can vary over +time during a simulation. This is functionally equivalent to creating +a bond or angle or dihedral for the atoms in a data file, as specified +by the "read_data"_read_data.html command, albeit with a time-varying +pre-factor coefficient. For the purpose of forcefield +parameter-fitting or mapping a molecular potential energy surface, +this fix reduces the hassle and risk associated with modifying data +files. In other words, use this fix to temporarily force a molecule +to adopt a particular conformation. To form a permanent bond or angle +or dihedral, modify the data file. + +The first example above applies a restraint to hold the dihedral angle +formed by atoms 1, 2, 3, and 4 near 120 degrees using a constant +restraint coefficient. The second example applies similar restraints +to multiple dihedral angles using a restraint coefficient that +increases from 0.0 to 2000.0 over the course of the run. + +IMPORTANT NOTE: Adding a force to atoms implies a change in their +potential energy as they move due to the applied force field. For +dynamics via the "run"_run.html command, this energy can be added to +the system's potential energy for thermodynamic output (see below). +For energy minimization via the "minimize"_minimize.html command, this +energy must be added to the system's potential energy to formulate a +self-consistent minimization problem (see below). + +In order for a restraint to be effective, the restraint force must +typically be significantly larger than the forces associated with +conventional forcefield terms. If the restraint is applied during a +dynamics run (as opposed to during an energy minimization), a large +restraint coefficient can significantly reduce the stable timestep +size, especially if the atoms are initially far from the preferred +conformation. You may need to experiment to determine what value of K +works best for a given application. + +For the case of finding a minimum energy structure for a single +molecule with particular restratins (e.g. for fitting forcefield +parameters or constructing a potential energy surface), commands such +as the following might be useful: + +# minimize molecule energy with restraints +velocity all create 600.0 8675309 mom yes rot yes dist gaussian +fix NVE all nve +fix TFIX all langevin 600.0 0.0 100 24601 +fix REST all restrain 0.0 5000.0 dihedral 2 1 3 8 ${angle1} 3 1 2 9 ${angle2} +fix_modify REST energy yes +run 10000 +fix TFIX all langevin 0.0 0.0 100 24601 +fix REST all restrain 5000.0 5000.0 dihedral 2 1 3 8 ${angle1} 3 1 2 9 ${angle2} +fix_modify REST energy yes +run 10000 +# sanity check for convergence +minimize 1e-6 1e-9 1000 100000 +# report unrestrained energies +unfix REST +run 0 :pre + +:line + +The {dihedral} keyword applies a dihedral restraint to the specified +atoms using a simplified form of the function used in "dihedral_style +charmm"_dihedral_charmm.html. Specifically, the potential associated +with the restraint is + +:c,image(Eqs/dihedral_charmm.jpg) + +with the following coefficients: + +K (energy) = K (specified above) +n = 1 +d (degrees) = 180.0 + target (specified above) :ul + +:line + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information about this fix is written to "binary restart +files"_restart.html. + +The "fix_modify"_fix_modify.html {energy} option is supported by this +fix to add the potential energy associated with this fix to the +system's potential energy as part of "thermodynamic +output"_thermo_style.html. + +IMPORTANT NOTE: If you want the fictitious potential energy associated +with the added forces to be included in the total potential energy of +the system (the quantity being minimized), you MUST enable the +"fix_modify"_fix_modify.html {energy} option for this fix. + +This fix computes a global scalar, which can be accessed by various +"output commands"_Section_howto.html#howto_15. The scalar is the +potential energy discussed above. The scalar value calculated by this +fix is "extensive". + +No parameter of this fix can be used with the {start/stop} keywords of +the "run"_run.html command. + +[Restrictions:] + +The group-ID specified by this fix is ignored. + +Currently, only dihedral restraints are allowed, but modification of +the code to allow angle and bond restraints would be straightforward. + +[Related commands:] none + +[Default:] none diff --git a/doc/fix_rigid.html b/doc/fix_rigid.html index 9abf8effc8..c15ed3ecfe 100644 --- a/doc/fix_rigid.html +++ b/doc/fix_rigid.html @@ -78,12 +78,13 @@ portions of a large biomolecule such as a protein.

      Example of small rigid bodies are patchy nanoparticles, such as those modeled in this paper by Sharon Glotzer's group, clumps of granular particles, lipid molecules consiting of one or more point -dipoles connected to other spheroids or ellipsoids, and coarse-grain -models of nano or colloidal particles consisting of a small number of -constituent particles. Note that the fix shake -command can also be used to rigidify small molecules of 2, 3, or 4 -atoms, e.g. water molecules. That fix treats the constituent atoms as -point masses. +dipoles connected to other spheroids or ellipsoids, irregular +particles built from line segments (2d) or triangles (3d), and +coarse-grain models of nano or colloidal particles consisting of a +small number of constituent particles. Note that the fix +shake command can also be used to rigidify small +molecules of 2, 3, or 4 atoms, e.g. water molecules. That fix treats +the constituent atoms as point masses.

      These fixes also update the positions and velocities of the atoms in each rigid body via time integration. The rigid and rigid/nve @@ -118,14 +119,14 @@ setforce command), and integrating them as usual


      The constituent particles within a rigid body can be point particles -(the default in LAMMPS) or finite-size particles, such as spheres and -ellipsoids. See the atom_style sphere and ellipsoid -commands for more details on these kinds of particles. Finite-size -particles contribute differently to the moment of inertia of a rigid -body than do point particles. Finite-size particles can also -experience torque (e.g. due to frictional granular -interactions) and have an orientation. These -contributions are accounted for by these fixes. +(the default in LAMMPS) or finite-size particles, such as spheres or +ellipsoids or line segments or triangles. See the atom_style sphere +and ellipsoid and line and tri commands for more +details on these kinds of particles. Finite-size particles contribute +differently to the moment of inertia of a rigid body than do point +particles. Finite-size particles can also experience torque (e.g. due +to frictional granular interactions) and have an +orientation. These contributions are accounted for by these fixes.

      Forces between particles within a body do not contribute to the external force or torque on the body. Thus for computational @@ -314,9 +315,9 @@ to the system's potential energy as part of thermo output.

      The rigid and rigid/nve fixes computes a global scalar which can be -accessed by various output commands. The -scalar value calculated by these fixes is "intensive". The scalar is -the current temperature of the collection of rigid bodies. This is +accessed by various output commands. +The scalar value calculated by these fixes is "intensive". The scalar +is the current temperature of the collection of rigid bodies. This is averaged over all rigid bodies and their translational and rotational degrees of freedom. The translational energy of a rigid body is 1/2 m v^2, where m = total mass of the body and v = the velocity of its @@ -326,22 +327,23 @@ velocity. Degrees of freedom constrained by the force and torque keywords are removed from this calculation.

      The rigid/nvt fix computes a global scalar which can be accessed by -various output commands. The scalar value -calculated by the rigid/nvt fix is "extensive". The scalar is the -cumulative energy change due to the thermostatting the fix performs. +various output commands. The scalar +value calculated by the rigid/nvt fix is "extensive". The scalar is +the cumulative energy change due to the thermostatting the fix +performs.

      All of these fixes compute a global array of values which can be -accessed by various output commands. The -number of rows in the array is equal to the number of rigid bodies. -The number of columns is 15. Thus for each rigid body, 15 values are -stored: the xyz coords of the center of mass (COM), the xyz components -of the COM velocity, the xyz components of the force acting on the -COM, the xyz components of the torque acting on the COM, and the xyz -image flags of the COM, which have the same meaning as image flags for -atom positions (see the "dump" command). The force and torque values -in the array are not affected by the force and torque keywords in -the fix rigid command; they reflect values before any changes are made -by those keywords. +accessed by various output commands. +The number of rows in the array is equal to the number of rigid +bodies. The number of columns is 15. Thus for each rigid body, 15 +values are stored: the xyz coords of the center of mass (COM), the xyz +components of the COM velocity, the xyz components of the force acting +on the COM, the xyz components of the torque acting on the COM, and +the xyz image flags of the COM, which have the same meaning as image +flags for atom positions (see the "dump" command). The force and +torque values in the array are not affected by the force and +torque keywords in the fix rigid command; they reflect values before +any changes are made by those keywords.

      The ordering of the rigid bodies (by row in the array) is as follows. For the single keyword there is just one rigid body. For the diff --git a/doc/fix_rigid.txt b/doc/fix_rigid.txt index 9130c881ed..3d49aedd6d 100644 --- a/doc/fix_rigid.txt +++ b/doc/fix_rigid.txt @@ -67,12 +67,13 @@ portions of a large biomolecule such as a protein. Example of small rigid bodies are patchy nanoparticles, such as those modeled in "this paper"_#Zhang by Sharon Glotzer's group, clumps of granular particles, lipid molecules consiting of one or more point -dipoles connected to other spheroids or ellipsoids, and coarse-grain -models of nano or colloidal particles consisting of a small number of -constituent particles. Note that the "fix shake"_fix_shake.html -command can also be used to rigidify small molecules of 2, 3, or 4 -atoms, e.g. water molecules. That fix treats the constituent atoms as -point masses. +dipoles connected to other spheroids or ellipsoids, irregular +particles built from line segments (2d) or triangles (3d), and +coarse-grain models of nano or colloidal particles consisting of a +small number of constituent particles. Note that the "fix +shake"_fix_shake.html command can also be used to rigidify small +molecules of 2, 3, or 4 atoms, e.g. water molecules. That fix treats +the constituent atoms as point masses. These fixes also update the positions and velocities of the atoms in each rigid body via time integration. The {rigid} and {rigid/nve} @@ -107,14 +108,14 @@ setforce"_fix_setforce.html command), and integrating them as usual :line The constituent particles within a rigid body can be point particles -(the default in LAMMPS) or finite-size particles, such as spheres and -ellipsoids. See the "atom_style sphere and ellipsoid"_atom_style.html -commands for more details on these kinds of particles. Finite-size -particles contribute differently to the moment of inertia of a rigid -body than do point particles. Finite-size particles can also -experience torque (e.g. due to "frictional granular -interactions"_pair_gran.html) and have an orientation. These -contributions are accounted for by these fixes. +(the default in LAMMPS) or finite-size particles, such as spheres or +ellipsoids or line segments or triangles. See the "atom_style sphere +and ellipsoid and line and tri"_atom_style.html commands for more +details on these kinds of particles. Finite-size particles contribute +differently to the moment of inertia of a rigid body than do point +particles. Finite-size particles can also experience torque (e.g. due +to "frictional granular interactions"_pair_gran.html) and have an +orientation. These contributions are accounted for by these fixes. Forces between particles within a body do not contribute to the external force or torque on the body. Thus for computational @@ -303,9 +304,9 @@ to the system's potential energy as part of "thermodynamic output"_thermo_style.html. The rigid and rigid/nve fixes computes a global scalar which can be -accessed by various "output commands"_Section_howto.html#4_15. The -scalar value calculated by these fixes is "intensive". The scalar is -the current temperature of the collection of rigid bodies. This is +accessed by various "output commands"_Section_howto.html#howto_15. +The scalar value calculated by these fixes is "intensive". The scalar +is the current temperature of the collection of rigid bodies. This is averaged over all rigid bodies and their translational and rotational degrees of freedom. The translational energy of a rigid body is 1/2 m v^2, where m = total mass of the body and v = the velocity of its @@ -315,22 +316,23 @@ velocity. Degrees of freedom constrained by the {force} and {torque} keywords are removed from this calculation. The rigid/nvt fix computes a global scalar which can be accessed by -various "output commands"_Section_howto.html#4_15. The scalar value -calculated by the rigid/nvt fix is "extensive". The scalar is the -cumulative energy change due to the thermostatting the fix performs. +various "output commands"_Section_howto.html#howto_15. The scalar +value calculated by the rigid/nvt fix is "extensive". The scalar is +the cumulative energy change due to the thermostatting the fix +performs. All of these fixes compute a global array of values which can be -accessed by various "output commands"_Section_howto.html#4_15. The -number of rows in the array is equal to the number of rigid bodies. -The number of columns is 15. Thus for each rigid body, 15 values are -stored: the xyz coords of the center of mass (COM), the xyz components -of the COM velocity, the xyz components of the force acting on the -COM, the xyz components of the torque acting on the COM, and the xyz -image flags of the COM, which have the same meaning as image flags for -atom positions (see the "dump" command). The force and torque values -in the array are not affected by the {force} and {torque} keywords in -the fix rigid command; they reflect values before any changes are made -by those keywords. +accessed by various "output commands"_Section_howto.html#howto_15. +The number of rows in the array is equal to the number of rigid +bodies. The number of columns is 15. Thus for each rigid body, 15 +values are stored: the xyz coords of the center of mass (COM), the xyz +components of the COM velocity, the xyz components of the force acting +on the COM, the xyz components of the torque acting on the COM, and +the xyz image flags of the COM, which have the same meaning as image +flags for atom positions (see the "dump" command). The force and +torque values in the array are not affected by the {force} and +{torque} keywords in the fix rigid command; they reflect values before +any changes are made by those keywords. The ordering of the rigid bodies (by row in the array) is as follows. For the {single} keyword there is just one rigid body. For the diff --git a/doc/fix_setforce.html b/doc/fix_setforce.html index 234db2821d..6e713254d4 100644 --- a/doc/fix_setforce.html +++ b/doc/fix_setforce.html @@ -83,14 +83,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

      -

      These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

      These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

      You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

      See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -104,7 +104,7 @@ files. None of the fix_modify options are relevant to this fix.

      This fix computes a global 3-vector of forces, which can be accessed -by various output commands. This is the +by various output commands. This is the total force on the group of atoms before the forces on individual atoms are changed by the fix. The vector values calculated by this fix are "extensive". diff --git a/doc/fix_setforce.txt b/doc/fix_setforce.txt index 9d578060b1..90404f0324 100644 --- a/doc/fix_setforce.txt +++ b/doc/fix_setforce.txt @@ -72,14 +72,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -93,7 +93,7 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global 3-vector of forces, which can be accessed -by various "output commands"_Section_howto.html#4_15. This is the +by various "output commands"_Section_howto.html#howto_15. This is the total force on the group of atoms before the forces on individual atoms are changed by the fix. The vector values calculated by this fix are "extensive". diff --git a/doc/fix_shake.html b/doc/fix_shake.html index aaf07a9f39..a5aad277aa 100644 --- a/doc/fix_shake.html +++ b/doc/fix_shake.html @@ -97,14 +97,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

      -

      These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

      These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

      You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

      See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -116,9 +116,9 @@ instructions on how to use the accelerated styles effectively.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions: diff --git a/doc/fix_shake.txt b/doc/fix_shake.txt index eb73980317..dee3239bd8 100644 --- a/doc/fix_shake.txt +++ b/doc/fix_shake.txt @@ -85,14 +85,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -105,8 +105,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] diff --git a/doc/fix_smd.html b/doc/fix_smd.html index d6ed169f7a..ececffdc41 100644 --- a/doc/fix_smd.html +++ b/doc/fix_smd.html @@ -114,12 +114,12 @@ the operation of the fix continues in an uninterrupted fashion. fix.

      This fix computes a vector list of 7 quantities, which can be accessed -by various output commands. The quantities -in the vector are in this order: the x-, y-, and z-component of the -pulling force, the total force in direction of the pull, the -equilibrium distance of the spring, the distance between the two -reference points, and finally the accumulated PMF (the sum of pulling -forces times displacement). +by various output commands. The +quantities in the vector are in this order: the x-, y-, and +z-component of the pulling force, the total force in direction of the +pull, the equilibrium distance of the spring, the distance between the +two reference points, and finally the accumulated PMF (the sum of +pulling forces times displacement).

      The force is the total force on the group of atoms by the spring. In the case of the couple style, it is the force on the fix group @@ -132,8 +132,8 @@ minimization.

      Restrictions:

      -

      This fix is part of the "user-misc" package. It is only enabled if -LAMMPS was built with that package. See the Making +

      This fix is part of the USER-MISC package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

      Related commands: diff --git a/doc/fix_smd.txt b/doc/fix_smd.txt index a2a1b4d1c4..d58a24eb13 100644 --- a/doc/fix_smd.txt +++ b/doc/fix_smd.txt @@ -105,12 +105,12 @@ None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a vector list of 7 quantities, which can be accessed -by various "output commands"_Section_howto.html#4_15. The quantities -in the vector are in this order: the x-, y-, and z-component of the -pulling force, the total force in direction of the pull, the -equilibrium distance of the spring, the distance between the two -reference points, and finally the accumulated PMF (the sum of pulling -forces times displacement). +by various "output commands"_Section_howto.html#howto_15. The +quantities in the vector are in this order: the x-, y-, and +z-component of the pulling force, the total force in direction of the +pull, the equilibrium distance of the spring, the distance between the +two reference points, and finally the accumulated PMF (the sum of +pulling forces times displacement). The force is the total force on the group of atoms by the spring. In the case of the {couple} style, it is the force on the fix group @@ -123,9 +123,9 @@ minimization"_minimize.html. [Restrictions:] -This fix is part of the "user-misc" package. It is only enabled if +This fix is part of the USER-MISC package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/fix_spring.html b/doc/fix_spring.html index d8f83fa3fb..8830056177 100644 --- a/doc/fix_spring.html +++ b/doc/fix_spring.html @@ -91,6 +91,17 @@ below the z = 0 center plane of the pore (umbrella sampling). The last example holds the ion a distance 5 away from the pore axis (assuming the center-of-mass of the pore in x,y is the pore axis).

      +

      IMPORTANT NOTE: The center of mass of a group of atoms is calculated +in "unwrapped" coordinates using atom image flags, which means that +the group can straddle a periodic boundary. See the dump +doc page for a discussion of unwrapped coordinates. It also means +that a spring connecting two groups or a group and the tether point +can cross a periodic boundary and its length be calculated correctly. +One exception is for rigid bodies, which should not be used with the +fix spring command, if the rigid body will cross a periodic boundary. +This is because image flags for rigid bodies are used in a different +way, as explained on the fix rigid doc page. +

      Restart, fix_modify, output, run start/stop, minimize info:

      No information about this fix is written to binary restart @@ -101,11 +112,11 @@ fix to add the energy stored in the spring to the system's potential energy as part of thermodynamic output.

      This fix computes a global scalar which can be accessed by various -output commands. The scalar is the spring -energy = 0.5 * K * r^2. +output commands. The scalar is the +spring energy = 0.5 * K * r^2.

      This fix also computes global 4-vector which can be accessed by -various output commands. The first 3 +various output commands. The first 3 quantities in the vector are xyz components of the total force added to the group of atoms by the spring. In the case of the couple style, it is the force on the fix group (group-ID) or the negative of diff --git a/doc/fix_spring.txt b/doc/fix_spring.txt index cf8478b327..9b65065714 100644 --- a/doc/fix_spring.txt +++ b/doc/fix_spring.txt @@ -84,6 +84,17 @@ below the z = 0 center plane of the pore (umbrella sampling). The last example holds the ion a distance 5 away from the pore axis (assuming the center-of-mass of the pore in x,y is the pore axis). +IMPORTANT NOTE: The center of mass of a group of atoms is calculated +in "unwrapped" coordinates using atom image flags, which means that +the group can straddle a periodic boundary. See the "dump"_dump.html +doc page for a discussion of unwrapped coordinates. It also means +that a spring connecting two groups or a group and the tether point +can cross a periodic boundary and its length be calculated correctly. +One exception is for rigid bodies, which should not be used with the +fix spring command, if the rigid body will cross a periodic boundary. +This is because image flags for rigid bodies are used in a different +way, as explained on the "fix rigid"_doc/fix_rigid.html doc page. + [Restart, fix_modify, output, run start/stop, minimize info:] No information about this fix is written to "binary restart @@ -94,11 +105,11 @@ fix to add the energy stored in the spring to the system's potential energy as part of "thermodynamic output"_thermo_style.html. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the spring -energy = 0.5 * K * r^2. +"output commands"_Section_howto.html#howto_15. The scalar is the +spring energy = 0.5 * K * r^2. This fix also computes global 4-vector which can be accessed by -various "output commands"_Section_howto.html#4_15. The first 3 +various "output commands"_Section_howto.html#howto_15. The first 3 quantities in the vector are xyz components of the total force added to the group of atoms by the spring. In the case of the {couple} style, it is the force on the fix group (group-ID) or the negative of diff --git a/doc/fix_spring_rg.html b/doc/fix_spring_rg.html index e2ceba3dee..535e088be6 100644 --- a/doc/fix_spring_rg.html +++ b/doc/fix_spring_rg.html @@ -55,9 +55,9 @@ the time the fix is specified, and that value is used as the target.

      No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

      Restrictions: none diff --git a/doc/fix_spring_rg.txt b/doc/fix_spring_rg.txt index c87fd486ff..768ed0cc4a 100644 --- a/doc/fix_spring_rg.txt +++ b/doc/fix_spring_rg.txt @@ -52,8 +52,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none diff --git a/doc/fix_spring_self.html b/doc/fix_spring_self.html index 69d612edc3..a3c68e9ddf 100644 --- a/doc/fix_spring_self.html +++ b/doc/fix_spring_self.html @@ -46,8 +46,8 @@ fix to add the energy stored in the per-atom springs to the system's potential energy as part of thermodynamic output.

      This fix computes a global scalar which can be accessed by various -output commands. The scalar is an energy -which is the sum of the spring energy for each atom, where the +output commands. The scalar is an +energy which is the sum of the spring energy for each atom, where the per-atom energy is 0.5 * K * r^2. The scalar value calculated by this fix is "extensive".

      diff --git a/doc/fix_spring_self.txt b/doc/fix_spring_self.txt index fe385f5db5..6911c39096 100644 --- a/doc/fix_spring_self.txt +++ b/doc/fix_spring_self.txt @@ -43,8 +43,8 @@ fix to add the energy stored in the per-atom springs to the system's potential energy as part of "thermodynamic output"_thermo_style.html. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is an energy -which is the sum of the spring energy for each atom, where the +"output commands"_Section_howto.html#howto_15. The scalar is an +energy which is the sum of the spring energy for each atom, where the per-atom energy is 0.5 * K * r^2. The scalar value calculated by this fix is "extensive". diff --git a/doc/fix_srd.html b/doc/fix_srd.html index 4ee5d1cfe6..8746be8e54 100644 --- a/doc/fix_srd.html +++ b/doc/fix_srd.html @@ -38,10 +38,7 @@ cubic values = style tolerance style = error or warn tolerance = fractional difference allowed (0 <= tol <= 1) - shift values = style seed - style = no or yes or possible - seed = random # seed (positive integer) - stream value = yes or no = whether or not streaming velocity is added for shear deformation + tstat value = yes or no = thermostat SRD particles or not
    @@ -58,13 +55,14 @@ particles that serve as a background solvent when interacting with big in (Hecht). The key idea behind using SRD particles as a cheap coarse-grained solvent is that SRD particles do not interact with each other, but only with the solute particles, which in LAMMPS -can be spheroids, ellipsoids, or rigid bodies containing multiples -spherioids and ellipsoids. The collision and rotation properties of -the model imbue the SRD particles with fluid-like properties, -including an effective viscosity. Thus simulations with large solute -particles can be run more quickly, to measure solute propoerties like -diffusivity and viscosity in a background fluid. The usual LAMMPS -fixes for such simulations, such as fix deform, fix +can be spheroids, ellipsoids, or line segments, or triangles, or rigid +bodies containing multiple spherioids or ellipsoids or line segments +or triangles. The collision and rotation properties of the model +imbue the SRD particles with fluid-like properties, including an +effective viscosity. Thus simulations with large solute particles can +be run more quickly, to measure solute propoerties like diffusivity +and viscosity in a background fluid. The usual LAMMPS fixes for such +simulations, such as fix deform, fix viscosity, and fix nvt/sllod, can be used in conjunction with the SRD model.

    @@ -272,15 +270,19 @@ must still be specified.

    Note that shifting of SRD coordinates requires extra communication, hence it should not normally be enabled unless required.

    -

    The stream keyword should be used when SRD particles are used with -the fix deform command to perform a simulation -undergoing shear, e.g. to measure a viscosity. If the stream style -is set to yes, then the mean velocity of each bin of SRD particles -is set to the streaming velocity of the deforming box, each time SRD -velocities are reset, every N timesteps. If the stream style is set -to no, then the mean velocity is unchanged, which may mean that it -takes a long time for the SRD fluid to come to equilibrium with a -velocity profile that matches the simulation box deformation. +

    The tstat keyword will thermostat the SRD particles to the specified +Tsrd. This is done every N timesteps, during the velocity rotation +operation, by rescaling the thermal velocity of particles in each SRD +bin to the desired temperature. If there is a streaming velocity +associated with the system, e.g. due to use of the fix +deform command to perform a simulation undergoing +shear, then that is also accounted for. The mean velocity of each bin +of SRD particles is set to the position-dependent streaming velocity, +based on the coordinates of the center of the SRD bin. Note that for +streaming simulations, if no thermostatting is performed (the +default), then it may take a long time for the SRD fluid to come to +equilibrium with a velocity profile that matches the simulation box +deformation.


    @@ -316,10 +318,10 @@ files. None of the fix_modify options are relevant to this fix.

    This fix tabulates several SRD statistics which are stored in a vector -of length 12, which can be accessed by various output -commands. The vector values calculated by -this fix are "intensive", meaning they do not scale with the size of -the simulation. Technically, the first 8 do scale with the size of +of length 12, which can be accessed by various output +commands. The vector values calculated +by this fix are "intensive", meaning they do not scale with the size +of the simulation. Technically, the first 8 do scale with the size of the simulation, but treating them as intensive means they are not scaled when printed as part of thermodyanmic output.

    @@ -346,9 +348,9 @@ minimization.

    Restrictions:

    -

    This command can only be used if LAMMPS was built with the "srd" -package. See the Making LAMMPS section for -more info on packages. +

    This command can only be used if LAMMPS was built with the SRD +package. See the Making LAMMPS section +for more info on packages.

    Related commands:

    @@ -358,7 +360,7 @@ more info on packages.

    The option defaults are lamda inferred from Tsrd, collision = noslip, overlap = no, inside = error, exact = yes, radius = 1.0, bounce = 0, -search = hgrid, cubic = error 0.01, shift = no, stream = yes. +search = hgrid, cubic = error 0.01, shift = no, tstat = no.


    diff --git a/doc/fix_srd.txt b/doc/fix_srd.txt index 759e1e8523..07dd49b861 100644 --- a/doc/fix_srd.txt +++ b/doc/fix_srd.txt @@ -33,10 +33,7 @@ keyword = {lamda} or {collision} or {overlap} or {inside} or {exact} or {radius} {cubic} values = style tolerance style = {error} or {warn} tolerance = fractional difference allowed (0 <= tol <= 1) - {shift} values = style seed - style = {no} or {yes} or {possible} - seed = random # seed (positive integer) - {stream} value = {yes} or {no} = whether or not streaming velocity is added for shear deformation :pre + {tstat} value = {yes} or {no} = thermostat SRD particles or not :pre :ule [Examples:] @@ -52,13 +49,14 @@ particles that serve as a background solvent when interacting with big in "(Hecht)"_#Hecht. The key idea behind using SRD particles as a cheap coarse-grained solvent is that SRD particles do not interact with each other, but only with the solute particles, which in LAMMPS -can be spheroids, ellipsoids, or rigid bodies containing multiples -spherioids and ellipsoids. The collision and rotation properties of -the model imbue the SRD particles with fluid-like properties, -including an effective viscosity. Thus simulations with large solute -particles can be run more quickly, to measure solute propoerties like -diffusivity and viscosity in a background fluid. The usual LAMMPS -fixes for such simulations, such as "fix deform"_fix_deform.html, "fix +can be spheroids, ellipsoids, or line segments, or triangles, or rigid +bodies containing multiple spherioids or ellipsoids or line segments +or triangles. The collision and rotation properties of the model +imbue the SRD particles with fluid-like properties, including an +effective viscosity. Thus simulations with large solute particles can +be run more quickly, to measure solute propoerties like diffusivity +and viscosity in a background fluid. The usual LAMMPS fixes for such +simulations, such as "fix deform"_fix_deform.html, "fix viscosity"_fix_viscosity.html, and "fix nvt/sllod"_fix_nvt_sllod.html, can be used in conjunction with the SRD model. @@ -266,15 +264,19 @@ must still be specified. Note that shifting of SRD coordinates requires extra communication, hence it should not normally be enabled unless required. -The {stream} keyword should be used when SRD particles are used with -the "fix deform"_fix_deform.html command to perform a simulation -undergoing shear, e.g. to measure a viscosity. If the {stream} style -is set to {yes}, then the mean velocity of each bin of SRD particles -is set to the streaming velocity of the deforming box, each time SRD -velocities are reset, every N timesteps. If the {stream} style is set -to {no}, then the mean velocity is unchanged, which may mean that it -takes a long time for the SRD fluid to come to equilibrium with a -velocity profile that matches the simulation box deformation. +The {tstat} keyword will thermostat the SRD particles to the specified +{Tsrd}. This is done every N timesteps, during the velocity rotation +operation, by rescaling the thermal velocity of particles in each SRD +bin to the desired temperature. If there is a streaming velocity +associated with the system, e.g. due to use of the "fix +deform"_fix_deform.html command to perform a simulation undergoing +shear, then that is also accounted for. The mean velocity of each bin +of SRD particles is set to the position-dependent streaming velocity, +based on the coordinates of the center of the SRD bin. Note that for +streaming simulations, if no thermostatting is performed (the +default), then it may take a long time for the SRD fluid to come to +equilibrium with a velocity profile that matches the simulation box +deformation. :line @@ -311,9 +313,9 @@ are relevant to this fix. This fix tabulates several SRD statistics which are stored in a vector of length 12, which can be accessed by various "output -commands"_Section_howto.html#4_15. The vector values calculated by -this fix are "intensive", meaning they do not scale with the size of -the simulation. Technically, the first 8 do scale with the size of +commands"_Section_howto.html#howto_15. The vector values calculated +by this fix are "intensive", meaning they do not scale with the size +of the simulation. Technically, the first 8 do scale with the size of the simulation, but treating them as intensive means they are not scaled when printed as part of thermodyanmic output. @@ -340,9 +342,9 @@ minimization"_minimize.html. [Restrictions:] -This command can only be used if LAMMPS was built with the "srd" -package. See the "Making LAMMPS"_Section_start.html#2_3 section for -more info on packages. +This command can only be used if LAMMPS was built with the SRD +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. [Related commands:] @@ -352,7 +354,7 @@ more info on packages. The option defaults are lamda inferred from Tsrd, collision = noslip, overlap = no, inside = error, exact = yes, radius = 1.0, bounce = 0, -search = hgrid, cubic = error 0.01, shift = no, stream = yes. +search = hgrid, cubic = error 0.01, shift = no, tstat = no. :line diff --git a/doc/fix_store_force.html b/doc/fix_store_force.html index 8fcd4f8cd1..f73bdf65b9 100644 --- a/doc/fix_store_force.html +++ b/doc/fix_store_force.html @@ -28,7 +28,7 @@ timestep when the fix is invoked, as described below. This is useful for storing forces before constraints or other boundary conditions are computed which modify the forces, so that unmodified forces can be -written to a dump file or accessed by other output +written to a dump file or accessed by other output commands that use per-atom quantities.

    This fix is invoked at the point in the velocity-Verlet timestepping @@ -58,9 +58,9 @@ files. None of the fix_modify options are relevant to this fix.

    This fix produces a per-atom array which can be accessed by various -output commands. The number of columns for -each atom is 3, and the columns store the x,y,z forces on each atom. -The per-atom values be accessed on any timestep. +output commands. The number of columns +for each atom is 3, and the columns store the x,y,z forces on each +atom. The per-atom values be accessed on any timestep.

    No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy diff --git a/doc/fix_store_force.txt b/doc/fix_store_force.txt index 12a810db61..e77a60cf2c 100644 --- a/doc/fix_store_force.txt +++ b/doc/fix_store_force.txt @@ -26,7 +26,7 @@ timestep when the fix is invoked, as described below. This is useful for storing forces before constraints or other boundary conditions are computed which modify the forces, so that unmodified forces can be "written to a dump file"_dump.html or accessed by other "output -commands"_Section_howto.html#4_15 that use per-atom quantities. +commands"_Section_howto.html#howto_15 that use per-atom quantities. This fix is invoked at the point in the velocity-Verlet timestepping immediately after "pair"_pair_style.html, "bond"_bond_style.html, @@ -55,9 +55,9 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix produces a per-atom array which can be accessed by various -"output commands"_Section_howto.html#4_15. The number of columns for -each atom is 3, and the columns store the x,y,z forces on each atom. -The per-atom values be accessed on any timestep. +"output commands"_Section_howto.html#howto_15. The number of columns +for each atom is 3, and the columns store the x,y,z forces on each +atom. The per-atom values be accessed on any timestep. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy diff --git a/doc/fix_store_state.html b/doc/fix_store_state.html index 210a552d28..067ad38aea 100644 --- a/doc/fix_store_state.html +++ b/doc/fix_store_state.html @@ -73,11 +73,11 @@ fix 2 all store/state 1000 vx vy vz time the fix is defined. If N is 0, then the values are never updated, so this is a way of archiving an atom attribute at a given time for future use in a calculation or output. See the discussion of -output commands that take fixes as inputs. -And see for example, the compute reduce, fix -ave/atom, fix ave/histo, fix -ave/spatial, and atom-style -variable commands. +output commands that take fixes as +inputs. And see for example, the compute +reduce, fix ave/atom, fix +ave/histo, fix ave/spatial, +and atom-style variable commands.

    If N is not zero, then the attributes will be updated every N steps. @@ -117,8 +117,9 @@ fix.

    If a single input is specified, this fix produces a per-atom vector. If multiple inputs are specified, a per-atom array is produced where the number of columns for each atom is the number of inputs. These -can be accessed by various output commands. -The per-atom values be accessed on any timestep. +can be accessed by various output +commands. The per-atom values be +accessed on any timestep.

    No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy diff --git a/doc/fix_store_state.txt b/doc/fix_store_state.txt index fd5b4858a2..05b6d8878b 100644 --- a/doc/fix_store_state.txt +++ b/doc/fix_store_state.txt @@ -63,11 +63,11 @@ Define a fix that stores attributes for each atom in the group at the time the fix is defined. If {N} is 0, then the values are never updated, so this is a way of archiving an atom attribute at a given time for future use in a calculation or output. See the discussion of -"output commands"_Section_howto.html#4_15 that take fixes as inputs. -And see for example, the "compute reduce"_compute_reduce.html, "fix -ave/atom"_fix_ave_atom.html, "fix ave/histo"_fix_ave_histo.html, "fix -ave/spatial"_fix_ave_spatial.html, and "atom-style -variable"_variable.html commands. +"output commands"_Section_howto.html#howto_15 that take fixes as +inputs. And see for example, the "compute +reduce"_compute_reduce.html, "fix ave/atom"_fix_ave_atom.html, "fix +ave/histo"_fix_ave_histo.html, "fix ave/spatial"_fix_ave_spatial.html, +and "atom-style variable"_variable.html commands. If {N} is not zero, then the attributes will be updated every {N} steps. @@ -107,8 +107,9 @@ fix. If a single input is specified, this fix produces a per-atom vector. If multiple inputs are specified, a per-atom array is produced where the number of columns for each atom is the number of inputs. These -can be accessed by various "output commands"_Section_howto.html#4_15. -The per-atom values be accessed on any timestep. +can be accessed by various "output +commands"_Section_howto.html#howto_15. The per-atom values be +accessed on any timestep. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy diff --git a/doc/fix_temp_berendsen.html b/doc/fix_temp_berendsen.html index 9fc9d5f153..0762f66eea 100644 --- a/doc/fix_temp_berendsen.html +++ b/doc/fix_temp_berendsen.html @@ -56,8 +56,8 @@ normally be used on atoms that also have their temperature controlled by another fix - e.g. by fix nvt or fix langevin commands.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.

    This fix computes a temperature each timestep. To do this, the fix @@ -104,14 +104,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

    These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -135,7 +135,7 @@ system's potential energy as part of thermodynamic output.

    This fix computes a global scalar which can be accessed by various -output commands. The scalar is the +output commands. The scalar is the cummulative energy change due to this fix. The scalar value calculated by this fix is "extensive".

    diff --git a/doc/fix_temp_berendsen.txt b/doc/fix_temp_berendsen.txt index 51da35ce72..8dd9620418 100644 --- a/doc/fix_temp_berendsen.txt +++ b/doc/fix_temp_berendsen.txt @@ -52,8 +52,8 @@ normally be used on atoms that also have their temperature controlled by another fix - e.g. by "fix nvt"_fix_nh.html or "fix langevin"_fix_langevin.html commands. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. This fix computes a temperature each timestep. To do this, the fix @@ -100,14 +100,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -131,7 +131,7 @@ system's potential energy as part of "thermodynamic output"_thermo_style.html. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the +"output commands"_Section_howto.html#howto_15. The scalar is the cummulative energy change due to this fix. The scalar value calculated by this fix is "extensive". diff --git a/doc/fix_temp_rescale.html b/doc/fix_temp_rescale.html index 8bc0e6c2ef..81273ed4e3 100644 --- a/doc/fix_temp_rescale.html +++ b/doc/fix_temp_rescale.html @@ -65,8 +65,8 @@ normally be used on atoms that also have their temperature controlled by another fix - e.g. by fix nvt or fix langevin commands.

    -

    See this howto section of the manual for a -discussion of different ways to compute temperature and perform +

    See this howto section of the manual for +a discussion of different ways to compute temperature and perform thermostatting.

    This fix computes a temperature each timestep. To do this, the fix @@ -113,14 +113,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

    These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -144,7 +144,7 @@ system's potential energy as part of thermodynamic output.

    This fix computes a global scalar which can be accessed by various -output commands. The scalar is the +output commands. The scalar is the cummulative energy change due to this fix. The scalar value calculated by this fix is "extensive".

    diff --git a/doc/fix_temp_rescale.txt b/doc/fix_temp_rescale.txt index 60d45b7c20..5fbe99e5b3 100644 --- a/doc/fix_temp_rescale.txt +++ b/doc/fix_temp_rescale.txt @@ -60,8 +60,8 @@ normally be used on atoms that also have their temperature controlled by another fix - e.g. by "fix nvt"_fix_nh.html or "fix langevin"_fix_langevin.html commands. -See "this howto section"_Section_howto.html#4_16 of the manual for a -discussion of different ways to compute temperature and perform +See "this howto section"_Section_howto.html#howto_16 of the manual for +a discussion of different ways to compute temperature and perform thermostatting. This fix computes a temperature each timestep. To do this, the fix @@ -108,14 +108,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -139,7 +139,7 @@ system's potential energy as part of "thermodynamic output"_thermo_style.html. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the +"output commands"_Section_howto.html#howto_15. The scalar is the cummulative energy change due to this fix. The scalar value calculated by this fix is "extensive". diff --git a/doc/fix_temp_rescale_eff.html b/doc/fix_temp_rescale_eff.html index 2eefe238f1..038e181938 100644 --- a/doc/fix_temp_rescale_eff.html +++ b/doc/fix_temp_rescale_eff.html @@ -54,7 +54,7 @@ system's potential energy as part of thermodynamic output.

    This fix computes a global scalar which can be accessed by various -output commands. The scalar is the +output commands. The scalar is the cummulative energy change due to this fix. The scalar value calculated by this fix is "extensive".

    @@ -66,8 +66,8 @@ calculated by this fix is "extensive".

    Restrictions:

    -

    This fix is part of the "user-eff" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This fix is part of the USER-EFF package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/fix_temp_rescale_eff.txt b/doc/fix_temp_rescale_eff.txt index eef42ce239..f96b40962a 100644 --- a/doc/fix_temp_rescale_eff.txt +++ b/doc/fix_temp_rescale_eff.txt @@ -51,7 +51,7 @@ system's potential energy as part of "thermodynamic output"_thermo_style.html. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the +"output commands"_Section_howto.html#howto_15. The scalar is the cummulative energy change due to this fix. The scalar value calculated by this fix is "extensive". @@ -63,9 +63,9 @@ This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "user-eff" package. It is only enabled if +This fix is part of the USER-EFF package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/fix_thermal_conductivity.html b/doc/fix_thermal_conductivity.html index 72e5508a6b..d89d6b9fa4 100644 --- a/doc/fix_thermal_conductivity.html +++ b/doc/fix_thermal_conductivity.html @@ -108,7 +108,7 @@ files. None of the fix_modify options are relevant to this fix.

    This fix computes a global scalar which can be accessed by various -output commands. The scalar is the +output commands. The scalar is the cummulative kinetic energy transferred between the bottom and middle of the simulation box (in the edim direction) is stored as a scalar quantity by this fix. This quantity is zeroed when the fix is defined diff --git a/doc/fix_thermal_conductivity.txt b/doc/fix_thermal_conductivity.txt index da0d0c8073..19fa15be33 100644 --- a/doc/fix_thermal_conductivity.txt +++ b/doc/fix_thermal_conductivity.txt @@ -98,7 +98,7 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the +"output commands"_Section_howto.html#howto_15. The scalar is the cummulative kinetic energy transferred between the bottom and middle of the simulation box (in the {edim} direction) is stored as a scalar quantity by this fix. This quantity is zeroed when the fix is defined diff --git a/doc/fix_tmd.html b/doc/fix_tmd.html index bf9c8f5d6b..c365365f4b 100644 --- a/doc/fix_tmd.html +++ b/doc/fix_tmd.html @@ -93,7 +93,7 @@ to prevent it being overwritten.

    No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output +by this fix for access by various output commands.

    This fix can ramp its rho parameter over multiple runs, using the @@ -114,8 +114,8 @@ are not multiple competing holonomic constraints applied to the same atoms.

    To read gzipped target files, you must compile LAMMPS with the --DLAMMPS_GZIP option - see the Making LAMMPS -section of the documentation. +-DLAMMPS_GZIP option - see the Making +LAMMPS section of the documentation.

    Related commands: none

    diff --git a/doc/fix_tmd.txt b/doc/fix_tmd.txt index 7ff51ce50c..71d8d2c767 100644 --- a/doc/fix_tmd.txt +++ b/doc/fix_tmd.txt @@ -91,7 +91,7 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. +commands"_Section_howto.html#howto_15. This fix can ramp its rho parameter over multiple runs, using the {start} and {stop} keywords of the "run"_run.html command. See the @@ -111,8 +111,8 @@ are not multiple competing holonomic constraints applied to the same atoms. To read gzipped target files, you must compile LAMMPS with the --DLAMMPS_GZIP option - see the "Making LAMMPS"_Section_start.html#2_2 -section of the documentation. +-DLAMMPS_GZIP option - see the "Making +LAMMPS"_Section_start.html#start_2 section of the documentation. [Related commands:] none diff --git a/doc/fix_ttm.html b/doc/fix_ttm.html index 2c5eb9e006..906e67db1d 100644 --- a/doc/fix_ttm.html +++ b/doc/fix_ttm.html @@ -145,19 +145,19 @@ atoms. This fix should not normally be used on atoms that have their temperature controlled by another fix - e.g. fix nvt or fix langevin.

    -

    This fix computes 2 output quantities stored in a vector of -length 2, which can be accessed by various output -commands. The first quantity is -the total energy of the electronic subsystem. The second quantity -is the energy transferred from the electronic to the atomic subsystem -on that timestep. Note that the velocity verlet integrator applies the -fix ttm forces to the atomic subsystem as two half-step velocity -updates: one on the current timestep and one on the subsequent timestep. +

    This fix computes 2 output quantities stored in a vector of length 2, +which can be accessed by various output +commands. The first quantity is the +total energy of the electronic subsystem. The second quantity is the +energy transferred from the electronic to the atomic subsystem on that +timestep. Note that the velocity verlet integrator applies the fix ttm +forces to the atomic subsystem as two half-step velocity updates: one +on the current timestep and one on the subsequent timestep. Consequently, the change in the atomic subsystem energy is lagged by -half a timestep relative to the change in the electronic subsystem +half a timestep relative to the change in the electronic subsystem energy. As a result of this, users may notice slight fluctuations in -the sum of the atomic and electronic subsystem energies reported at -the end of the timestep. +the sum of the atomic and electronic subsystem energies reported at +the end of the timestep.

    The vector values calculated by this fix are "extensive".

    @@ -184,7 +184,7 @@ should produce the same behavior.

    None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored by this fix for -access by various output commands. No +access by various output commands. No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization. diff --git a/doc/fix_ttm.txt b/doc/fix_ttm.txt index ddd76c7792..a8fa96f910 100644 --- a/doc/fix_ttm.txt +++ b/doc/fix_ttm.txt @@ -142,19 +142,19 @@ atoms. This fix should not normally be used on atoms that have their temperature controlled by another fix - e.g. "fix nvt"_fix_nh.html or "fix langevin"_fix_langevin.html. -This fix computes 2 output quantities stored in a vector of -length 2, which can be accessed by various "output -commands"_Section_howto.html#4_15. The first quantity is -the total energy of the electronic subsystem. The second quantity -is the energy transferred from the electronic to the atomic subsystem -on that timestep. Note that the velocity verlet integrator applies the -fix ttm forces to the atomic subsystem as two half-step velocity -updates: one on the current timestep and one on the subsequent timestep. +This fix computes 2 output quantities stored in a vector of length 2, +which can be accessed by various "output +commands"_Section_howto.html#howto_15. The first quantity is the +total energy of the electronic subsystem. The second quantity is the +energy transferred from the electronic to the atomic subsystem on that +timestep. Note that the velocity verlet integrator applies the fix ttm +forces to the atomic subsystem as two half-step velocity updates: one +on the current timestep and one on the subsequent timestep. Consequently, the change in the atomic subsystem energy is lagged by -half a timestep relative to the change in the electronic subsystem +half a timestep relative to the change in the electronic subsystem energy. As a result of this, users may notice slight fluctuations in -the sum of the atomic and electronic subsystem energies reported at -the end of the timestep. +the sum of the atomic and electronic subsystem energies reported at +the end of the timestep. The vector values calculated by this fix are "extensive". @@ -181,7 +181,7 @@ should produce the same behavior. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for -access by various "output commands"_Section_howto.html#4_15. No +access by various "output commands"_Section_howto.html#howto_15. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. diff --git a/doc/fix_viscosity.html b/doc/fix_viscosity.html index a864ba390f..51eee268f6 100644 --- a/doc/fix_viscosity.html +++ b/doc/fix_viscosity.html @@ -103,12 +103,12 @@ you cannot accurately infer a viscosity and should try increasing the Nevery parameter.

    An alternative method for calculating a viscosity is to run a NEMD -simulation, as described in this section of -the manual. NEMD simulations deform the simmulation box via the fix -deform command. Thus they cannot be run on a charged -system using a PPPM solver since PPPM does not -currently support non-orthogonal boxes. Using fix viscosity keeps the -box orthogonal; thus it does not suffer from this limitation. +simulation, as described in this section +of the manual. NEMD simulations deform the simmulation box via the +fix deform command. Thus they cannot be run on a +charged system using a PPPM solver since PPPM does +not currently support non-orthogonal boxes. Using fix viscosity keeps +the box orthogonal; thus it does not suffer from this limitation.

    Restart, fix_modify, output, run start/stop, minimize info:

    @@ -117,7 +117,7 @@ files. None of the fix_modify options are relevant to this fix.

    This fix computes a global scalar which can be accessed by various -output commands. The scalar is the +output commands. The scalar is the cummulative momentum transferred between the bottom and middle of the simulation box (in the pdim direction) is stored as a scalar quantity by this fix. This quantity is zeroed when the fix is defined diff --git a/doc/fix_viscosity.txt b/doc/fix_viscosity.txt index f1cc3ccbf1..3e39526876 100644 --- a/doc/fix_viscosity.txt +++ b/doc/fix_viscosity.txt @@ -92,12 +92,12 @@ you cannot accurately infer a viscosity and should try increasing the Nevery parameter. An alternative method for calculating a viscosity is to run a NEMD -simulation, as described in "this section"_Section_howto.html#4_13 of -the manual. NEMD simulations deform the simmulation box via the "fix -deform"_fix_deform.html command. Thus they cannot be run on a charged -system using a "PPPM solver"_kspace_style.html since PPPM does not -currently support non-orthogonal boxes. Using fix viscosity keeps the -box orthogonal; thus it does not suffer from this limitation. +simulation, as described in "this section"_Section_howto.html#howto_13 +of the manual. NEMD simulations deform the simmulation box via the +"fix deform"_fix_deform.html command. Thus they cannot be run on a +charged system using a "PPPM solver"_kspace_style.html since PPPM does +not currently support non-orthogonal boxes. Using fix viscosity keeps +the box orthogonal; thus it does not suffer from this limitation. [Restart, fix_modify, output, run start/stop, minimize info:] @@ -106,7 +106,7 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global scalar which can be accessed by various -"output commands"_Section_howto.html#4_15. The scalar is the +"output commands"_Section_howto.html#howto_15. The scalar is the cummulative momentum transferred between the bottom and middle of the simulation box (in the {pdim} direction) is stored as a scalar quantity by this fix. This quantity is zeroed when the fix is defined diff --git a/doc/fix_viscous.html b/doc/fix_viscous.html index 3bc7229477..fe03b98672 100644 --- a/doc/fix_viscous.html +++ b/doc/fix_viscous.html @@ -91,14 +91,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

    These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -110,9 +110,9 @@ instructions on how to use the accelerated styles effectively.

    No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command.

    The forces due to this fix are imposed during an energy minimization, invoked by the minimize command. This fix should only diff --git a/doc/fix_viscous.txt b/doc/fix_viscous.txt index 7c2262a347..bfd26b726b 100644 --- a/doc/fix_viscous.txt +++ b/doc/fix_viscous.txt @@ -82,14 +82,14 @@ run faster, depending on your available hardware, as discussed in styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda" package. They -are only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +These accelerated styles are part of the USER-CUDA package. They are +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -102,8 +102,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. The forces due to this fix are imposed during an energy minimization, invoked by the "minimize"_minimize.html command. This fix should only diff --git a/doc/fix_wall.html b/doc/fix_wall.html index f776418915..b4612a7f31 100644 --- a/doc/fix_wall.html +++ b/doc/fix_wall.html @@ -40,11 +40,14 @@

  • zero or more keyword/value pairs may be appended -
  • keyword = units +
  • keyword = units or fld
      units value = lattice or box
         lattice = the wall position is defined in lattice units
    -    box = the wall position is defined in simulation box units 
    +    box = the wall position is defined in simulation box units
    +  fld value = yes or no
    +    yes = invoke the wall constraint to be compatible with implicit FLD
    +    yes = invoke the wall constraint in the normal way 
     
    @@ -162,6 +165,13 @@ A lattice value means the distance units are in lattice spacings. The lattice command must have been previously used to define the lattice spacings.

    +

    The fld keyword can be used with a yes setting to invoke the wall +constraint before pairwise interactions are computed. This allows an +implicit FLD model using pair_style lubricateU +to include the wall force in its calculations. If the setting is +no, wall forces are imposed after pairwise interactions, in the +usual manner. +


    Here are examples of variable definitions that move the wall position @@ -211,15 +221,15 @@ the system's potential energy as part of thermodyn output.

    This fix computes a global scalar energy and a global vector of -forces, which can be accessed by various output -commands. Note that the scalar energy is the -sum of interactions with all defined walls. If you want the energy on -a per-wall basis, you need to use multiple fix wall commands. The -length of the vector is equal to the number of walls defined by the -fix. Each vector value is the normal force on a specific wall. Note -that an outward force on a wall will be a negative value for lo -walls and a positive value for hi walls. The scalar and vector -values calculated by this fix are "extensive". +forces, which can be accessed by various output +commands. Note that the scalar energy is +the sum of interactions with all defined walls. If you want the +energy on a per-wall basis, you need to use multiple fix wall +commands. The length of the vector is equal to the number of walls +defined by the fix. Each vector value is the normal force on a +specific wall. Note that an outward force on a wall will be a +negative value for lo walls and a positive value for hi walls. +The scalar and vector values calculated by this fix are "extensive".

    No parameter of this fix can be used with the start/stop keywords of the run command. diff --git a/doc/fix_wall.txt b/doc/fix_wall.txt index c9a25f106a..14bab6db03 100644 --- a/doc/fix_wall.txt +++ b/doc/fix_wall.txt @@ -28,10 +28,13 @@ face = {xlo} or {xhi} or {ylo} or {yhi} or {zlo} or {zhi} :l sigma = size factor for wall-particle interaction (distance units) cutoff = distance from wall at which wall-particle interaction is cut off (distance units) :pre zero or more keyword/value pairs may be appended :l -keyword = {units} :l +keyword = {units} or {fld} :l {units} value = {lattice} or {box} {lattice} = the wall position is defined in lattice units - {box} = the wall position is defined in simulation box units :pre + {box} = the wall position is defined in simulation box units + {fld} value = {yes} or {no} + {yes} = invoke the wall constraint to be compatible with implicit FLD + {yes} = invoke the wall constraint in the normal way :pre :ule [Examples:] @@ -148,6 +151,13 @@ A {lattice} value means the distance units are in lattice spacings. The "lattice"_lattice.html command must have been previously used to define the lattice spacings. +The {fld} keyword can be used with a {yes} setting to invoke the wall +constraint before pairwise interactions are computed. This allows an +implicit FLD model using "pair_style lubricateU"_pair_lubricateU.html +to include the wall force in its calculations. If the setting is +{no}, wall forces are imposed after pairwise interactions, in the +usual manner. + :line Here are examples of variable definitions that move the wall position @@ -198,14 +208,14 @@ output"_thermo_style.html. This fix computes a global scalar energy and a global vector of forces, which can be accessed by various "output -commands"_Section_howto.html#4_15. Note that the scalar energy is the -sum of interactions with all defined walls. If you want the energy on -a per-wall basis, you need to use multiple fix wall commands. The -length of the vector is equal to the number of walls defined by the -fix. Each vector value is the normal force on a specific wall. Note -that an outward force on a wall will be a negative value for {lo} -walls and a positive value for {hi} walls. The scalar and vector -values calculated by this fix are "extensive". +commands"_Section_howto.html#howto_15. Note that the scalar energy is +the sum of interactions with all defined walls. If you want the +energy on a per-wall basis, you need to use multiple fix wall +commands. The length of the vector is equal to the number of walls +defined by the fix. Each vector value is the normal force on a +specific wall. Note that an outward force on a wall will be a +negative value for {lo} walls and a positive value for {hi} walls. +The scalar and vector values calculated by this fix are "extensive". No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. diff --git a/doc/fix_wall_gran.html b/doc/fix_wall_gran.html index 12e1f24066..cc8473392c 100644 --- a/doc/fix_wall_gran.html +++ b/doc/fix_wall_gran.html @@ -154,15 +154,15 @@ uninterrupted fashion.

    None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored by this fix for -access by various output commands. No +access by various output commands. No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

    Restrictions:

    -

    This fix is part of the "granular" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This fix is part of the GRANULAR package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Any dimension (xyz) that has a granular wall must be non-periodic. diff --git a/doc/fix_wall_gran.txt b/doc/fix_wall_gran.txt index 990b96a43a..f758a83647 100644 --- a/doc/fix_wall_gran.txt +++ b/doc/fix_wall_gran.txt @@ -137,16 +137,16 @@ uninterrupted fashion. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for -access by various "output commands"_Section_howto.html#4_15. No +access by various "output commands"_Section_howto.html#howto_15. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] -This fix is part of the "granular" package. It is only enabled if +This fix is part of the GRANULAR package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. Any dimension (xyz) that has a granular wall must be non-periodic. diff --git a/doc/fix_wall_reflect.html b/doc/fix_wall_reflect.html index 2f22de0db6..5e3aaa73aa 100644 --- a/doc/fix_wall_reflect.html +++ b/doc/fix_wall_reflect.html @@ -105,16 +105,16 @@ in a time-dependent fashion using equal-style variables.

    variable ramp equal ramp(0,10)
    -fix 1 all wall xlo v_ramp 1.0 1.0 2.5 
    +fix 1 all wall/reflect xlo v_ramp 
     
    variable linear equal vlinear(0,20)
    -fix 1 all wall xlo v_linear 1.0 1.0 2.5 
    +fix 1 all wall/reflect xlo v_linear 
     
    variable wiggle equal swiggle(0.0,5.0,3.0)
    -fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 
    +fix 1 all wall/reflect xlo v_wiggle  
     
    variable wiggle equal cwiggle(0.0,5.0,3.0)
    -fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 
    +fix 1 all wall/reflect xlo v_wiggle 
     

    The ramp(lo,hi) function adjusts the wall position linearly from lo to hi over the course of a run. The linear(c0,velocity) function does @@ -141,9 +141,9 @@ perturbation on the particles:

    No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various output -commands. No parameter of this fix can be -used with the start/stop keywords of the run command. +by this fix for access by various output +commands. No parameter of this fix can +be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

    Restrictions: diff --git a/doc/fix_wall_reflect.txt b/doc/fix_wall_reflect.txt index 00cea46b2e..646e741eae 100644 --- a/doc/fix_wall_reflect.txt +++ b/doc/fix_wall_reflect.txt @@ -94,16 +94,16 @@ in a time-dependent fashion using equal-style "variables"_variable.html. variable ramp equal ramp(0,10) -fix 1 all wall xlo v_ramp 1.0 1.0 2.5 :pre +fix 1 all wall/reflect xlo v_ramp :pre variable linear equal vlinear(0,20) -fix 1 all wall xlo v_linear 1.0 1.0 2.5 :pre +fix 1 all wall/reflect xlo v_linear :pre variable wiggle equal swiggle(0.0,5.0,3.0) -fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 :pre +fix 1 all wall/reflect xlo v_wiggle :pre variable wiggle equal cwiggle(0.0,5.0,3.0) -fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 :pre +fix 1 all wall/reflect xlo v_wiggle :pre The ramp(lo,hi) function adjusts the wall position linearly from lo to hi over the course of a run. The linear(c0,velocity) function does @@ -131,8 +131,8 @@ No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various "output -commands"_Section_howto.html#4_15. No parameter of this fix can be -used with the {start/stop} keywords of the "run"_run.html command. +commands"_Section_howto.html#howto_15. No parameter of this fix can +be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] diff --git a/doc/fix_wall_region.html b/doc/fix_wall_region.html index 5234bb5bf5..bd393f655a 100644 --- a/doc/fix_wall_region.html +++ b/doc/fix_wall_region.html @@ -163,9 +163,9 @@ system's potential energy as part of thermodynamic output.

    This fix computes a global scalar energy and a global 3-length vector -of forces, which can be accessed by various output -commands. The scalar energy is the sum of -energy interactions for all particles interacting with the wall +of forces, which can be accessed by various output +commands. The scalar energy is the sum +of energy interactions for all particles interacting with the wall represented by the region surface. The 3 vector quantities are the x,y,z components of the total force acting on the wall due to the particles. The scalar and vector values calculated by this fix are diff --git a/doc/fix_wall_region.txt b/doc/fix_wall_region.txt index a2651cb0cd..e84ad09641 100644 --- a/doc/fix_wall_region.txt +++ b/doc/fix_wall_region.txt @@ -161,8 +161,8 @@ output"_thermo_style.html. This fix computes a global scalar energy and a global 3-length vector of forces, which can be accessed by various "output -commands"_Section_howto.html#4_15. The scalar energy is the sum of -energy interactions for all particles interacting with the wall +commands"_Section_howto.html#howto_15. The scalar energy is the sum +of energy interactions for all particles interacting with the wall represented by the region surface. The 3 vector quantities are the x,y,z components of the total force acting on the wall due to the particles. The scalar and vector values calculated by this fix are diff --git a/doc/fix_wall_srd.html b/doc/fix_wall_srd.html index 8a26803400..cdb808f73c 100644 --- a/doc/fix_wall_srd.html +++ b/doc/fix_wall_srd.html @@ -139,16 +139,16 @@ in a time-dependent fashion using equal-style variables.

    variable ramp equal ramp(0,10)
    -fix 1 all wall xlo v_ramp 1.0 1.0 2.5 
    +fix 1 all wall/srd xlo v_ramp 
     
    variable linear equal vlinear(0,20)
    -fix 1 all wall xlo v_linear 1.0 1.0 2.5 
    +fix 1 all wall/srd xlo v_linear 
     
    variable wiggle equal swiggle(0.0,5.0,3.0)
    -fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 
    +fix 1 all wall/srd xlo v_wiggle  
     
    variable wiggle equal cwiggle(0.0,5.0,3.0)
    -fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 
    +fix 1 all wall/srd xlo v_wiggle 
     

    The ramp(lo,hi) function adjusts the wall position linearly from lo to hi over the course of a run. The linear(c0,velocity) function does @@ -177,9 +177,9 @@ files. None of the fix_modify options are relevant to this fix.

    This fix computes a global array of values which can be accessed by -various output commands. The number of rows -in the array is equal to the number of walls defined by the fix. The -number of columns is 3, for the x,y,z components of force on each +various output commands. The number of +rows in the array is equal to the number of walls defined by the fix. +The number of columns is 3, for the x,y,z components of force on each wall.

    Note that an outward normal force on a wall will be a negative value diff --git a/doc/fix_wall_srd.txt b/doc/fix_wall_srd.txt index 4d098cfb29..596ebe40b8 100644 --- a/doc/fix_wall_srd.txt +++ b/doc/fix_wall_srd.txt @@ -127,17 +127,18 @@ Here are examples of variable definitions that move the wall position in a time-dependent fashion using equal-style "variables"_variable.html. + variable ramp equal ramp(0,10) -fix 1 all wall xlo v_ramp 1.0 1.0 2.5 :pre +fix 1 all wall/srd xlo v_ramp :pre variable linear equal vlinear(0,20) -fix 1 all wall xlo v_linear 1.0 1.0 2.5 :pre +fix 1 all wall/srd xlo v_linear :pre variable wiggle equal swiggle(0.0,5.0,3.0) -fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 :pre +fix 1 all wall/srd xlo v_wiggle :pre variable wiggle equal cwiggle(0.0,5.0,3.0) -fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 :pre +fix 1 all wall/srd xlo v_wiggle :pre The ramp(lo,hi) function adjusts the wall position linearly from lo to hi over the course of a run. The linear(c0,velocity) function does @@ -166,9 +167,9 @@ files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix computes a global array of values which can be accessed by -various "output commands"_Section_howto.html#4_15. The number of rows -in the array is equal to the number of walls defined by the fix. The -number of columns is 3, for the x,y,z components of force on each +various "output commands"_Section_howto.html#howto_15. The number of +rows in the array is equal to the number of walls defined by the fix. +The number of columns is 3, for the x,y,z components of force on each wall. Note that an outward normal force on a wall will be a negative value diff --git a/doc/if.html b/doc/if.html index 90404076e8..3baffda0fc 100644 --- a/doc/if.html +++ b/doc/if.html @@ -66,7 +66,7 @@ above.

    IMPORTANT NOTE: If a command itself requires a quoted argument (e.g. a print command), then double and single quotes can be used and nested in the usual manner, as in the examples above and below. -See this section of the manual for more +See this section of the manual for more details on using quotes in arguments. Only one of level of nesting is allowed, but that should be sufficient for most use cases.

    diff --git a/doc/if.txt b/doc/if.txt index 4a3cc3d72b..a92b9213b9 100644 --- a/doc/if.txt +++ b/doc/if.txt @@ -63,7 +63,7 @@ above. IMPORTANT NOTE: If a command itself requires a quoted argument (e.g. a "print"_print.html command), then double and single quotes can be used and nested in the usual manner, as in the examples above and below. -See "this section"_Section_commands.html#3_2 of the manual for more +See "this section"_Section_commands.html#cmd_2 of the manual for more details on using quotes in arguments. Only one of level of nesting is allowed, but that should be sufficient for most use cases. diff --git a/doc/improper_class2.html b/doc/improper_class2.html index 6fa33fdb2b..315163711a 100644 --- a/doc/improper_class2.html +++ b/doc/improper_class2.html @@ -86,7 +86,7 @@ radians internally; hence the units of M are in energy/radian^2.

    Restrictions:

    This improper style can only be used if LAMMPS was built with the -"class2" package. See the Making LAMMPS +CLASS2 package. See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/improper_class2.txt b/doc/improper_class2.txt index c2c2419a6e..156d97fa8a 100644 --- a/doc/improper_class2.txt +++ b/doc/improper_class2.txt @@ -83,7 +83,7 @@ radians internally; hence the units of M are in energy/radian^2. [Restrictions:] This improper style can only be used if LAMMPS was built with the -"class2" package. See the "Making LAMMPS"_Section_start.html#2_3 +CLASS2 package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/improper_coeff.html b/doc/improper_coeff.html index 6361337896..1808e9be3a 100644 --- a/doc/improper_coeff.html +++ b/doc/improper_coeff.html @@ -79,7 +79,7 @@ specified by the associated improper_coeff c

    There are also additional improper styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the improper section of this +the individual styles are given in the improper section of this page.


    diff --git a/doc/improper_coeff.txt b/doc/improper_coeff.txt index 642b881ea1..a3defc2741 100644 --- a/doc/improper_coeff.txt +++ b/doc/improper_coeff.txt @@ -77,7 +77,7 @@ specified by the associated "improper_coeff"_improper_coeff.html command: There are also additional improper styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the improper section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. :line diff --git a/doc/improper_cvff.html b/doc/improper_cvff.html index dedef21f2e..9c8a3e97ad 100644 --- a/doc/improper_cvff.html +++ b/doc/improper_cvff.html @@ -56,7 +56,7 @@ commands:

    Restrictions:

    This improper style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/improper_cvff.txt b/doc/improper_cvff.txt index b58dd83382..79df382989 100644 --- a/doc/improper_cvff.txt +++ b/doc/improper_cvff.txt @@ -53,8 +53,8 @@ n (0,1,2,3,4,6) :ul [Restrictions:] This improper style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/improper_harmonic.html b/doc/improper_harmonic.html index 5d3604c10d..9ba2e9cce9 100644 --- a/doc/improper_harmonic.html +++ b/doc/improper_harmonic.html @@ -56,7 +56,7 @@ internally; hence the units of K are in energy/radian^2.

    Restrictions:

    This improper style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/improper_harmonic.txt b/doc/improper_harmonic.txt index c1170edb27..e57ad41308 100644 --- a/doc/improper_harmonic.txt +++ b/doc/improper_harmonic.txt @@ -53,8 +53,8 @@ internally; hence the units of K are in energy/radian^2. [Restrictions:] This improper style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/improper_hybrid.html b/doc/improper_hybrid.html index 981fc7945a..3bbdf3710d 100644 --- a/doc/improper_hybrid.html +++ b/doc/improper_hybrid.html @@ -53,10 +53,12 @@ type will then be ignored. the improper_coeff command, if you desire to turn off certain improper types.

    +
    +

    Restrictions:

    This improper style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Unlike other improper styles, the hybrid improper style does not store diff --git a/doc/improper_hybrid.txt b/doc/improper_hybrid.txt index 6a17b82ee4..620b381717 100644 --- a/doc/improper_hybrid.txt +++ b/doc/improper_hybrid.txt @@ -50,11 +50,13 @@ An improper style of {none} can be specified as the 2nd argument to the improper_coeff command, if you desire to turn off certain improper types. +:line + [Restrictions:] This improper style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. Unlike other improper styles, the hybrid improper style does not store improper coefficient info for individual sub-styles in a "binary diff --git a/doc/improper_style.html b/doc/improper_style.html index 189f6e2e07..db288b7a80 100644 --- a/doc/improper_style.html +++ b/doc/improper_style.html @@ -71,7 +71,7 @@ specified by the associated improper_coeff c

    There are also additional improper styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the improper section of this +the individual styles are given in the improper section of this page.


    @@ -81,11 +81,11 @@ page.

    Improper styles can only be set for atom_style choices that allow impropers to be defined.

    -

    Most improper styles are part of the "molecular" package. They are -only enabled if LAMMPS was built with that package. See the Making -LAMMPS section for more info on packages. The -doc pages for individual improper potentials tell if it is part of a -package. +

    Most improper styles are part of the MOLECULAR package. They are only +enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info on packages. +The doc pages for individual improper potentials tell if it is part of +a package.

    Related commands:

    diff --git a/doc/improper_style.txt b/doc/improper_style.txt index c7e1c08b7c..d636311719 100644 --- a/doc/improper_style.txt +++ b/doc/improper_style.txt @@ -69,7 +69,7 @@ specified by the associated "improper_coeff"_improper_coeff.html command: There are also additional improper styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the improper section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. :line @@ -78,11 +78,11 @@ page"_Section_commands.html#3_5. Improper styles can only be set for atom_style choices that allow impropers to be defined. -Most improper styles are part of the "molecular" package. They are -only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. The -doc pages for individual improper potentials tell if it is part of a -package. +Most improper styles are part of the MOLECULAR package. They are only +enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. +The doc pages for individual improper potentials tell if it is part of +a package. [Related commands:] diff --git a/doc/improper_umbrella.html b/doc/improper_umbrella.html index b3d66ac165..2f10f5da9c 100644 --- a/doc/improper_umbrella.html +++ b/doc/improper_umbrella.html @@ -24,7 +24,7 @@ improper_coeff 1 100.0 180.0

    The umbrella improper style uses the following potential, which is commonly referred to as a classic inversion and used in the -DREIDING force field: +DREIDING force field:

    @@ -51,7 +51,7 @@ commands:

    Restrictions:

    This improper style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the Making +MOLECULAR package (which it is by default). See the Making LAMMPS section for more info on packages.

    Related commands: diff --git a/doc/improper_umbrella.txt b/doc/improper_umbrella.txt index d0d43ab122..31a7729a6d 100644 --- a/doc/improper_umbrella.txt +++ b/doc/improper_umbrella.txt @@ -21,7 +21,7 @@ improper_coeff 1 100.0 180.0 :pre The {umbrella} improper style uses the following potential, which is commonly referred to as a classic inversion and used in the -"DREIDING"_Section_howto.html#4_4 force field: +"DREIDING"_Section_howto.html#howto_4 force field: :c,image(Eqs/improper_umbrella.jpg) @@ -48,8 +48,8 @@ omega0 (degrees) :ul [Restrictions:] This improper style can only be used if LAMMPS was built with the -"molecular" package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. +MOLECULAR package (which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/jump.html b/doc/jump.html index ac8129a3b6..2d175a6a79 100644 --- a/doc/jump.html +++ b/doc/jump.html @@ -43,10 +43,11 @@ e.g.

  • since the SELF option invokes the C-library rewind() call, which may not be supported for stdin on some systems. This can be worked around -by using the -in command-line argument or the --var command-line argument to pass the script -name as a variable to the input script In the latter case, the "fname" -variable could be used in place of SELF. E.g. +by using the -in command-line argument or +the -var command-line argument to pass +the script name as a variable to the input script In the latter case, +the "fname" variable could be used in place of SELF. +E.g.

    lmp_g++ -in in.script 
     
    diff --git a/doc/jump.txt b/doc/jump.txt index 277e17e1bc..83f40af7e9 100644 --- a/doc/jump.txt +++ b/doc/jump.txt @@ -40,10 +40,11 @@ lmp_g++ < in.script :pre since the SELF option invokes the C-library rewind() call, which may not be supported for stdin on some systems. This can be worked around -by using the "-in command-line argument"_Section_start.html#2_6 or the -"-var command-line argument"_Section_start.html#2_6 to pass the script -name as a variable to the input script In the latter case, the "fname" -"variable"_variable.html could be used in place of SELF. E.g. +by using the "-in command-line argument"_Section_start.html#start_6 or +the "-var command-line argument"_Section_start.html#start_6 to pass +the script name as a variable to the input script In the latter case, +the "fname" "variable"_variable.html could be used in place of SELF. +E.g. lmp_g++ -in in.script :pre lmp_g++ -var fname n.script < in.script :pre diff --git a/doc/kspace_style.html b/doc/kspace_style.html index 5f6a03c983..018a24053a 100644 --- a/doc/kspace_style.html +++ b/doc/kspace_style.html @@ -90,7 +90,7 @@ lo-level Makefile. This setting also changes some of the PPPM operations (e.g. mapping charge to mesh and interpolating electric fields to particles) to be performed in single precision. This option can speed-up long-range calulations, particularly in parallel or on -GPUs. The use of the -DFFT_SINGLE flag is discussed in this +GPUs. The use of the -DFFT_SINGLE flag is discussed in this section of the manual.


    @@ -130,9 +130,9 @@ calculation can be performed concurrently on the GPU while other calculations for non-bonded and bonded force calculation are performed on the CPU.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" +

    These accelerated styles are part of the USER-CUDA, GPU, and OPT packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +those packages. See the Making LAMMPS section for more info.

    See this section of the manual for more @@ -145,12 +145,12 @@ or PPPM solver. The only exception is if the slab option is set with kspace_modify, in which case the xy dimensions must be periodic and the z dimension must be non-periodic.

    -

    Kspace styles are part of the "kspace" package. They are only enabled -if LAMMPS was built with that package. See the Making +

    Kspace styles are part of the KSPACE package. They are only enabled +if LAMMPS was built with that package. See the Making LAMMPS section for more info.

    -

    The ewald/n style is part of the "user-ewaldn" package. It is only -enabled if LAMMPS was built with that package. See the Making +

    The ewald/n style is part of the USER-EWALDN package. It is only +enabled if LAMMPS was built with that package. See the Making LAMMPS section for more info.

    When using a long-range pairwise TIP4P potential, you must use kspace diff --git a/doc/kspace_style.txt b/doc/kspace_style.txt index 51825d6ec4..21992d07a3 100644 --- a/doc/kspace_style.txt +++ b/doc/kspace_style.txt @@ -86,7 +86,7 @@ operations (e.g. mapping charge to mesh and interpolating electric fields to particles) to be performed in single precision. This option can speed-up long-range calulations, particularly in parallel or on GPUs. The use of the -DFFT_SINGLE flag is discussed in "this -section"_Section_start.html#2_2_4 of the manual. +section"_Section_start.html#start_2_4 of the manual. :line @@ -125,9 +125,9 @@ calculation can be performed concurrently on the GPU while other calculations for non-bonded and bonded force calculation are performed on the CPU. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" +These accelerated styles are part of the USER-CUDA, GPU, and OPT packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. See "this section"_Section_accelerate.html of the manual for more @@ -140,13 +140,13 @@ or PPPM solver. The only exception is if the slab option is set with "kspace_modify"_kspace_modify.html, in which case the xy dimensions must be periodic and the z dimension must be non-periodic. -Kspace styles are part of the "kspace" package. They are only enabled +Kspace styles are part of the KSPACE package. They are only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. -The {ewald/n} style is part of the "user-ewaldn" package. It is only +The {ewald/n} style is part of the USER-EWALDN package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. When using a long-range pairwise TIP4P potential, you must use kspace style {pppm/tip4p} and vice versa. diff --git a/doc/log.html b/doc/log.html index baf805ee69..2edfe3fcd6 100644 --- a/doc/log.html +++ b/doc/log.html @@ -33,7 +33,8 @@ the same log file.

    The file "log.lammps" is the default log file for a LAMMPS run. The name of the initial log file can also be set by the command-line -switch -log. See this section for details. +switch -log. See this section for +details.

    Restrictions: none

    diff --git a/doc/log.txt b/doc/log.txt index 76a5729c3a..dc56bfcb60 100644 --- a/doc/log.txt +++ b/doc/log.txt @@ -30,7 +30,8 @@ the same log file. The file "log.lammps" is the default log file for a LAMMPS run. The name of the initial log file can also be set by the command-line -switch -log. See "this section"_Section_start.html#2_6 for details. +switch -log. See "this section"_Section_start.html#start_6 for +details. [Restrictions:] none diff --git a/doc/neb.html b/doc/neb.html index 67a4ed5961..25cc68b644 100644 --- a/doc/neb.html +++ b/doc/neb.html @@ -42,13 +42,14 @@ follows the discussion in these 3 papers: (Henkelman1)

    Each replica runs on a partition of one or more processors. Processor partitions are defined at run-time using the -partition command-line -switch; see this section of the manual. Note -that if you have MPI installed, you can run a multi-replica simulation -with more replicas (partitions) than you have physical processors, e.g -you can run a 10-replica simulation on one or two processors. You -will simply not get the performance speed-up you would see with one or -more physical processors per replica. See this -section of the manual for further discussion. +switch; see this section of the manual. +Note that if you have MPI installed, you can run a multi-replica +simulation with more replicas (partitions) than you have physical +processors, e.g you can run a 10-replica simulation on one or two +processors. You will simply not get the performance speed-up you +would see with one or more physical processors per replica. See this +section of the manual for further +discussion.

    NOTE: The current NEB implementation in LAMMPS restricts you to having exactly one processor per replica. @@ -303,9 +304,9 @@ image.

    Restrictions:

    -

    This command can only be used if LAMMPS was built with the "replica" -package. See the Making LAMMPS section for -more info on packages. +

    This command can only be used if LAMMPS was built with the REPLICA +package. See the Making LAMMPS section +for more info on packages.

    Related commands:

    diff --git a/doc/neb.txt b/doc/neb.txt index 1e9cb0e20f..1965f23348 100644 --- a/doc/neb.txt +++ b/doc/neb.txt @@ -39,13 +39,14 @@ follows the discussion in these 3 papers: "(Henkelman1)"_#Henkelman1, Each replica runs on a partition of one or more processors. Processor partitions are defined at run-time using the -partition command-line -switch; see "this section"_Section_start.html#2_6 of the manual. Note -that if you have MPI installed, you can run a multi-replica simulation -with more replicas (partitions) than you have physical processors, e.g -you can run a 10-replica simulation on one or two processors. You -will simply not get the performance speed-up you would see with one or -more physical processors per replica. See "this -section"_Section_howto.html#4_5 of the manual for further discussion. +switch; see "this section"_Section_start.html#start_6 of the manual. +Note that if you have MPI installed, you can run a multi-replica +simulation with more replicas (partitions) than you have physical +processors, e.g you can run a 10-replica simulation on one or two +processors. You will simply not get the performance speed-up you +would see with one or more physical processors per replica. See "this +section"_Section_howto.html#howto_5 of the manual for further +discussion. NOTE: The current NEB implementation in LAMMPS restricts you to having exactly one processor per replica. @@ -299,9 +300,9 @@ image. [Restrictions:] -This command can only be used if LAMMPS was built with the "replica" -package. See the "Making LAMMPS"_Section_start.html#2_3 section for -more info on packages. +This command can only be used if LAMMPS was built with the REPLICA +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. [Related commands:] diff --git a/doc/neighbor.html b/doc/neighbor.html index 5746c00ac3..0a69e18d7e 100644 --- a/doc/neighbor.html +++ b/doc/neighbor.html @@ -68,7 +68,7 @@ stored in the list.

    When a run is finished, counts of the number of neighbors stored in the pairwise list and the number of times neighbor lists were built -are printed to the screen and log file. See this +are printed to the screen and log file. See this section for details.

    Restrictions: none diff --git a/doc/neighbor.txt b/doc/neighbor.txt index 160ec935cb..199bd91430 100644 --- a/doc/neighbor.txt +++ b/doc/neighbor.txt @@ -66,7 +66,7 @@ stored in the list. When a run is finished, counts of the number of neighbors stored in the pairwise list and the number of times neighbor lists were built are printed to the screen and log file. See "this -section"_Section_start.html#2_7 for details. +section"_Section_start.html#start_7 for details. [Restrictions:] none diff --git a/doc/next.html b/doc/next.html index ebd68fb1fb..14647c66fc 100644 --- a/doc/next.html +++ b/doc/next.html @@ -60,7 +60,7 @@ the next command is used with universe- or uloop-style variables, the next value is assigned to whichever processor partition executes the command first. All processors in the partition are assigned the same value. Running LAMMPS on multiple partitions of processors via -the "-partition" command-line switch is described in this +the "-partition" command-line switch is described in this section of the manual. Universe- and uloop-style variables are incremented using the files "tmp.lammps.variable" and "tmp.lammps.variable.lock" which you will diff --git a/doc/next.txt b/doc/next.txt index 49156a414d..fd509e1b0b 100644 --- a/doc/next.txt +++ b/doc/next.txt @@ -58,7 +58,7 @@ the next value is assigned to whichever processor partition executes the command first. All processors in the partition are assigned the same value. Running LAMMPS on multiple partitions of processors via the "-partition" command-line switch is described in "this -section"_Section_start.html#2_6 of the manual. {Universe}- and +section"_Section_start.html#start_6 of the manual. {Universe}- and {uloop}-style variables are incremented using the files "tmp.lammps.variable" and "tmp.lammps.variable.lock" which you will see in your directory during such a LAMMPS run. diff --git a/doc/package.html b/doc/package.html index 2604f6d8e8..50eb1657b3 100644 --- a/doc/package.html +++ b/doc/package.html @@ -128,15 +128,15 @@ than there are physical cores, but LAMMPS does not check for this. read_data or create_box command.

    The cuda style of this command can only be invoked if LAMMPS was built -with the USER-CUDA package. See the Making +with the USER-CUDA package. See the Making LAMMPS section for more info.

    The gpu style of this command can only be invoked if LAMMPS was built -with the GPU package. See the Making LAMMPS -section for more info. +with the GPU package. See the Making +LAMMPS section for more info.

    The omp style of this command can only be invoked if LAMMPS was built -with the USER-OMP package. See the Making +with the USER-OMP package. See the Making LAMMPS section for more info.

    Related commands: none diff --git a/doc/package.txt b/doc/package.txt index 5b2edd8542..cce58abf0a 100644 --- a/doc/package.txt +++ b/doc/package.txt @@ -123,15 +123,15 @@ This command cannot be used after the simulation box is defined by a The cuda style of this command can only be invoked if LAMMPS was built with the USER-CUDA package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. The gpu style of this command can only be invoked if LAMMPS was built -with the GPU package. See the "Making LAMMPS"_Section_start.html#2_3 -section for more info. +with the GPU package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. The omp style of this command can only be invoked if LAMMPS was built with the USER-OMP package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] none diff --git a/doc/pair_adp.html b/doc/pair_adp.html index 7bbfd6349b..34bf494229 100644 --- a/doc/pair_adp.html +++ b/doc/pair_adp.html @@ -11,6 +11,8 @@

    pair_style adp command

    +

    pair_style adp/omp command +

    Syntax:

    pair_style adp 
    @@ -118,6 +120,28 @@ the u(r), the w(r) arrays are listed.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, where types I and J correspond to @@ -140,7 +164,7 @@ an input script that reads a restart file.

    Restrictions:

    -

    This pair style is part of the "manybody" package. It is only enabled +

    This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default).

    Related commands: diff --git a/doc/pair_adp.txt b/doc/pair_adp.txt index f064a89c69..4eef1d675e 100644 --- a/doc/pair_adp.txt +++ b/doc/pair_adp.txt @@ -7,6 +7,7 @@ :line pair_style adp command :h3 +pair_style adp/omp command :h3 [Syntax:] @@ -115,6 +116,28 @@ the u(r), the w(r) arrays are listed. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, where types I and J correspond to @@ -137,7 +160,7 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This pair style is part of the "manybody" package. It is only enabled +This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default). [Related commands:] diff --git a/doc/pair_airebo.html b/doc/pair_airebo.html index d2247c4672..282e1affbf 100644 --- a/doc/pair_airebo.html +++ b/doc/pair_airebo.html @@ -11,8 +11,12 @@

    pair_style airebo command

    +

    pair_style airebo/omp command +

    pair_style rebo command

    +

    pair_style rebo/omp command +

    Syntax:

    pair_style style cutoff LJ_flag TORSION_flag 
    @@ -120,6 +124,28 @@ it was fit, so modifying the file should be done cautiously.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    These pair styles do not support the pair_modify @@ -136,10 +162,10 @@ script that reads a restart file.

    Restrictions:

    -

    These pair styles are part of the "manybody" package. They are only +

    These pair styles are part of the MANYBODY package. They are only enabled if LAMMPS was built with that package (which it is by -default). See the Making LAMMPS section for -more info. +default). See the Making LAMMPS section +for more info.

    These pair potentials require the newton setting to be "on" for pair interactions. diff --git a/doc/pair_airebo.txt b/doc/pair_airebo.txt index 95afe1716c..71c7ea071a 100644 --- a/doc/pair_airebo.txt +++ b/doc/pair_airebo.txt @@ -7,7 +7,9 @@ :line pair_style airebo command :h3 +pair_style airebo/omp command :h3 pair_style rebo command :h3 +pair_style rebo/omp command :h3 [Syntax:] @@ -116,6 +118,28 @@ it was fit, so modifying the file should be done cautiously. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: These pair styles do not support the "pair_modify"_pair_modify.html @@ -132,10 +156,10 @@ These pair styles can only be used via the {pair} keyword of the [Restrictions:] -These pair styles are part of the "manybody" package. They are only +These pair styles are part of the MANYBODY package. They are only enabled if LAMMPS was built with that package (which it is by -default). See the "Making LAMMPS"_Section_start.html#2_3 section for -more info. +default). See the "Making LAMMPS"_Section_start.html#start_3 section +for more info. These pair potentials require the "newton"_newton.html setting to be "on" for pair interactions. diff --git a/doc/pair_born.html b/doc/pair_born.html index fd808271f5..e5d4038a78 100644 --- a/doc/pair_born.html +++ b/doc/pair_born.html @@ -11,10 +11,14 @@

    pair_style born command

    +

    pair_style born/omp command +

    pair_style born/coul/long command

    pair_style born/coul/long/cuda command

    +

    pair_style born/coul/long/omp command +

    Syntax:

    pair_style style args 
    @@ -89,22 +93,22 @@ Coulombic cutoff specified in the pair_style command.
     


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -139,10 +143,10 @@ respa command. They do not support the inner,

    Restrictions:

    -

    The born/coul/long style is part of the "kspace" package. It is -only enabled if LAMMPS was built with that package (which it is by -default). See the Making LAMMPS section for -more info. +

    The born/coul/long style is part of the KSPACE package. It is only +enabled if LAMMPS was built with that package (which it is by +default). See the Making LAMMPS section +for more info.

    Related commands:

    diff --git a/doc/pair_born.txt b/doc/pair_born.txt index 94bcf81a0d..652e7b4dda 100644 --- a/doc/pair_born.txt +++ b/doc/pair_born.txt @@ -8,8 +8,10 @@ :line pair_style born command :h3 +pair_style born/omp command :h3 pair_style born/coul/long command :h3 pair_style born/coul/long/cuda command :h3 +pair_style born/coul/long/omp command :h3 [Syntax:] @@ -84,22 +86,22 @@ Coulombic cutoff specified in the pair_style command. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -134,10 +136,10 @@ respa"_run_style.html command. They do not support the {inner}, [Restrictions:] -The {born/coul/long} style is part of the "kspace" package. It is -only enabled if LAMMPS was built with that package (which it is by -default). See the "Making LAMMPS"_Section_start.html#2_3 section for -more info. +The {born/coul/long} style is part of the KSPACE package. It is only +enabled if LAMMPS was built with that package (which it is by +default). See the "Making LAMMPS"_Section_start.html#start_3 section +for more info. [Related commands:] diff --git a/doc/pair_buck.html b/doc/pair_buck.html index c38c22b979..a7b8c76aac 100644 --- a/doc/pair_buck.html +++ b/doc/pair_buck.html @@ -13,14 +13,20 @@

    pair_style buck/cuda command

    +

    pair_style buck/omp command +

    pair_style buck/coul/cut command

    pair_style buck/coul/cut/cuda command

    +

    pair_style buck/coul/cut/omp command +

    pair_style buck/coul/long command

    pair_style buck/coul/long/cuda command

    +

    pair_style buck/coul/long/omp command +

    Syntax:

    pair_style style args 
    @@ -110,22 +116,22 @@ pair_style command.
     


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -158,10 +164,10 @@ respa command. They do not support the inner,

    Restrictions:

    -

    The buck/coul/long style is part of the "kspace" package. It is -only enabled if LAMMPS was built with that package (which it is by -default). See the Making LAMMPS section for -more info. +

    The buck/coul/long style is part of the KSPACE package. It is only +enabled if LAMMPS was built with that package (which it is by +default). See the Making LAMMPS section +for more info.

    Related commands:

    diff --git a/doc/pair_buck.txt b/doc/pair_buck.txt index a972cfdf50..1f875f9ac4 100644 --- a/doc/pair_buck.txt +++ b/doc/pair_buck.txt @@ -8,10 +8,13 @@ pair_style buck command :h3 pair_style buck/cuda command :h3 +pair_style buck/omp command :h3 pair_style buck/coul/cut command :h3 pair_style buck/coul/cut/cuda command :h3 +pair_style buck/coul/cut/omp command :h3 pair_style buck/coul/long command :h3 pair_style buck/coul/long/cuda command :h3 +pair_style buck/coul/long/omp command :h3 [Syntax:] @@ -101,22 +104,22 @@ pair_style command. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -149,10 +152,10 @@ respa"_run_style.html command. They do not support the {inner}, [Restrictions:] -The {buck/coul/long} style is part of the "kspace" package. It is -only enabled if LAMMPS was built with that package (which it is by -default). See the "Making LAMMPS"_Section_start.html#2_3 section for -more info. +The {buck/coul/long} style is part of the KSPACE package. It is only +enabled if LAMMPS was built with that package (which it is by +default). See the "Making LAMMPS"_Section_start.html#start_3 section +for more info. [Related commands:] diff --git a/doc/pair_buck_coul.html b/doc/pair_buck_coul.html index cc685e6604..149fe36e3d 100644 --- a/doc/pair_buck_coul.html +++ b/doc/pair_buck_coul.html @@ -11,6 +11,8 @@

    pair_style buck/coul command

    +

    pair_style buck/coul/omp command +

    Syntax:

    pair_style buck/coul flag_buck flag_coul cutoff (cutoff2) 
    @@ -103,6 +105,28 @@ global Coulombic cutoff is allowed.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    This pair styles does not support mixing. Thus, coefficients for all @@ -134,8 +158,8 @@ details.

    Restrictions:

    -

    This style is part of the "user-ewaldn" package. It is only enabled -if LAMMPS was built with that package. See the Making +

    This style is part of the USER-EWALDN package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/pair_buck_coul.txt b/doc/pair_buck_coul.txt index 1a6d42d86f..4db2117094 100644 --- a/doc/pair_buck_coul.txt +++ b/doc/pair_buck_coul.txt @@ -7,6 +7,7 @@ :line pair_style buck/coul command :h3 +pair_style buck/coul/omp command :h3 [Syntax:] @@ -95,6 +96,28 @@ global Coulombic cutoff is allowed. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: This pair styles does not support mixing. Thus, coefficients for all @@ -126,9 +149,9 @@ details. [Restrictions:] -This style is part of the "user-ewaldn" package. It is only enabled -if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This style is part of the USER-EWALDN package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/pair_charmm.html b/doc/pair_charmm.html index 78a407cec8..50dcbe5e7d 100644 --- a/doc/pair_charmm.html +++ b/doc/pair_charmm.html @@ -13,10 +13,14 @@

    pair_style lj/charmm/coul/charmm/cuda command

    +

    pair_style lj/charmm/coul/charmm/omp command +

    pair_style lj/charmm/coul/charmm/implicit command

    pair_style lj/charmm/coul/charmm/implicit/cuda command

    +

    pair_style lj/charmm/coul/charmm/implicit/omp command +

    pair_style lj/charmm/coul/long command

    pair_style lj/charmm/coul/long/cuda command @@ -25,6 +29,8 @@

    pair_style lj/charmm/coul/long/opt command

    +

    pair_style lj/charmm/coul/long/omp command +

    Syntax:

    pair_style style args 
    @@ -117,22 +123,22 @@ the pair_style command.
     


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -176,11 +182,11 @@ support the pair keyword of run_style respa. See the

    Restrictions:

    The lj/charmm/coul/charmm and lj/charmm/coul/charmm/implicit -styles are part of the "molecule" package. The lj/charmm/coul/long -style is part of the "kspace" package. They are only enabled if -LAMMPS was built with those packages. See the Making -LAMMPS section for more info. Note that the -molecule and kspace packages are installed by default. +styles are part of the MOLECULE package. The lj/charmm/coul/long +style is part of the KSPACE package. They are only enabled if LAMMPS +was built with those packages. See the Making +LAMMPS section for more info. Note that +the MOLECULE and KSPACE packages are installed by default.

    Related commands:

    diff --git a/doc/pair_charmm.txt b/doc/pair_charmm.txt index 335bbba75d..08fe292579 100644 --- a/doc/pair_charmm.txt +++ b/doc/pair_charmm.txt @@ -8,12 +8,15 @@ pair_style lj/charmm/coul/charmm command :h3 pair_style lj/charmm/coul/charmm/cuda command :h3 +pair_style lj/charmm/coul/charmm/omp command :h3 pair_style lj/charmm/coul/charmm/implicit command :h3 pair_style lj/charmm/coul/charmm/implicit/cuda command :h3 +pair_style lj/charmm/coul/charmm/implicit/omp command :h3 pair_style lj/charmm/coul/long command :h3 pair_style lj/charmm/coul/long/cuda command :h3 pair_style lj/charmm/coul/long/gpu command :h3 pair_style lj/charmm/coul/long/opt command :h3 +pair_style lj/charmm/coul/long/omp command :h3 [Syntax:] @@ -106,22 +109,22 @@ the pair_style command. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -165,11 +168,11 @@ support the {pair} keyword of run_style respa. See the [Restrictions:] The {lj/charmm/coul/charmm} and {lj/charmm/coul/charmm/implicit} -styles are part of the "molecule" package. The {lj/charmm/coul/long} -style is part of the "kspace" package. They are only enabled if -LAMMPS was built with those packages. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. Note that the -molecule and kspace packages are installed by default. +styles are part of the MOLECULE package. The {lj/charmm/coul/long} +style is part of the KSPACE package. They are only enabled if LAMMPS +was built with those packages. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. Note that +the MOLECULE and KSPACE packages are installed by default. [Related commands:] diff --git a/doc/pair_class2.html b/doc/pair_class2.html index 0290f019c2..b4fc597158 100644 --- a/doc/pair_class2.html +++ b/doc/pair_class2.html @@ -15,16 +15,22 @@

    pair_style lj/class2/gpu command

    +

    pair_style lj/class2/omp command +

    pair_style lj/class2/coul/cut command

    pair_style lj/class2/coul/cut/cuda command

    +

    pair_style lj/class2/coul/cut/omp command +

    pair_style lj/class2/coul/long command

    pair_style lj/class2/coul/long/cuda command

    pair_style lj/class2/coul/long/gpu command

    +

    pair_style lj/class2/coul/long/omp command +

    Syntax:

    pair_style style args 
    @@ -108,26 +114,28 @@ cutoff distance.
     


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively.

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, the epsilon and sigma coefficients @@ -160,8 +168,8 @@ support the inner, middle, outer keywords.

    Restrictions:

    -

    These styles are part of the "class2" package. They are only enabled -if LAMMPS was built with that package. See the Making +

    These styles are part of the CLASS2 package. They are only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/pair_class2.txt b/doc/pair_class2.txt index a51a721d18..3013727493 100644 --- a/doc/pair_class2.txt +++ b/doc/pair_class2.txt @@ -9,11 +9,14 @@ pair_style lj/class2 command :h3 pair_style lj/class2/cuda command :h3 pair_style lj/class2/gpu command :h3 +pair_style lj/class2/omp command :h3 pair_style lj/class2/coul/cut command :h3 pair_style lj/class2/coul/cut/cuda command :h3 +pair_style lj/class2/coul/cut/omp command :h3 pair_style lj/class2/coul/long command :h3 pair_style lj/class2/coul/long/cuda command :h3 pair_style lj/class2/coul/long/gpu command :h3 +pair_style lj/class2/coul/long/omp command :h3 [Syntax:] @@ -97,26 +100,28 @@ cutoff distance. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, the epsilon and sigma coefficients @@ -149,9 +154,9 @@ support the {inner}, {middle}, {outer} keywords. [Restrictions:] -These styles are part of the "class2" package. They are only enabled -if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +These styles are part of the CLASS2 package. They are only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/pair_cmm.html b/doc/pair_cmm.html index 0c8884a3ce..766904a07e 100644 --- a/doc/pair_cmm.html +++ b/doc/pair_cmm.html @@ -132,15 +132,15 @@ discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" +

    These accelerated styles are part of the USER-CUDA, GPU, and OPT packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -178,10 +178,10 @@ See the run_style command for details.

    Restrictions:

    -

    All of the cg/cmm pair styles are part of the "user-cg-cmm" package. -The cg/cmm/coul/long style also requires the "kspace" package to be +

    All of the cg/cmm pair styles are part of the USER-CG-CMM package. +The cg/cmm/coul/long style also requires the KSPACE package to be built (which is enabled by default). They are only enabled if LAMMPS -was built with that package. See the Making +was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/pair_cmm.txt b/doc/pair_cmm.txt index d70be6f6e6..b330de4915 100644 --- a/doc/pair_cmm.txt +++ b/doc/pair_cmm.txt @@ -120,15 +120,15 @@ discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" +These accelerated styles are part of the USER-CUDA, GPU, and OPT packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -166,11 +166,11 @@ See the "run_style"_run_style.html command for details. [Restrictions:] -All of the cg/cmm pair styles are part of the "user-cg-cmm" package. -The {cg/cmm/coul/long} style also requires the "kspace" package to be +All of the cg/cmm pair styles are part of the USER-CG-CMM package. +The {cg/cmm/coul/long} style also requires the KSPACE package to be built (which is enabled by default). They are only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/pair_coeff.html b/doc/pair_coeff.html index 7debbbd72e..ffec9ec605 100644 --- a/doc/pair_coeff.html +++ b/doc/pair_coeff.html @@ -91,6 +91,8 @@ the pair_style command, and coefficients specified by the associated

  • pair_style airebo - AIREBO potential of Stuart
  • pair_style born - Born-Mayer-Huggins potential
  • pair_style born/coul/long - Born-Mayer-Huggins with long-range Coulomb +
  • pair_style brownian - Brownian potential for Fast Lubrication Dynamics +
  • pair_style brownian/poly - Brownian potential for Fast Lubrication Dynamics with polydispersity
  • pair_style buck - Buckingham potential
  • pair_style buck/coul/cut - Buckingham with cutoff Coulomb
  • pair_style buck/coul/long - Buckingham with long-range Coulomb @@ -113,6 +115,7 @@ the pair_style command, and coefficients specified by the associated
  • pair_style gran/hooke/history - granular potential without history effects
  • pair_style hbond/dreiding/lj - DREIDING hydrogen bonding LJ potential
  • pair_style hbond/dreiding/morse - DREIDING hydrogen bonding Morse potential +
  • pair_style line/lj - LJ potential between line segments
  • pair_style lj/charmm/coul/charmm - CHARMM potential with cutoff Coulomb
  • pair_style lj/charmm/coul/charmm/implicit - CHARMM for implicit solvent
  • pair_style lj/charmm/coul/long - CHARMM with long-range Coulomb @@ -130,6 +133,9 @@ the pair_style command, and coefficients specified by the associated
  • pair_style lj/smooth - smoothed Lennard-Jones potential
  • pair_style lj96/cut - Lennard-Jones 9/6 potential
  • pair_style lubricate - hydrodynamic lubrication forces +
  • pair_style lubricate/poly - hydrodynamic lubrication forces with polydispersity +
  • pair_style lubricateU - hydrodynamic lubrication forces for Fast Lubrication Dynamics +
  • pair_style lubricateU/poly - hydrodynamic lubrication forces for Fast Lubrication Dynamics with polydispersity
  • pair_style meam - modified embedded atom method (MEAM)
  • pair_style morse - Morse potential
  • pair_style peri/lps - peridynamic LPS potential @@ -142,18 +148,19 @@ the pair_style command, and coefficients specified by the associated
  • pair_style table - tabulated pair potential
  • pair_style tersoff - Tersoff 3-body potential
  • pair_style tersoff/zbl - Tersoff/ZBL 3-body potential +
  • pair_style tri/lj - LJ potential between triangles
  • pair_style yukawa - Yukawa potential
  • pair_style yukawa/colloid - screened Yukawa potential for finite-size particles

    There are also additional pair styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the pair section of this +the individual styles are given in the pair section of this page.

    There are also additional accelerated pair styles included in the LAMMPS distribution for faster performance on CPUs and GPUs. The list of these with links to the individual styles are given in the pair -section of this page. +section of this page.


    diff --git a/doc/pair_coeff.txt b/doc/pair_coeff.txt index 887ef456d5..c9b9881946 100644 --- a/doc/pair_coeff.txt +++ b/doc/pair_coeff.txt @@ -88,6 +88,8 @@ the pair_style command, and coefficients specified by the associated "pair_style airebo"_pair_airebo.html - AIREBO potential of Stuart "pair_style born"_pair_born.html - Born-Mayer-Huggins potential "pair_style born/coul/long"_pair_born.html - Born-Mayer-Huggins with long-range Coulomb +"pair_style brownian"_pair_brownian.html - Brownian potential for Fast Lubrication Dynamics +"pair_style brownian/poly"_pair_brownian.html - Brownian potential for Fast Lubrication Dynamics with polydispersity "pair_style buck"_pair_buck.html - Buckingham potential "pair_style buck/coul/cut"_pair_buck.html - Buckingham with cutoff Coulomb "pair_style buck/coul/long"_pair_buck.html - Buckingham with long-range Coulomb @@ -110,6 +112,7 @@ the pair_style command, and coefficients specified by the associated "pair_style gran/hooke/history"_pair_gran.html - granular potential without history effects "pair_style hbond/dreiding/lj"_pair_hbond_dreiding.html - DREIDING hydrogen bonding LJ potential "pair_style hbond/dreiding/morse"_pair_hbond_dreiding.html - DREIDING hydrogen bonding Morse potential +"pair_style line/lj"_pair_line_lj.html - LJ potential between line segments "pair_style lj/charmm/coul/charmm"_pair_charmm.html - CHARMM potential with cutoff Coulomb "pair_style lj/charmm/coul/charmm/implicit"_pair_charmm.html - CHARMM for implicit solvent "pair_style lj/charmm/coul/long"_pair_charmm.html - CHARMM with long-range Coulomb @@ -127,6 +130,9 @@ the pair_style command, and coefficients specified by the associated "pair_style lj/smooth"_pair_lj_smooth.html - smoothed Lennard-Jones potential "pair_style lj96/cut"_pair_lj96.html - Lennard-Jones 9/6 potential "pair_style lubricate"_pair_lubricate.html - hydrodynamic lubrication forces +"pair_style lubricate/poly"_pair_lubricate.html - hydrodynamic lubrication forces with polydispersity +"pair_style lubricateU"_pair_lubricateU.html - hydrodynamic lubrication forces for Fast Lubrication Dynamics +"pair_style lubricateU/poly"_pair_lubricateU.html - hydrodynamic lubrication forces for Fast Lubrication Dynamics with polydispersity "pair_style meam"_pair_meam.html - modified embedded atom method (MEAM) "pair_style morse"_pair_morse.html - Morse potential "pair_style peri/lps"_pair_peri.html - peridynamic LPS potential @@ -139,18 +145,19 @@ the pair_style command, and coefficients specified by the associated "pair_style table"_pair_table.html - tabulated pair potential "pair_style tersoff"_pair_tersoff.html - Tersoff 3-body potential "pair_style tersoff/zbl"_pair_tersoff_zbl.html - Tersoff/ZBL 3-body potential +"pair_style tri/lj"_pair_tri_lj.html - LJ potential between triangles "pair_style yukawa"_pair_yukawa.html - Yukawa potential "pair_style yukawa/colloid"_pair_yukawa_colloid.html - screened Yukawa potential for finite-size particles :ul There are also additional pair styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the pair section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. There are also additional accelerated pair styles included in the LAMMPS distribution for faster performance on CPUs and GPUs. The list of these with links to the individual styles are given in the pair -section of "this page"_Section_commands.html#3_5. +section of "this page"_Section_commands.html#cmd_5. :line diff --git a/doc/pair_colloid.html b/doc/pair_colloid.html index 19aa2636a8..a1754fd5df 100644 --- a/doc/pair_colloid.html +++ b/doc/pair_colloid.html @@ -11,6 +11,8 @@

    pair_style colloid command

    +

    pair_style colloid/omp command +

    Syntax:

    pair_style colloid cutoff 
    @@ -125,6 +127,28 @@ commands for efficiency: neighbor multi and
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, the A, sigma, d1, and d2 @@ -155,8 +179,8 @@ to be specified in an input script that reads a restart file.

    Restrictions:

    -

    This style is part of the "colloid" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This style is part of the COLLOID package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Normally, this pair style should be used with finite-size particles diff --git a/doc/pair_colloid.txt b/doc/pair_colloid.txt index f71df35098..8a442ea078 100644 --- a/doc/pair_colloid.txt +++ b/doc/pair_colloid.txt @@ -7,6 +7,7 @@ :line pair_style colloid command :h3 +pair_style colloid/omp command :h3 [Syntax:] @@ -122,6 +123,28 @@ commands for efficiency: "neighbor multi"_neighbor.html and :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, the A, sigma, d1, and d2 @@ -152,9 +175,9 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This style is part of the "colloid" package. It is only enabled if +This style is part of the COLLOID package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. Normally, this pair style should be used with finite-size particles which have a diameter, e.g. see the "atom_style diff --git a/doc/pair_comb.html b/doc/pair_comb.html index d131c23f04..71e245c9e6 100644 --- a/doc/pair_comb.html +++ b/doc/pair_comb.html @@ -11,6 +11,8 @@

    pair_style comb command

    +

    pair_style comb/omp command +

    Syntax:

    pair_style comb 
    @@ -167,6 +169,28 @@ complex systems.  Note that alloys and complex systems require all
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, where types I and J correspond to @@ -190,9 +214,9 @@ restart file.

    Restrictions:

    -

    This pair style is part of the "manybody" package. It is only enabled +

    This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default). See -the Making LAMMPS section for more info. +the Making LAMMPS section for more info.

    This pair style requires the newton setting to be "on" for pair interactions. diff --git a/doc/pair_comb.txt b/doc/pair_comb.txt index 20c4f473c7..ed625ba629 100644 --- a/doc/pair_comb.txt +++ b/doc/pair_comb.txt @@ -7,6 +7,7 @@ :line pair_style comb command :h3 +pair_style comb/omp command :h3 [Syntax:] @@ -164,6 +165,28 @@ complex systems. Note that alloys and complex systems require all :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, where types I and J correspond to @@ -187,9 +210,9 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This pair style is part of the "manybody" package. It is only enabled +This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default). See -the "Making LAMMPS"_Section_start.html#2_3 section for more info. +the "Making LAMMPS"_Section_start.html#start_3 section for more info. This pair style requires the "newton"_newton.html setting to be "on" for pair interactions. diff --git a/doc/pair_coul.html b/doc/pair_coul.html index 3cdc20760b..6b6af23458 100644 --- a/doc/pair_coul.html +++ b/doc/pair_coul.html @@ -11,16 +11,24 @@

    pair_style coul/cut command

    +

    pair_style coul/cut/omp command +

    pair_style coul/debye command

    +

    pair_style coul/debye/omp command +

    pair_style coul/long command

    +

    pair_style coul/long/gpu command +

    +

    pair_style coul/long/omp command +

    Syntax:

    -
    pair_style coul/cut cutoff
    +

    pair_style coul/cut cutoff pair_style coul/debye kappa cutoff -pair_style coul/long cutoff -

    +pair_style coul/long cutoff +

    • cutoff = global cutoff for Coulombic interactions
    • kappa = Debye length (inverse distance units)
    @@ -89,6 +97,28 @@ Coulombic cutoff specified in the pair_style command.


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, the cutoff distance for the @@ -118,10 +148,10 @@ to be specified in an input script that reads a restart file.

    Restrictions:

    -

    The coul/long style is part of the "kspace" package. It is only +

    The coul/long style is part of the KSPACE package. It is only enabled if LAMMPS was built with that package (which it is by -default). See the Making LAMMPS section for -more info. +default). See the Making LAMMPS section +for more info.

    Related commands:

    diff --git a/doc/pair_coul.txt b/doc/pair_coul.txt index a51a3e15cd..44168cd1c5 100644 --- a/doc/pair_coul.txt +++ b/doc/pair_coul.txt @@ -7,8 +7,11 @@ :line pair_style coul/cut command :h3 +pair_style coul/cut/omp command :h3 pair_style coul/debye command :h3 +pair_style coul/debye/omp command :h3 pair_style coul/long command :h3 +pair_style coul/long/omp command :h3 pair_style coul/long/gpu command :h3 [Syntax:] @@ -86,22 +89,22 @@ Coulombic cutoff specified in the pair_style command. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -137,10 +140,10 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -The {coul/long} style is part of the "kspace" package. It is only +The {coul/long} style is part of the KSPACE package. It is only enabled if LAMMPS was built with that package (which it is by -default). See the "Making LAMMPS"_Section_start.html#2_3 section for -more info. +default). See the "Making LAMMPS"_Section_start.html#start_3 section +for more info. [Related commands:] diff --git a/doc/pair_dipole.html b/doc/pair_dipole.html index 09538cb4c3..0c259887b2 100644 --- a/doc/pair_dipole.html +++ b/doc/pair_dipole.html @@ -11,8 +11,12 @@

    pair_style dipole/cut command

    +

    pair_style dipole/cut/omp command +

    pair_style dipole/sf command

    +

    pair_style dipole/sf/omp command +

    Syntax:

    pair_style dipole/cut cutoff (cutoff2) 
    @@ -120,6 +124,28 @@ type pair.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, the epsilon and sigma coefficients @@ -153,12 +179,12 @@ to be specified in an input script that reads a restart file.

    Restrictions:

    -

    The dipole/cut style is part of the "dipole" package. It is only -enabled if LAMMPS was built with that package. See the Making +

    The dipole/cut style is part of the DIPOLE package. It is only +enabled if LAMMPS was built with that package. See the Making LAMMPS section for more info.

    -

    The dipole/sf style is part of the "user-misc" package. It is only -enabled if LAMMPS was built with that package. See the Making +

    The dipole/sf style is part of the USER-MISC package. It is only +enabled if LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/pair_dipole.txt b/doc/pair_dipole.txt index 26d3c0d0db..d71ffef2e0 100755 --- a/doc/pair_dipole.txt +++ b/doc/pair_dipole.txt @@ -7,7 +7,9 @@ :line pair_style dipole/cut command :h3 +pair_style dipole/cut/omp command :h3 pair_style dipole/sf command :h3 +pair_style dipole/sf/omp command :h3 [Syntax:] @@ -114,6 +116,28 @@ type pair. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, the epsilon and sigma coefficients @@ -147,13 +171,13 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -The {dipole/cut} style is part of the "dipole" package. It is only +The {dipole/cut} style is part of the DIPOLE package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. -The {dipole/sf} style is part of the "user-misc" package. It is only +The {dipole/sf} style is part of the USER-MISC package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/pair_dpd.html b/doc/pair_dpd.html index 065b8c73d3..40d1dae1f0 100644 --- a/doc/pair_dpd.html +++ b/doc/pair_dpd.html @@ -11,8 +11,12 @@

    pair_style dpd command

    +

    pair_style dpd/omp command +

    pair_style dpd/tstat command

    +

    pair_style dpd/tstat/omp command +

    Syntax:

    pair_style dpd T cutoff seed
    @@ -94,6 +98,28 @@ except that A is not included.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    These pair styles do not support mixing. Thus, coefficients for all diff --git a/doc/pair_dpd.txt b/doc/pair_dpd.txt index 4b2d1081d6..2b60a59375 100644 --- a/doc/pair_dpd.txt +++ b/doc/pair_dpd.txt @@ -7,7 +7,9 @@ :line pair_style dpd command :h3 +pair_style dpd/omp command :h3 pair_style dpd/tstat command :h3 +pair_style dpd/tstat/omp command :h3 [Syntax:] @@ -90,6 +92,28 @@ except that A is not included. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: These pair styles do not support mixing. Thus, coefficients for all diff --git a/doc/pair_dsmc.html b/doc/pair_dsmc.html index 573d85f49b..11d1481d5d 100644 --- a/doc/pair_dsmc.html +++ b/doc/pair_dsmc.html @@ -122,8 +122,8 @@ continued past the restart time.

    Restrictions:

    -

    This style is part of the "dsmc" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This style is part of the MC package. It is only enabled if LAMMPS +was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/pair_dsmc.txt b/doc/pair_dsmc.txt index 00988a0264..0f430d394a 100644 --- a/doc/pair_dsmc.txt +++ b/doc/pair_dsmc.txt @@ -119,9 +119,9 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This style is part of the "dsmc" package. It is only enabled if -LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This style is part of the MC package. It is only enabled if LAMMPS +was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/pair_eam.html b/doc/pair_eam.html index fa4859c114..4f695c52e0 100644 --- a/doc/pair_eam.html +++ b/doc/pair_eam.html @@ -13,20 +13,28 @@

    pair_style eam/cuda command

    +

    pair_style eam/omp command +

    pair_style eam/opt command

    pair_style eam/alloy command

    pair_style eam/alloy/cuda command

    +

    pair_style eam/alloy/omp command +

    pair_style eam/alloy/opt command

    pair_style eam/cd command

    +

    pair_style eam/cd/omp command +

    pair_style eam/fs command

    pair_style eam/fs/cuda command

    +

    pair_style eam/fs/omp command +

    pair_style eam/fs/opt command

    Syntax: @@ -365,22 +373,22 @@ are listed.


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -410,15 +418,15 @@ an input script that reads a restart file.

    Restrictions:

    -

    All of these styles except the eam/cd style are part of the -"manybody" package. They are only enabled if LAMMPS was built with -that package (which it is by default). See the Making +

    All of these styles except the eam/cd style are part of the MANYBODY +package. They are only enabled if LAMMPS was built with that package +(which it is by default). See the Making LAMMPS section for more info.

    -

    The eam/cd style is part of the "user-misc" package and also -requires the "manybody" package. It is only enabled if LAMMPS was -built with those packages. See the Making -LAMMPS section for more info. +

    The eam/cd style is part of the USER-MISC package and also requires +the MANYBODY package. It is only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info.

    Related commands:

    diff --git a/doc/pair_eam.txt b/doc/pair_eam.txt index 6f47c504fc..d0b06bf07b 100644 --- a/doc/pair_eam.txt +++ b/doc/pair_eam.txt @@ -8,13 +8,17 @@ pair_style eam command :h3 pair_style eam/cuda command :h3 +pair_style eam/omp command :h3 pair_style eam/opt command :h3 pair_style eam/alloy command :h3 pair_style eam/alloy/cuda command :h3 +pair_style eam/alloy/omp command :h3 pair_style eam/alloy/opt command :h3 pair_style eam/cd command :h3 +pair_style eam/cd/omp command :h3 pair_style eam/fs command :h3 pair_style eam/fs/cuda command :h3 +pair_style eam/fs/omp command :h3 pair_style eam/fs/opt command :h3 [Syntax:] @@ -353,22 +357,23 @@ are listed. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -398,15 +403,15 @@ The eam pair styles can only be used via the {pair} keyword of the [Restrictions:] -All of these styles except the {eam/cd} style are part of the -"manybody" package. They are only enabled if LAMMPS was built with -that package (which it is by default). See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +All of these styles except the {eam/cd} style are part of the MANYBODY +package. They are only enabled if LAMMPS was built with that package +(which it is by default). See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. -The {eam/cd} style is part of the "user-misc" package and also -requires the "manybody" package. It is only enabled if LAMMPS was -built with those packages. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +The {eam/cd} style is part of the USER-MISC package and also requires +the MANYBODY package. It is only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. [Related commands:] diff --git a/doc/pair_edip.html b/doc/pair_edip.html new file mode 100644 index 0000000000..1c09c8ed49 --- /dev/null +++ b/doc/pair_edip.html @@ -0,0 +1,170 @@ + +
    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    pair_style edip command +

    +

    Syntax: +

    +
    pair_style edip 
    +
    +
    pair_style edip/omp 
    +
    +

    Examples: +

    +

    pair_style edip +pair_coeff * * Si.edip Si +

    +

    Description: +

    +

    The edip style computes a 3-body EDIP potential which is +popular for modeling silicon materials where it can have advantages +over other models such as the Stillinger-Weber or +Tersoff potentials. In EDIP, the energy E of a +system of atoms is +

    +
    +
    +

    where phi2 is a two-body term and phi3 is a three-body term. The +summations in the formula are over all neighbors J and K of atom I +within a cutoff distance = a. +Both terms depend on the local environment of atom I through its +effective coordination number defined by Z, which is unity for a +cutoff distance < c and gently goes to 0 at distance = a. +

    +

    Only a single pair_coeff command is used with the edip style which +specifies a EDIP potential file with parameters for all +needed elements. These are mapped to LAMMPS atom types by specifying +N additional arguments after the filename in the pair_coeff command, +where N is the number of LAMMPS atom types: +

    +
    • filename +
    • N element names = mapping of EDIP elements to atom types +
    +

    As an example, imagine a file Si.edip has EDIP values for Si. +

    +

    EDIP files in the potentials directory of the LAMMPS +distribution have a ".edip" suffix. Lines that are not blank or +comments (starting with #) define parameters for a triplet of +elements. The parameters in a single entry correspond to the two-body +and three-body coefficients in the formula above: +

    +
    • element 1 (the center atom in a 3-body interaction) +
    • element 2 +
    • element 3 +
    • A (energy units) +
    • B (distance units) +
    • cutoffA (distance units) +
    • cutoffC (distance units) +
    • alpha +
    • beta +
    • eta +
    • gamma (distance units) +
    • lambda (energy units) +
    • mu +
    • tho +
    • sigma (distance units) +
    • Q0 +
    • u1 +
    • u2 +
    • u3 +
    • u4 +
    +

    The A, B, beta, sigma parameters are used only for two-body interactions. +The eta, gamma, lambda, mu, Q0 and all u1 to u4 parameters are used only +for three-body interactions. The alpha and cutoffC parameters are used +for the coordination environment function only. +

    +

    The EDIP potential file must contain entries for all the +elements listed in the pair_coeff command. It can also contain +entries for additional elements not being used in a particular +simulation; LAMMPS ignores those entries. +

    +

    For a single-element simulation, only a single entry is required +(e.g. SiSiSi). For a two-element simulation, the file must contain 8 +entries (for SiSiSi, SiSiC, SiCSi, SiCC, CSiSi, CSiC, CCSi, CCC), that +specify EDIP parameters for all permutations of the two elements +interacting in three-body configurations. Thus for 3 elements, 27 +entries would be required, etc. +

    +

    At the moment, only a single element parametrization is +implemented. However, the author is not aware of other +multi-element EDIP parametrizations. If you know any and +you are interest in that, please contact the author of +the EDIP package. +

    +
    + +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    + +

    Mixing, shift, table, tail correction, restart, rRESPA info: +

    +

    This pair style does not support the pair_modify +shift, table, and tail options. +

    +

    This pair style does not write its information to binary restart +files, since it is stored in potential files. Thus, you +need to re-specify the pair_style and pair_coeff commands in an input +script that reads a restart file. +

    +

    This pair style can only be used via the pair keyword of the +run_style respa command. It does not support the +inner, middle, outer keywords. +

    +
    + +

    Restrictions: +

    +

    This angle style can only be used if LAMMPS was built with the +USER-MISC package. See the Making LAMMPS +section for more info on packages. +

    +

    This pair style requires the newton setting to be "on" +for pair interactions. +

    +

    The EDIP potential files provided with LAMMPS (see the potentials directory) +are parameterized for metal units. +You can use the SW potential with any LAMMPS units, but you would need +to create your own EDIP potential file with coefficients listed in the +appropriate units if your simulation doesn't use "metal" units. +

    +

    Related commands: +

    +

    pair_coeff +

    +

    Default: none +

    +
    + + + +

    (EDIP) J. F. Justo et al., Phys. Rev. B 58, 2539 (1998). +

    + diff --git a/doc/pair_edip.txt b/doc/pair_edip.txt new file mode 100644 index 0000000000..3494ce68f8 --- /dev/null +++ b/doc/pair_edip.txt @@ -0,0 +1,163 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +pair_style edip command :h3 + +[Syntax:] + +pair_style edip :pre +pair_style edip/omp :pre + +[Examples:] + +pair_style edip +pair_coeff * * Si.edip Si + +[Description:] + +The {edip} style computes a 3-body "EDIP"_#EDIP potential which is +popular for modeling silicon materials where it can have advantages +over other models such as the "Stillinger-Weber"_pair_sw.html or +"Tersoff"_pair_tersoff.html potentials. In EDIP, the energy E of a +system of atoms is + +:c,image(Eqs/pair_edip.jpg) + +where phi2 is a two-body term and phi3 is a three-body term. The +summations in the formula are over all neighbors J and K of atom I +within a cutoff distance = a. +Both terms depend on the local environment of atom I through its +effective coordination number defined by Z, which is unity for a +cutoff distance < c and gently goes to 0 at distance = a. + +Only a single pair_coeff command is used with the {edip} style which +specifies a EDIP potential file with parameters for all +needed elements. These are mapped to LAMMPS atom types by specifying +N additional arguments after the filename in the pair_coeff command, +where N is the number of LAMMPS atom types: + +filename +N element names = mapping of EDIP elements to atom types :ul + +As an example, imagine a file Si.edip has EDIP values for Si. + +EDIP files in the {potentials} directory of the LAMMPS +distribution have a ".edip" suffix. Lines that are not blank or +comments (starting with #) define parameters for a triplet of +elements. The parameters in a single entry correspond to the two-body +and three-body coefficients in the formula above: + +element 1 (the center atom in a 3-body interaction) +element 2 +element 3 +A (energy units) +B (distance units) +cutoffA (distance units) +cutoffC (distance units) +alpha +beta +eta +gamma (distance units) +lambda (energy units) +mu +tho +sigma (distance units) +Q0 +u1 +u2 +u3 +u4 :ul + +The A, B, beta, sigma parameters are used only for two-body interactions. +The eta, gamma, lambda, mu, Q0 and all u1 to u4 parameters are used only +for three-body interactions. The alpha and cutoffC parameters are used +for the coordination environment function only. + +The EDIP potential file must contain entries for all the +elements listed in the pair_coeff command. It can also contain +entries for additional elements not being used in a particular +simulation; LAMMPS ignores those entries. + +For a single-element simulation, only a single entry is required +(e.g. SiSiSi). For a two-element simulation, the file must contain 8 +entries (for SiSiSi, SiSiC, SiCSi, SiCC, CSiSi, CSiC, CCSi, CCC), that +specify EDIP parameters for all permutations of the two elements +interacting in three-body configurations. Thus for 3 elements, 27 +entries would be required, etc. + +At the moment, only a single element parametrization is +implemented. However, the author is not aware of other +multi-element EDIP parametrizations. If you know any and +you are interest in that, please contact the author of +the EDIP package. + +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +This pair style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +This pair style does not write its information to "binary restart +files"_restart.html, since it is stored in potential files. Thus, you +need to re-specify the pair_style and pair_coeff commands in an input +script that reads a restart file. + +This pair style can only be used via the {pair} keyword of the +"run_style respa"_run_style.html command. It does not support the +{inner}, {middle}, {outer} keywords. + +:line + +[Restrictions:] + +This angle style can only be used if LAMMPS was built with the +USER-MISC package. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info on packages. + +This pair style requires the "newton"_newton.html setting to be "on" +for pair interactions. + +The EDIP potential files provided with LAMMPS (see the potentials directory) +are parameterized for metal "units"_units.html. +You can use the SW potential with any LAMMPS units, but you would need +to create your own EDIP potential file with coefficients listed in the +appropriate units if your simulation doesn't use "metal" units. + +[Related commands:] + +"pair_coeff"_pair_coeff.html + +[Default:] none + +:line + +:link(EDIP) +[(EDIP)] J. F. Justo et al., Phys. Rev. B 58, 2539 (1998). diff --git a/doc/pair_eff.html b/doc/pair_eff.html index 086c13e532..a2aaa1a882 100644 --- a/doc/pair_eff.html +++ b/doc/pair_eff.html @@ -252,9 +252,9 @@ to be specified in an input script that reads a restart file.

    Restrictions:

    These pair styles will only be enabled if LAMMPS is built with the -"user-eff" package. It will only be enabled if LAMMPS was built with -that package. See the Making LAMMPS section -for more info. +USER-EFF package. It will only be enabled if LAMMPS was built with +that package. See the Making LAMMPS +section for more info.

    These pair styles require that particles store electron attributes such as radius, radial velocity, and radital force, as defined by the diff --git a/doc/pair_eff.txt b/doc/pair_eff.txt index 232b785ef6..7e38770102 100644 --- a/doc/pair_eff.txt +++ b/doc/pair_eff.txt @@ -249,9 +249,9 @@ These pair styles can only be used via the {pair} keyword of the [Restrictions:] These pair styles will only be enabled if LAMMPS is built with the -"user-eff" package. It will only be enabled if LAMMPS was built with -that package. See the "Making LAMMPS"_Section_start.html#2_3 section -for more info. +USER-EFF package. It will only be enabled if LAMMPS was built with +that package. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. These pair styles require that particles store electron attributes such as radius, radial velocity, and radital force, as defined by the diff --git a/doc/pair_eim.html b/doc/pair_eim.html index cfeead5d92..484cb2505c 100644 --- a/doc/pair_eim.html +++ b/doc/pair_eim.html @@ -11,6 +11,8 @@

    pair_style eim command

    +

    pair_style eim/omp command +

    Syntax:

    pair_style style 
    @@ -132,9 +134,31 @@ needs.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Restrictions:

    -

    This style is part of the "manybody" package. It is only enabled if +

    This style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default).

    Related commands: diff --git a/doc/pair_eim.txt b/doc/pair_eim.txt index 411f64c254..21c0540058 100644 --- a/doc/pair_eim.txt +++ b/doc/pair_eim.txt @@ -7,6 +7,7 @@ :line pair_style eim command :h3 +pair_style eim/omp command :h3 [Syntax:] @@ -129,9 +130,31 @@ needs. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] -This style is part of the "manybody" package. It is only enabled if +This style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default). [Related commands:] diff --git a/doc/pair_gauss.html b/doc/pair_gauss.html index c6ceaae2ae..4a5f91c30e 100644 --- a/doc/pair_gauss.html +++ b/doc/pair_gauss.html @@ -11,6 +11,8 @@

    pair_style gauss command

    +

    pair_style gauss/omp command +

    Syntax:

    pair_style gauss cutoff 
    @@ -47,6 +49,28 @@ is used.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    This pair style does not support mixing. Thus, coefficients for all diff --git a/doc/pair_gauss.txt b/doc/pair_gauss.txt index 85fa1feea5..e3e5b19d66 100644 --- a/doc/pair_gauss.txt +++ b/doc/pair_gauss.txt @@ -7,6 +7,7 @@ :line pair_style gauss command :h3 +pair_style gauss/omp command :h3 [Syntax:] @@ -44,6 +45,28 @@ is used. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: This pair style does not support mixing. Thus, coefficients for all diff --git a/doc/pair_gayberne.html b/doc/pair_gayberne.html index 274f807699..ff4e001ced 100644 --- a/doc/pair_gayberne.html +++ b/doc/pair_gayberne.html @@ -13,6 +13,8 @@

    pair_style gayberne/gpu command

    +

    pair_style gayberne/omp command +

    Syntax:

    pair_style gayberne gamma upsilon mu cutoff 
    @@ -132,22 +134,22 @@ pair_coeff sigma to 1.0 as well.
     


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -185,8 +187,8 @@ to be specified in an input script that reads a restart file.

    Restrictions:

    -

    The gayberne style is part of the "asphere" package. It is only -enabled if LAMMPS was built with that package. See the Making +

    The gayberne style is part of the ASPHERE package. It is only +enabled if LAMMPS was built with that package. See the Making LAMMPS section for more info.

    These pair style require that atoms store torque and a quaternion to diff --git a/doc/pair_gayberne.txt b/doc/pair_gayberne.txt index ffa6f9ad50..9b3363c000 100755 --- a/doc/pair_gayberne.txt +++ b/doc/pair_gayberne.txt @@ -8,6 +8,7 @@ pair_style gayberne command :h3 pair_style gayberne/gpu command :h3 +pair_style gayberne/omp command :h3 [Syntax:] @@ -128,22 +129,22 @@ pair_coeff sigma to 1.0 as well. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -181,9 +182,9 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -The {gayberne} style is part of the "asphere" package. It is only +The {gayberne} style is part of the ASPHERE package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. These pair style require that atoms store torque and a quaternion to represent their orientation, as defined by the diff --git a/doc/pair_gran.html b/doc/pair_gran.html index 7a77d914bd..2c0056f522 100644 --- a/doc/pair_gran.html +++ b/doc/pair_gran.html @@ -13,10 +13,16 @@

    pair_style gran/cuda command

    +

    pair_style gran/omp command +

    pair_style gran/hooke/history command

    +

    pair_style gran/hooke/history/omp command +

    pair_style gran/hertz/history command

    +

    pair_style gran/hertz/history/omp command +

    Syntax:

    pair_style style Kn Kt gamma_n gamma_t xmu dampflag 
    @@ -170,22 +176,22 @@ potential.
     


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -209,9 +215,9 @@ specified in an input script that reads a restart file.

    Restrictions: none

    -

    All the granular pair styles are part of the "granular" package. It -is only enabled if LAMMPS was built with that package. See the -Making LAMMPS section for more info. +

    All the granular pair styles are part of the GRANULAR package. It is +only enabled if LAMMPS was built with that package. See the Making +LAMMPS section for more info.

    These pair styles require that atoms store torque and angular velocity (omega) as defined by the atom_style. They also diff --git a/doc/pair_gran.txt b/doc/pair_gran.txt index 9e73786d70..d495c010f0 100644 --- a/doc/pair_gran.txt +++ b/doc/pair_gran.txt @@ -8,8 +8,11 @@ pair_style gran/hooke command :h3 pair_style gran/cuda command :h3 +pair_style gran/omp command :h3 pair_style gran/hooke/history command :h3 +pair_style gran/hooke/history/omp command :h3 pair_style gran/hertz/history command :h3 +pair_style gran/hertz/history/omp command :h3 [Syntax:] @@ -159,22 +162,22 @@ potential. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -198,9 +201,9 @@ These pair styles can only be used via the {pair} keyword of the [Restrictions:] none -All the granular pair styles are part of the "granular" package. It -is only enabled if LAMMPS was built with that package. See the -"Making LAMMPS"_Section_start.html#2_3 section for more info. +All the granular pair styles are part of the GRANULAR package. It is +only enabled if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. These pair styles require that atoms store torque and angular velocity (omega) as defined by the "atom_style"_atom_style.html. They also diff --git a/doc/pair_gromacs.html b/doc/pair_gromacs.html index a63db7ef3b..aa8051d5c0 100644 --- a/doc/pair_gromacs.html +++ b/doc/pair_gromacs.html @@ -13,10 +13,14 @@

    pair_style lj/gromacs/cuda command

    +

    pair_style lj/gromacs/omp command +

    pair_style lj/gromacs/coul/gromacs command

    pair_style lj/gromacs/coul/gromacs/cuda command

    +

    pair_style lj/gromacs/coul/gromacs/omp command +

    Syntax:

    pair_style style args 
    @@ -42,23 +46,24 @@ pair_coeff * * 100.0 2.0
     

    Description:

    -

    The lj/gromacs styles compute LJ and Coulombic interactions with an -additional switching function S(r) that ramps the energy and force +

    The lj/gromacs styles compute shifted LJ and Coulombic interactions +with an additional switching function S(r) that ramps the energy and force smoothly to zero between an inner and outer cutoff. It is a commonly used potential in the GROMACS MD code and for the coarse-grained models of (Marrink).

    -

    R1 is the inner cutoff; Rc is the outer cutoff. The coefficients A -and B are computed by LAMMPS to perform the smoothing. The function +

    R1 is the inner cutoff; Rc is the outer cutoff. The coefficients A, B, +and C are computed by LAMMPS to perform the shifting and smoothing. +The function S(r) is actually applied once to each term of the LJ formula and once -to the Coulombic formula, so there are 2 or 3 sets of A,B coefficients +to the Coulombic formula, so there are 2 or 3 sets of A,B,C coefficients depending on which pair_style is used. The boundary conditions applied to the smoothing function are as follows: S(r1) = S'(r1) = 0, -S(rc) = -F(rc), S'(rc) = -F'(rc), where F(r) is the correpsonding term -in the LJ or Coulombic function and a single quote represents a -derivative with respect to r. +S(rc) = -F(rc), S'(rc) = -F'(rc), where F(r) is the corresponding term +in the LJ or Coulombic potential energy function and a +single quote represents a derivative with respect to r.

    The inner and outer cutoff for the LJ and Coulombic terms can be the same or different depending on whether 2 or 4 arguments are used in @@ -91,22 +96,22 @@ cutoff(s) specified in the pair_style command.


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. diff --git a/doc/pair_gromacs.txt b/doc/pair_gromacs.txt index 1a1ca698bc..5fc8ef3c4b 100644 --- a/doc/pair_gromacs.txt +++ b/doc/pair_gromacs.txt @@ -8,8 +8,10 @@ pair_style lj/gromacs command :h3 pair_style lj/gromacs/cuda command :h3 +pair_style lj/gromacs/omp command :h3 pair_style lj/gromacs/coul/gromacs command :h3 pair_style lj/gromacs/coul/gromacs/cuda command :h3 +pair_style lj/gromacs/coul/gromacs/omp command :h3 [Syntax:] @@ -35,23 +37,24 @@ pair_coeff * * 100.0 2.0 :pre [Description:] -The {lj/gromacs} styles compute LJ and Coulombic interactions with an -additional switching function S(r) that ramps the energy and force +The {lj/gromacs} styles compute shifted LJ and Coulombic interactions +with an additional switching function S(r) that ramps the energy and force smoothly to zero between an inner and outer cutoff. It is a commonly used potential in the "GROMACS"_http://www.gromacs.org MD code and for the coarse-grained models of "(Marrink)"_#Marrink. :c,image(Eqs/pair_gromacs.jpg) -R1 is the inner cutoff; Rc is the outer cutoff. The coefficients A -and B are computed by LAMMPS to perform the smoothing. The function +R1 is the inner cutoff; Rc is the outer cutoff. The coefficients A, B, +and C are computed by LAMMPS to perform the shifting and smoothing. +The function S(r) is actually applied once to each term of the LJ formula and once -to the Coulombic formula, so there are 2 or 3 sets of A,B coefficients +to the Coulombic formula, so there are 2 or 3 sets of A,B,C coefficients depending on which pair_style is used. The boundary conditions applied to the smoothing function are as follows: S(r1) = S'(r1) = 0, -S(rc) = -F(rc), S'(rc) = -F'(rc), where F(r) is the correpsonding term -in the LJ or Coulombic function and a single quote represents a -derivative with respect to r. +S(rc) = -F(rc), S'(rc) = -F'(rc), where F(r) is the corresponding term +in the LJ or Coulombic potential energy function and a +single quote represents a derivative with respect to r. The inner and outer cutoff for the LJ and Coulombic terms can be the same or different depending on whether 2 or 4 arguments are used in @@ -84,22 +87,22 @@ cutoff(s) specified in the pair_style command. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. diff --git a/doc/pair_hbond_dreiding.html b/doc/pair_hbond_dreiding.html index 8c6358faa7..d412af1ef6 100644 --- a/doc/pair_hbond_dreiding.html +++ b/doc/pair_hbond_dreiding.html @@ -11,8 +11,12 @@

    pair_style hbond/dreiding/lj command

    +

    pair_style hbond/dreiding/lj/omp command +

    pair_style hbond/dreiding/morse command

    +

    pair_style hbond/dreiding/morse/omp command +

    Syntax:

    pair_style style N inner_distance_cutoff outer_distance_cutoff angle_cutof 
    @@ -38,7 +42,7 @@ pair_coeff * * 2*5 j 100.0 1.0 2.0 4.0 6.0
     

    The hbond/dreiding styles compute the Acceptor-Hydrogen-Donor (AHD) 3-body hydrogen bond interaction for the -DREIDING force field, given by: +DREIDING force field, given by:

    @@ -69,8 +73,8 @@ potential for the Donor-Acceptor interactions. (Liu) showed that the Morse form gives improved results for Dendrimer simulations, when n = 2.

    -

    See this howto section of the manual for more -information on the DREIDING forcefield. +

    See this howto section of the manual for +more information on the DREIDING forcefield.

    Because the Dreiding hydrogen bond potential is only one portion of an overall force field which typically includes other pairwise @@ -148,6 +152,28 @@ optional parameters.


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    These pair styles do not support mixing. You must explicitly identify diff --git a/doc/pair_hbond_dreiding.txt b/doc/pair_hbond_dreiding.txt index bcd3c15add..afc469a4a3 100644 --- a/doc/pair_hbond_dreiding.txt +++ b/doc/pair_hbond_dreiding.txt @@ -7,7 +7,9 @@ :line pair_style hbond/dreiding/lj command :h3 +pair_style hbond/dreiding/lj/omp command :h3 pair_style hbond/dreiding/morse command :h3 +pair_style hbond/dreiding/morse/omp command :h3 [Syntax:] @@ -34,7 +36,7 @@ pair_coeff * * 2*5 j 100.0 1.0 2.0 4.0 6.0 :pre The {hbond/dreiding} styles compute the Acceptor-Hydrogen-Donor (AHD) 3-body hydrogen bond interaction for the -"DREIDING"_Section_howto.html#4_4 force field, given by: +"DREIDING"_Section_howto.html#howto_4 force field, given by: :c,image(Eqs/pair_hbond_dreiding.jpg) @@ -65,8 +67,8 @@ potential for the Donor-Acceptor interactions. "(Liu)"_#Liu showed that the Morse form gives improved results for Dendrimer simulations, when n = 2. -See this "howto section"_Section_howto.html#4_4 of the manual for more -information on the DREIDING forcefield. +See this "howto section"_Section_howto.html#howto_4 of the manual for +more information on the DREIDING forcefield. Because the Dreiding hydrogen bond potential is only one portion of an overall force field which typically includes other pairwise @@ -144,6 +146,28 @@ optional parameters. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: These pair styles do not support mixing. You must explicitly identify diff --git a/doc/pair_hybrid.html b/doc/pair_hybrid.html index 8c5688c3a4..7fcba348da 100644 --- a/doc/pair_hybrid.html +++ b/doc/pair_hybrid.html @@ -11,8 +11,12 @@

    pair_style hybrid command

    +

    pair_style hybrid/omp command +

    pair_style hybrid/overlay command

    +

    pair_style hybrid/overlay/omp command +

    Syntax:

    pair_style hybrid style1 args style2 args ...
    @@ -212,6 +216,32 @@ passed to the Tersoff potential, which means it would compute no
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +

    +

    Since the hybrid and hybrid/overlay styles delegate computation +to the individual sub-styles, the suffix versions of the hybrid +and hybrid/overlay styles are used to propagate the corresponding +suffix to all sub-styles, if those versions exist. Otherwise the +non-accelerated version will be used. +

    +

    The individual accelerated sub-styles are part of the USER-CUDA, GPU, +USER-OMP and OPT packages, respectively. They are only enabled if +LAMMPS was built with those packages. See the +Making LAMMPS section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    Any pair potential settings made via the diff --git a/doc/pair_hybrid.txt b/doc/pair_hybrid.txt index 099f5e39ea..b93fe360d8 100644 --- a/doc/pair_hybrid.txt +++ b/doc/pair_hybrid.txt @@ -7,7 +7,9 @@ :line pair_style hybrid command :h3 +pair_style hybrid/omp command :h3 pair_style hybrid/overlay command :h3 +pair_style hybrid/overlay/omp command :h3 [Syntax:] @@ -208,6 +210,32 @@ passed to the Tersoff potential, which means it would compute no :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. + +Since the {hybrid} and {hybrid/overlay} styles delegate computation +to the individual sub-styles, the suffix versions of the {hybrid} +and {hybrid/overlay} styles are used to propagate the corresponding +suffix to all sub-styles, if those versions exist. Otherwise the +non-accelerated version will be used. + +The individual accelerated sub-styles are part of the USER-CUDA, GPU, +USER-OMP and OPT packages, respectively. They are only enabled if +LAMMPS was built with those packages. See the +"Making LAMMPS"_Section_start.html#start_3 section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: Any pair potential settings made via the diff --git a/doc/pair_line_lj.html b/doc/pair_line_lj.html new file mode 100644 index 0000000000..125bd41c5d --- /dev/null +++ b/doc/pair_line_lj.html @@ -0,0 +1,117 @@ + +

    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    pair_style line/lj command +

    +

    Syntax: +

    +
    pair_style line/lj cutoff 
    +
    +

    cutoff = global cutoff for interactions (distance units) +

    +

    Examples: +

    +
    pair_style line/lj 3.0
    +pair_coeff * * 1.0 1.0
    +pair_coeff 1 1 1.0 1.5 2.5 
    +
    +

    Description: +

    +

    Style line/lj treats particles which are line segments as a set of +small spherical particles that tile the line segment length as +explained below. Interactions between two line segments, each with N1 +and N2 spherical particles, are calculated as the pairwise sum of +N1*N2 Lennard-Jones interactions. Interactions between a line segment +with N spherical particles and a point particle are treated as the +pairwise sum of N Lennard-Jones interactions. See the pair_style +lj/cut doc page for the definition of Lennard-Jones +interactions. +

    +

    The cutoff distance for an interaction between 2 line segments, or +between a line segment and a point particle, is calculated from the +position of the line segment (its center), not between pairs of +individual spheres comprising the line segment. Thus an interaction +is either calculated in its entirety or not at all. +

    +

    The set of non-overlapping spherical particles that represent a line +segment, for purposes of this pair style, are generated in the +following manner. Their size is a function of the line segment length +and the specified sigma for that particle type. If a line segment has +a length L and is of type I, then the number of spheres N that +represent the segment is calculated as N = L/sigma_II, rounded up to +an integer value. Thus if L is not evenly divisibly by sigam_II, N is +incremented to include one extra sphere. In this case, the spheres +must be slightly smaller than sigma_II so as not to overlap, so a new +sigma-prime is chosen as the sphere diameter, such that L/N = +sigma-prime. Thus the line segment interacts with other segments or +point particles as a collection of N spheres of diameter sigma-prime, +evenly spaced along the line segment, so as to exactly cover its +length. +

    +

    The LJ interaction between 2 spheres on different line segments of +types I,J is computed with an arithmetic mixing of the sigma values of +the 2 spheres and using the specified epsilon value for I,J atom +types. Note that because the sigma values for line segment spheres is +computed using only sigma_II values, specific to the line segment's +type, this means that any specified sigma_IJ values (for I != J) are +effectively ignored. +

    +

    For style line/lj, the following coefficients must be defined for +each pair of atoms types via the pair_coeff command +as in the examples above, or in the data file or restart files read by +the read_data or read_restart +commands: +

    +
    • epsilon (energy units) +
    • sigma (distance units) +
    • cutoff (distance units) +
    +

    The last coefficient is optional. If not specified, the global cutoff +is used. +

    +
    + +

    Mixing, shift, table, tail correction, restart, rRESPA info: +

    +

    For atom type pairs I,J and I != J, the epsilon and sigma coefficients +and cutoff distance for all of this pair style can be mixed. The +default mix value is geometric. See the "pair_modify" command for +details. +

    +

    This pair style does not support the pair_modify +shift, table, and tail options. +

    +

    This pair style does not write its information to binary restart +files. +

    +

    This pair style can only be used via the pair keyword of the +run_style respa command. It does not support the +inner, middle, outer keywords. +

    +
    + +

    Restrictions: +

    +

    This style is part of the ASPHERE package. It is only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Defining particles to be line segments so they participate in +line/line or line/particle interactions requires the use the +atom_style line command. +

    +

    Related commands: +

    +

    pair_coeff, pair_style tri/lj +

    +

    Default: none +

    + diff --git a/doc/pair_line_lj.txt b/doc/pair_line_lj.txt new file mode 100644 index 0000000000..7f0bad0830 --- /dev/null +++ b/doc/pair_line_lj.txt @@ -0,0 +1,112 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +pair_style line/lj command :h3 + +[Syntax:] + +pair_style line/lj cutoff :pre + +cutoff = global cutoff for interactions (distance units) + +[Examples:] + +pair_style line/lj 3.0 +pair_coeff * * 1.0 1.0 +pair_coeff 1 1 1.0 1.5 2.5 :pre + +[Description:] + +Style {line/lj} treats particles which are line segments as a set of +small spherical particles that tile the line segment length as +explained below. Interactions between two line segments, each with N1 +and N2 spherical particles, are calculated as the pairwise sum of +N1*N2 Lennard-Jones interactions. Interactions between a line segment +with N spherical particles and a point particle are treated as the +pairwise sum of N Lennard-Jones interactions. See the "pair_style +lj/cut"_pair_lj.html doc page for the definition of Lennard-Jones +interactions. + +The cutoff distance for an interaction between 2 line segments, or +between a line segment and a point particle, is calculated from the +position of the line segment (its center), not between pairs of +individual spheres comprising the line segment. Thus an interaction +is either calculated in its entirety or not at all. + +The set of non-overlapping spherical particles that represent a line +segment, for purposes of this pair style, are generated in the +following manner. Their size is a function of the line segment length +and the specified sigma for that particle type. If a line segment has +a length L and is of type I, then the number of spheres N that +represent the segment is calculated as N = L/sigma_II, rounded up to +an integer value. Thus if L is not evenly divisibly by sigam_II, N is +incremented to include one extra sphere. In this case, the spheres +must be slightly smaller than sigma_II so as not to overlap, so a new +sigma-prime is chosen as the sphere diameter, such that L/N = +sigma-prime. Thus the line segment interacts with other segments or +point particles as a collection of N spheres of diameter sigma-prime, +evenly spaced along the line segment, so as to exactly cover its +length. + +The LJ interaction between 2 spheres on different line segments of +types I,J is computed with an arithmetic mixing of the sigma values of +the 2 spheres and using the specified epsilon value for I,J atom +types. Note that because the sigma values for line segment spheres is +computed using only sigma_II values, specific to the line segment's +type, this means that any specified sigma_IJ values (for I != J) are +effectively ignored. + +For style {line/lj}, the following coefficients must be defined for +each pair of atoms types via the "pair_coeff"_pair_coeff.html command +as in the examples above, or in the data file or restart files read by +the "read_data"_read_data.html or "read_restart"_read_restart.html +commands: + +epsilon (energy units) +sigma (distance units) +cutoff (distance units) :ul + +The last coefficient is optional. If not specified, the global cutoff +is used. + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +For atom type pairs I,J and I != J, the epsilon and sigma coefficients +and cutoff distance for all of this pair style can be mixed. The +default mix value is {geometric}. See the "pair_modify" command for +details. + +This pair style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +This pair style does not write its information to "binary restart +files"_restart.html. + +This pair style can only be used via the {pair} keyword of the +"run_style respa"_run_style.html command. It does not support the +{inner}, {middle}, {outer} keywords. + +:line + +[Restrictions:] + +This style is part of the ASPHERE package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#2_3 section for more info. + +Defining particles to be line segments so they participate in +line/line or line/particle interactions requires the use the +"atom_style line"_atom_style.html command. + +[Related commands:] + +"pair_coeff"_pair_coeff.html, "pair_style tri/lj"_pair_tri_lj.html + +[Default:] none diff --git a/doc/pair_lj.html b/doc/pair_lj.html index b42c8ac27e..760e03f9f4 100644 --- a/doc/pair_lj.html +++ b/doc/pair_lj.html @@ -19,24 +19,38 @@

    pair_style lj/cut/opt command

    +

    pair_style lj/cut/omp command +

    pair_style lj/cut/coul/cut command

    pair_style lj/cut/coul/cut/cuda command

    pair_style lj/cut/coul/cut/gpu command

    +

    pair_style lj/cut/coul/cut/omp command +

    pair_style lj/cut/coul/debye command

    pair_style lj/cut/coul/debye/cuda command

    +

    pair_style lj/cut/coul/debye/omp command +

    pair_style lj/cut/coul/long command

    pair_style lj/cut/coul/long/cuda command

    pair_style lj/cut/coul/long/gpu command

    +

    pair_style lj/cut/coul/long/opt command +

    +

    pair_style lj/cut/coul/long/omp command +

    pair_style lj/cut/coul/long/tip4p command

    +

    pair_style lj/cut/coul/long/tip4p/omp command +

    +

    pair_style lj/cut/coul/long/tip4p/opt command +

    Syntax:

    pair_style style args 
    @@ -140,8 +154,8 @@ first.  This is to enable LAMMPS to "find" the 2 H atoms associated
     with each O atom.  For example, if the atom ID of an O atom in a TIP4P
     water molecule is 500, then its 2 H atoms must have IDs 501 and 502.
     

    -

    See the howto section for more information on -how to use the TIP4P pair style. +

    See the howto section for more +information on how to use the TIP4P pair style.

    The following coefficients must be defined for each pair of atoms types via the pair_coeff command as in the examples @@ -173,22 +187,22 @@ Coulombic cutoff specified in the pair_style command.


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -232,9 +246,9 @@ See the run_style command for details.

    Restrictions:

    The lj/cut/coul/long and lj/cut/coul/long/tip4p styles are part of -the "kspace" package. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS -section for more info. Note that the kspace package is installed by +the KSPACE package. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. Note that the KSPACE package is installed by default.

    Related commands: diff --git a/doc/pair_lj.txt b/doc/pair_lj.txt index 443b5c27ca..382af5b8a1 100644 --- a/doc/pair_lj.txt +++ b/doc/pair_lj.txt @@ -11,15 +11,22 @@ pair_style lj/cut/cuda command :h3 pair_style lj/cut/experimental/cuda command :h3 pair_style lj/cut/gpu command :h3 pair_style lj/cut/opt command :h3 +pair_style lj/cut/omp command :h3 pair_style lj/cut/coul/cut command :h3 pair_style lj/cut/coul/cut/cuda command :h3 pair_style lj/cut/coul/cut/gpu command :h3 +pair_style lj/cut/coul/cut/omp command :h3 pair_style lj/cut/coul/debye command :h3 pair_style lj/cut/coul/debye/cuda command :h3 +pair_style lj/cut/coul/debye/omp command :h3 pair_style lj/cut/coul/long command :h3 pair_style lj/cut/coul/long/cuda command :h3 pair_style lj/cut/coul/long/gpu command :h3 +pair_style lj/cut/coul/long/opt command :h3 +pair_style lj/cut/coul/long/omp command :h3 pair_style lj/cut/coul/long/tip4p command :h3 +pair_style lj/cut/coul/long/tip4p/omp command :h3 +pair_style lj/cut/coul/long/tip4p/opt command :h3 [Syntax:] @@ -123,8 +130,8 @@ first. This is to enable LAMMPS to "find" the 2 H atoms associated with each O atom. For example, if the atom ID of an O atom in a TIP4P water molecule is 500, then its 2 H atoms must have IDs 501 and 502. -See the "howto section"_Section_howto.html#4_8 for more information on -how to use the TIP4P pair style. +See the "howto section"_Section_howto.html#howto_8 for more +information on how to use the TIP4P pair style. The following coefficients must be defined for each pair of atoms types via the "pair_coeff"_pair_coeff.html command as in the examples @@ -156,22 +163,22 @@ Coulombic cutoff specified in the pair_style command. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -215,9 +222,9 @@ See the "run_style"_run_style.html command for details. [Restrictions:] The {lj/cut/coul/long} and {lj/cut/coul/long/tip4p} styles are part of -the "kspace" package. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 -section for more info. Note that the kspace package is installed by +the KSPACE package. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. Note that the KSPACE package is installed by default. [Related commands:] diff --git a/doc/pair_lj96.html b/doc/pair_lj96.html index 297a776f3f..97d794d73e 100644 --- a/doc/pair_lj96.html +++ b/doc/pair_lj96.html @@ -15,6 +15,8 @@

    pair_style lj96/cut/gpu command

    +

    pair_style lj96/cut/omp command +

    Syntax:

    pair_style lj96/cut cutoff 
    @@ -51,22 +53,22 @@ cutoff specified in the pair_style command is used.
     


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. diff --git a/doc/pair_lj96.txt b/doc/pair_lj96.txt index 201e4f2807..dcdb3632c5 100644 --- a/doc/pair_lj96.txt +++ b/doc/pair_lj96.txt @@ -9,6 +9,7 @@ pair_style lj96/cut command :h3 pair_style lj96/cut/cuda command :h3 pair_style lj96/cut/gpu command :h3 +pair_style lj96/cut/omp command :h3 [Syntax:] @@ -46,22 +47,22 @@ cutoff specified in the pair_style command is used. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. diff --git a/doc/pair_lj_coul.html b/doc/pair_lj_coul.html index f384644fcf..9faaba8715 100644 --- a/doc/pair_lj_coul.html +++ b/doc/pair_lj_coul.html @@ -11,6 +11,8 @@

    pair_style lj/coul command

    +

    pair_style lj/coul/omp command +

    Syntax:

    pair_style lj/coul flag_lj flag_coul cutoff (cutoff2) 
    @@ -105,6 +107,28 @@ pair, since only one global Coulombic cutoff is allowed.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, the epsilon and sigma coefficients @@ -138,8 +162,8 @@ details.

    Restrictions:

    -

    This style is part of the "user-ewaldn" package. It is only enabled -if LAMMPS was built with that package. See the Making +

    This style is part of the USER-EWALDN package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/pair_lj_coul.txt b/doc/pair_lj_coul.txt index 15c9c64317..1593ca4170 100644 --- a/doc/pair_lj_coul.txt +++ b/doc/pair_lj_coul.txt @@ -7,6 +7,7 @@ :line pair_style lj/coul command :h3 +pair_style lj/coul/omp command :h3 [Syntax:] @@ -97,6 +98,28 @@ pair, since only one global Coulombic cutoff is allowed. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, the epsilon and sigma coefficients @@ -130,9 +153,9 @@ details. [Restrictions:] -This style is part of the "user-ewaldn" package. It is only enabled -if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This style is part of the USER-EWALDN package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/pair_lj_cubic.html b/doc/pair_lj_cubic.html new file mode 100644 index 0000000000..b5d72b8452 --- /dev/null +++ b/doc/pair_lj_cubic.html @@ -0,0 +1,136 @@ + +

    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    pair_style lj/cubic command +

    +

    pair_style lj/cubic/omp command +

    +

    Syntax: +

    +
    pair_style lj/cubic 
    +
    +

    Examples: +

    +
    pair_style lj/cubic
    +pair_coeff * * 1.0 0.8908987 
    +
    +

    Description: +

    +

    The lj/cubic style computes a truncated LJ interaction potential whose +energy and force are continuous everywhere. +Inside the inflection point the interaction is identical to the +standard 12/6 Lennard-Jones potential. +The LJ function outside the inflection point is replaced +with a cubic function of distance. The energy, force, and second +derivative are continuous at the inflection point. +The cubic coefficient A3 is chosen so +that both energy and force go to zero at the cutoff distance. +Outside the cutoff distance the energy and force are zero. +

    +
    +
    +

    The location of the inflection point rs is defined +by the LJ diameter, rs/sigma = (26/7)^1/6. The cutoff distance +is defined by rc/rs = 67/48 or rc/sigma = 1.737.... +The analytic expression for the +the cubic coefficient +A3*rmin^3/epsilon = 27.93... is given in the paper by +Holian and Ravelo (Holian). +

    +

    This potential is commonly used to study the shock mechanics +of FCC solids, as in Ravelo et al. (Ravelo). +

    +

    The following coefficients must be defined for each pair of atom +types via the pair_coeff command as in the example +above, or in the data file or restart files read by the +read_data or read_restart +commands, or by mixing as described below: +

    +
    • epsilon (energy units) +
    • sigma (distance units) +
    +

    Note that sigma is defined in the LJ formula as the zero-crossing +distance for the potential, not as the energy minimum, which +is located at rmin = 2^(1/6)*sigma. In the above example, sigma = 0.8908987, +so rmin = 1. +

    +
    + +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    + +

    Mixing, shift, table, tail correction, restart, rRESPA info: +

    +

    For atom type pairs I,J and I != J, the epsilon and sigma coefficients +and cutoff distance for all of the lj/cut pair styles can be mixed. +The default mix value is geometric. See the "pair_modify" command +for details. +

    +

    The lj/cubic pair style does not support the +pair_modify shift option, +since pair interaction is already smoothed to 0.0 at the +cutoff. +

    +

    The pair_modify table option is not relevant +for this pair style. +

    +

    The lj/cubic pair style does not support the +pair_modify tail option for adding long-range tail +corrections to energy and pressure, since there are no corrections for +a potential that goes to 0.0 at the cutoff. +

    +

    The lj/cubic pair style writes its information to 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. +

    +

    The lj/cubic pair style can only be used via the pair +keyword of the run_style respa command. It does not +support the inner, middle, outer keywords. +

    +
    + +

    Restrictions: none +

    +

    Related commands: +

    +

    pair_coeff +

    +

    Default: none +

    +
    + + + +(Holian) Holian and Ravelo, Phys Rev B, 51, 11275 (1995). + + +

    (Ravelo) Ravelo, Holian, Germann and Lomdahl, Phys Rev B, 70, 014103 (2004). +

    + diff --git a/doc/pair_lj_cubic.txt b/doc/pair_lj_cubic.txt new file mode 100644 index 0000000000..5d60cb12b4 --- /dev/null +++ b/doc/pair_lj_cubic.txt @@ -0,0 +1,128 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +pair_style lj/cubic command :h3 +pair_style lj/cubic/omp command :h3 + +[Syntax:] + +pair_style lj/cubic :pre + +[Examples:] + +pair_style lj/cubic +pair_coeff * * 1.0 0.8908987 :pre + +[Description:] + +The {lj/cubic} style computes a truncated LJ interaction potential whose +energy and force are continuous everywhere. +Inside the inflection point the interaction is identical to the +standard 12/6 "Lennard-Jones"_pair_lj.html potential. +The LJ function outside the inflection point is replaced +with a cubic function of distance. The energy, force, and second +derivative are continuous at the inflection point. +The cubic coefficient A3 is chosen so +that both energy and force go to zero at the cutoff distance. +Outside the cutoff distance the energy and force are zero. + +:c,image(Eqs/pair_lj_cubic.jpg) + +The location of the inflection point rs is defined +by the LJ diameter, rs/sigma = (26/7)^1/6. The cutoff distance +is defined by rc/rs = 67/48 or rc/sigma = 1.737.... +The analytic expression for the +the cubic coefficient +A3*rmin^3/epsilon = 27.93... is given in the paper by +Holian and Ravelo "(Holian)"_#Holian. + +This potential is commonly used to study the shock mechanics +of FCC solids, as in Ravelo et al. "(Ravelo)"_#Ravelo. + +The following coefficients must be defined for each pair of atom +types via the "pair_coeff"_pair_coeff.html command as in the example +above, or in the data file or restart files read by the +"read_data"_read_data.html or "read_restart"_read_restart.html +commands, or by mixing as described below: + +epsilon (energy units) +sigma (distance units) :ul + +Note that sigma is defined in the LJ formula as the zero-crossing +distance for the potential, not as the energy minimum, which +is located at rmin = 2^(1/6)*sigma. In the above example, sigma = 0.8908987, +so rmin = 1. + +:line + +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +For atom type pairs I,J and I != J, the epsilon and sigma coefficients +and cutoff distance for all of the lj/cut pair styles can be mixed. +The default mix value is {geometric}. See the "pair_modify" command +for details. + +The lj/cubic pair style does not support the +"pair_modify"_pair_modify.html shift option, +since pair interaction is already smoothed to 0.0 at the +cutoff. + +The "pair_modify"_pair_modify.html table option is not relevant +for this pair style. + +The lj/cubic pair style does not support the +"pair_modify"_pair_modify.html tail option for adding long-range tail +corrections to energy and pressure, since there are no corrections for +a potential that goes to 0.0 at the cutoff. + +The lj/cubic pair style writes its information to "binary +restart files"_restart.html, so pair_style and pair_coeff commands do +not need to be specified in an input script that reads a restart file. + +The lj/cubic pair style can only be used via the {pair} +keyword of the "run_style respa"_run_style.html command. It does not +support the {inner}, {middle}, {outer} keywords. + +:line + +[Restrictions:] none + +[Related commands:] + +"pair_coeff"_pair_coeff.html + +[Default:] none + +:line + +:link(Holian) +[(Holian)] Holian and Ravelo, Phys Rev B, 51, 11275 (1995). +:link(Ravelo) +[(Ravelo)] Ravelo, Holian, Germann and Lomdahl, Phys Rev B, 70, 014103 (2004). diff --git a/doc/pair_lj_expand.html b/doc/pair_lj_expand.html index e9b31e162a..9173bc7d5b 100644 --- a/doc/pair_lj_expand.html +++ b/doc/pair_lj_expand.html @@ -15,6 +15,8 @@

    pair_style lj/expand/gpu command

    +

    pair_style lj/expand/omp command +

    Syntax:

    pair_style lj/expand cutoff 
    @@ -55,22 +57,22 @@ optional.  If not specified, the global LJ cutoff is used.
     


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. diff --git a/doc/pair_lj_expand.txt b/doc/pair_lj_expand.txt index def11c26db..fc9fd047e0 100644 --- a/doc/pair_lj_expand.txt +++ b/doc/pair_lj_expand.txt @@ -9,6 +9,7 @@ pair_style lj/expand command :h3 pair_style lj/expand/cuda command :h3 pair_style lj/expand/gpu command :h3 +pair_style lj/expand/omp command :h3 [Syntax:] @@ -50,22 +51,22 @@ optional. If not specified, the global LJ cutoff is used. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. diff --git a/doc/pair_lj_sf.html b/doc/pair_lj_sf.html index 2b7fcf5b27..7ff9011052 100644 --- a/doc/pair_lj_sf.html +++ b/doc/pair_lj_sf.html @@ -11,6 +11,8 @@

    pair_style lj/sf command

    +

    pair_style lj/sf/omp command +

    Syntax:

    pair_style lj/sf cutoff 
    @@ -46,6 +48,28 @@ LJ cutoff specified in the pair_style command is used.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, the epsilon and sigma @@ -77,8 +101,8 @@ to be specified in an input script that reads a restart file.

    Restrictions:

    -

    This pair style is part of the "user-misc" package. It is only -enabled if LAMMPS was built with that package. See the Making +

    This pair style is part of the USER-MISC package. It is only enabled +if LAMMPS was built with that package. See the Making LAMMPS section for more info.

    Related commands: diff --git a/doc/pair_lj_sf.txt b/doc/pair_lj_sf.txt index 59dd9e1ec4..a56cf7485a 100644 --- a/doc/pair_lj_sf.txt +++ b/doc/pair_lj_sf.txt @@ -7,6 +7,7 @@ :line pair_style lj/sf command :h3 +pair_style lj/sf/omp command :h3 [Syntax:] @@ -43,6 +44,28 @@ LJ cutoff specified in the pair_style command is used. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, the epsilon and sigma @@ -74,9 +97,9 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This pair style is part of the "user-misc" package. It is only -enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This pair style is part of the USER-MISC package. It is only enabled +if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] diff --git a/doc/pair_lj_smooth.html b/doc/pair_lj_smooth.html index 8cc6c75d8b..0805dd5f05 100644 --- a/doc/pair_lj_smooth.html +++ b/doc/pair_lj_smooth.html @@ -13,6 +13,8 @@

    pair_style lj/smooth/cuda command

    +

    pair_style lj/smooth/omp command +

    Syntax:

    pair_style lj/smooth Rin Rc 
    @@ -63,22 +65,22 @@ specified, the global values for Rin and Rc are used.
     


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. diff --git a/doc/pair_lj_smooth.txt b/doc/pair_lj_smooth.txt index 33ff5118a8..b08bb47431 100644 --- a/doc/pair_lj_smooth.txt +++ b/doc/pair_lj_smooth.txt @@ -8,6 +8,7 @@ pair_style lj/smooth command :h3 pair_style lj/smooth/cuda command :h3 +pair_style lj/smooth/omp command :h3 [Syntax:] @@ -59,22 +60,22 @@ specified, the global values for Rin and Rc are used. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. diff --git a/doc/pair_lubricate.html b/doc/pair_lubricate.html deleted file mode 100644 index 42f47bfd11..0000000000 --- a/doc/pair_lubricate.html +++ /dev/null @@ -1,154 +0,0 @@ - -

    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands -
    - - - - - - -
    - -

    pair_style lubricate command -

    -

    Syntax: -

    -
    pair_style lubricate mu squeeze shear pump twist cutinner cutoff T_target seed 
    -
    -
    • mu = dynamic viscosity (dynamic viscosity units) -
    • squeeze = 0/1 for squeeze force off/on -
    • shear = 0/1 for shear force off/on -
    • pump = 0/1 for pump force off/on -
    • twist = 0/1 for twist force off/on -
    • cutinner = (distance units) -
    • cutoff = outer cutoff for interactions (distance units) -
    • T_target = desired temperature (temperature units) -
    • seed = random number seed (positive integer) -
    -

    Examples: -

    -
    pair_style lubricate 1.5 1 1 1 0 2.3 2.4 1.3 5878598
    -pair_coeff 1 1 1.8 2.0
    -pair_coeff * * 
    -
    -
    pair_style lubricate 1.0 1 1 1 0 2.3 2.4 1.3 5878598
    -pair_coeff * *
    -variable mu equal ramp(1,2)
    -fix 1 all adapt 1 pair lubricate mu * * v_mu 
    -
    -

    Description: -

    -

    Style lubricate computes pairwise interactions between mono-disperse -spherical particles via this formula from (Ball and Melrose) -

    -
    -
    -

    which represents the dissipation W between two nearby particles due to -their relative velocities in the presence of a background solvent with -viscosity mu. Note that this is dynamic viscosity which has units of -mass/distance/time, not kinematic viscosity. -

    -

    The viscosity mu can be varied in a time-dependent manner over the -course of a simluation, in which case in which case the pair_style -setting for mu will be overridden. See the fix adapt -command for details. -

    -

    Rc is the outer cutoff specified in the pair_style command, the -translational velocities of the 2 particles are v1 and v2, the angular -velocities are w1 and w2, and n is the unit vector in the direction -from particle 1 to 2. The 4 terms represent four modes of pairwise -interaction: squeezing, shearing, pumping, and twisting. The 4 flags -in the pair_style command turn on or off each of these modes by -including or excluding each term. The 4 coefficients on each term are -functions of the separation distance of the particles and the -viscosity. Details are given in (Ball and Melrose), including -the forces and torques that result from taking derivatives of this -equation with respect to velocity (see Appendix A). -

    -

    Unlike most pair potentials, the two specified cutoffs (cutinner and -cutoff) refer to the surface-to-surface separation between two -particles, not center-to-center distance. Currently, this pair style -can only be used for mono-disperse extended spheres (same radii), so -that separation is r_ij - 2*radius, where r_ij is the center-to-center -distance between the particles. Within the inner cutoff cutinner, -the forces and torques are evaluated at a separation of cutinner. The -outer cutoff is the separation distance beyond which the pair-wise -forces are zero. -

    -

    A Langevin thermostatting term is also added to the pairwise force, -similar to that provided by the fix langevin or -pair_style dpd commands. The target temperature for -the thermostat is the specified T_target. The seed is used for -the random numbers generated for the thermostat. -

    -

    The following coefficients must be defined for each pair of atoms -types via the pair_coeff command as in the examples -above, or in the data file or restart files read by the -read_data or read_restart -commands, or by mixing as described below: -

    -
    • cutinner (distance units) -
    • cutoff (distance units) -
    -

    The two coefficients are optional. If neither is specified, the two -cutoffs specified in the pair_style command are used. Otherwise both -must be specified. -

    -
    - -

    Mixing, shift, table, tail correction, restart, rRESPA info: -

    -

    For atom type pairs I,J and I != J, the two cutoff distances for this -pair style can be mixed. The default mix value is geometric. See -the "pair_modify" command for details. -

    -

    This pair style does not support the pair_modify -shift option for the energy of the pair interaction. -

    -

    The pair_modify table option is not relevant -for this pair style. -

    -

    This pair style does not support the pair_modify -tail option for adding long-range tail corrections to energy and -pressure. -

    -

    This pair style writes its information to 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 -run_style respa command. It does not support the -inner, middle, outer keywords. -

    -
    - -

    Restrictions: -

    -

    This style is part of the "colloid" package. It is only enabled if -LAMMPS was built with that package. See the Making -LAMMPS section for more info. -

    -

    This pair style requires that atoms be finite-size spheres with a -diameter, as defined by the atom_style sphere -command. -

    -

    Per-particle or per-type polydispersity is not yet supported by this -pair style; all particles must have the same diameter. -

    -

    This pair style requires you to use the communicate vel -yes option so that velocites are stored by ghost -atoms. -

    -

    Related commands: -

    -

    pair_coeff -

    -

    Default: none -

    -
    - - - -

    (Ball) Ball and Melrose, Physica A, 247, 444-472 (1997). -

    - diff --git a/doc/pair_lubricate.txt b/doc/pair_lubricate.txt deleted file mode 100644 index 665cad8482..0000000000 --- a/doc/pair_lubricate.txt +++ /dev/null @@ -1,148 +0,0 @@ -"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c - -:link(lws,http://lammps.sandia.gov) -:link(ld,Manual.html) -:link(lc,Section_commands.html#comm) - -:line - -pair_style lubricate command :h3 - -[Syntax:] - -pair_style lubricate mu squeeze shear pump twist cutinner cutoff T_target seed :pre - -mu = dynamic viscosity (dynamic viscosity units) -squeeze = 0/1 for squeeze force off/on -shear = 0/1 for shear force off/on -pump = 0/1 for pump force off/on -twist = 0/1 for twist force off/on -cutinner = (distance units) -cutoff = outer cutoff for interactions (distance units) -T_target = desired temperature (temperature units) -seed = random number seed (positive integer) :ul - -[Examples:] - -pair_style lubricate 1.5 1 1 1 0 2.3 2.4 1.3 5878598 -pair_coeff 1 1 1.8 2.0 -pair_coeff * * :pre - -pair_style lubricate 1.0 1 1 1 0 2.3 2.4 1.3 5878598 -pair_coeff * * -variable mu equal ramp(1,2) -fix 1 all adapt 1 pair lubricate mu * * v_mu :pre - -[Description:] - -Style {lubricate} computes pairwise interactions between mono-disperse -spherical particles via this formula from "(Ball and Melrose)"_#Ball - -:c,image(Eqs/pair_lubricate.jpg) - -which represents the dissipation W between two nearby particles due to -their relative velocities in the presence of a background solvent with -viscosity mu. Note that this is dynamic viscosity which has units of -mass/distance/time, not kinematic viscosity. - -The viscosity mu can be varied in a time-dependent manner over the -course of a simluation, in which case in which case the pair_style -setting for mu will be overridden. See the "fix adapt"_fix_adapt.html -command for details. - -Rc is the outer cutoff specified in the pair_style command, the -translational velocities of the 2 particles are v1 and v2, the angular -velocities are w1 and w2, and n is the unit vector in the direction -from particle 1 to 2. The 4 terms represent four modes of pairwise -interaction: squeezing, shearing, pumping, and twisting. The 4 flags -in the pair_style command turn on or off each of these modes by -including or excluding each term. The 4 coefficients on each term are -functions of the separation distance of the particles and the -viscosity. Details are given in "(Ball and Melrose)"_#Ball, including -the forces and torques that result from taking derivatives of this -equation with respect to velocity (see Appendix A). - -Unlike most pair potentials, the two specified cutoffs (cutinner and -cutoff) refer to the surface-to-surface separation between two -particles, not center-to-center distance. Currently, this pair style -can only be used for mono-disperse extended spheres (same radii), so -that separation is r_ij - 2*radius, where r_ij is the center-to-center -distance between the particles. Within the inner cutoff {cutinner}, -the forces and torques are evaluated at a separation of cutinner. The -outer {cutoff} is the separation distance beyond which the pair-wise -forces are zero. - -A Langevin thermostatting term is also added to the pairwise force, -similar to that provided by the "fix langevin"_fix_langevin.html or -"pair_style dpd"_pair_dpd.html commands. The target temperature for -the thermostat is the specified {T_target}. The {seed} is used for -the random numbers generated for the thermostat. - -The following coefficients must be defined for each pair of atoms -types via the "pair_coeff"_pair_coeff.html command as in the examples -above, or in the data file or restart files read by the -"read_data"_read_data.html or "read_restart"_read_restart.html -commands, or by mixing as described below: - -cutinner (distance units) -cutoff (distance units) :ul - -The two coefficients are optional. If neither is specified, the two -cutoffs specified in the pair_style command are used. Otherwise both -must be specified. - -:line - -[Mixing, shift, table, tail correction, restart, rRESPA info]: - -For atom type pairs I,J and I != J, the two cutoff distances for this -pair style can be mixed. The default mix value is {geometric}. See -the "pair_modify" command for details. - -This pair style does not support the "pair_modify"_pair_modify.html -shift option for the energy of the pair interaction. - -The "pair_modify"_pair_modify.html table option is not relevant -for this pair style. - -This pair style does not support the "pair_modify"_pair_modify.html -tail option for adding long-range tail corrections to energy and -pressure. - -This pair style writes its information to "binary restart -files"_restart.html, 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 -"run_style respa"_run_style.html command. It does not support the -{inner}, {middle}, {outer} keywords. - -:line - -[Restrictions:] - -This style is part of the "colloid" package. It is only enabled if -LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. - -This pair style requires that atoms be finite-size spheres with a -diameter, as defined by the "atom_style sphere"_atom_style.html -command. - -Per-particle or per-type polydispersity is not yet supported by this -pair style; all particles must have the same diameter. - -This pair style requires you to use the "communicate vel -yes"_communicate.html option so that velocites are stored by ghost -atoms. - -[Related commands:] - -"pair_coeff"_pair_coeff.html - -[Default:] none - -:line - -:link(Ball) -[(Ball)] Ball and Melrose, Physica A, 247, 444-472 (1997). diff --git a/doc/pair_meam.html b/doc/pair_meam.html index f80c4331d9..8d5868201c 100644 --- a/doc/pair_meam.html +++ b/doc/pair_meam.html @@ -331,9 +331,9 @@ script that reads a restart file.

    Restrictions:

    -

    This style is part of the "meam" package. It is only enabled if -LAMMPS was built with that package, which also requires the MEAM -library be built and linked with LAMMPS. See the Making +

    This style is part of the MEAM package. It is only enabled if LAMMPS +was built with that package, which also requires the MEAM library be +built and linked with LAMMPS. See the Making LAMMPS section for more info.

    Related commands: @@ -373,7 +373,7 @@ This report may be accessed on-line via -

    (ZBL) J.F. Ziegler, J.P. Biersack, U. Littmark, 'Stopping and Ranges -of Ions in Matter' Vol 1, 1985, Pergamon Press. +

    (ZBL) J.F. Ziegler, J.P. Biersack, U. Littmark, "Stopping and Ranges +of Ions in Matter", Vol 1, 1985, Pergamon Press.

    diff --git a/doc/pair_meam.txt b/doc/pair_meam.txt index cb7568a6a8..b787345ae5 100644 --- a/doc/pair_meam.txt +++ b/doc/pair_meam.txt @@ -328,10 +328,10 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This style is part of the "meam" package. It is only enabled if -LAMMPS was built with that package, which also requires the MEAM -library be built and linked with LAMMPS. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This style is part of the MEAM package. It is only enabled if LAMMPS +was built with that package, which also requires the MEAM library be +built and linked with LAMMPS. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. [Related commands:] @@ -363,6 +363,5 @@ This report may be accessed on-line via "this link"_sandreport. [(Wang)] Wang, Van Hove, Ross, Baskes, J. Chem. Phys., 121, 5410 (2004). :link(ZBL) -[(ZBL)] J.F. Ziegler, J.P. Biersack, U. Littmark, 'Stopping and Ranges -of Ions in Matter' Vol 1, 1985, Pergamon Press. - +[(ZBL)] J.F. Ziegler, J.P. Biersack, U. Littmark, "Stopping and Ranges +of Ions in Matter", Vol 1, 1985, Pergamon Press. diff --git a/doc/pair_morse.html b/doc/pair_morse.html index df60fd0b32..eaf5f16085 100644 --- a/doc/pair_morse.html +++ b/doc/pair_morse.html @@ -15,6 +15,8 @@

    pair_style morse/gpu command

    +

    pair_style morse/omp command +

    pair_style morse/opt command

    Syntax: @@ -53,22 +55,22 @@ cutoff is used.


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. diff --git a/doc/pair_morse.txt b/doc/pair_morse.txt index f650489fc2..b31acbb5ac 100644 --- a/doc/pair_morse.txt +++ b/doc/pair_morse.txt @@ -9,6 +9,7 @@ pair_style morse command :h3 pair_style morse/cuda command :h3 pair_style morse/gpu command :h3 +pair_style morse/omp command :h3 pair_style morse/opt command :h3 [Syntax:] @@ -47,22 +48,22 @@ cutoff is used. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. diff --git a/doc/pair_peri.html b/doc/pair_peri.html index f29a7d094b..33bcbd17c1 100644 --- a/doc/pair_peri.html +++ b/doc/pair_peri.html @@ -11,8 +11,12 @@

    pair_style peri/pmb command

    +

    pair_style peri/pmb/omp command +

    pair_style peri/lps command

    +

    pair_style peri/lps/omp command +

    Syntax:

    pair_style style 
    @@ -79,6 +83,28 @@ details.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    These pair styles do not support mixing. Thus, coefficients for all @@ -102,9 +128,10 @@ to be specified in an input script that reads a restart file.

    Restrictions:

    -

    The peri/pmb and peri/lps styles are part of the "peri" +

    The peri/pmb and peri/lps styles are part of the PERI package. They are only enabled if LAMMPS was built with that package. -See the Making LAMMPS section for more info. +See the Making LAMMPS section for more +info.

    Related commands:

    diff --git a/doc/pair_peri.txt b/doc/pair_peri.txt index 5dd59a2af7..00f6636493 100644 --- a/doc/pair_peri.txt +++ b/doc/pair_peri.txt @@ -7,7 +7,9 @@ :line pair_style peri/pmb command :h3 +pair_style peri/pmb/omp command :h3 pair_style peri/lps command :h3 +pair_style peri/lps/omp command :h3 [Syntax:] @@ -75,6 +77,28 @@ details. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: These pair styles do not support mixing. Thus, coefficients for all @@ -98,9 +122,10 @@ These pair styles can only be used via the {pair} keyword of the [Restrictions:] -The {peri/pmb} and {peri/lps} styles are part of the "peri" +The {peri/pmb} and {peri/lps} styles are part of the PERI package. They are only enabled if LAMMPS was built with that package. -See the "Making LAMMPS"_Section_start.html#2_3 section for more info. +See the "Making LAMMPS"_Section_start.html#start_3 section for more +info. [Related commands:] diff --git a/doc/pair_reax_c.html b/doc/pair_reax_c.html index 8d4fabb386..7e5fa3ca3b 100644 --- a/doc/pair_reax_c.html +++ b/doc/pair_reax_c.html @@ -38,7 +38,9 @@ energy. There is more than one version of ReaxFF. The version implemented in LAMMPS uses the functional forms documented in the supplemental information of the following paper: (Chenoweth et al., 2008). The version integrated into LAMMPS matches -the most up-to-date version of ReaxFF as of summer 2010. +the most up-to-date version of ReaxFF as of summer 2010. For more +technical details about the pair reax/c implementation of ReaxFF, see +the "(Aktulga)" paper.

    The reax/c style differs from the pair_style reax command in the lo-level implementation details. The reax style is a @@ -241,8 +243,8 @@ script that reads a restart file.

    Restrictions:

    -

    This pair style is part of the "user-reaxc" package. It is only -enabled if LAMMPS was built with that package. See the Making +

    This pair style is part of the USER-REAXC package. It is only enabled +if LAMMPS was built with that package. See the Making LAMMPS section for more info.

    The ReaxFF potential files provided with LAMMPS in the potentials @@ -251,11 +253,6 @@ the ReaxFF potential with any LAMMPS units, but you would need to create your own potential file with coefficients listed in the appropriate units if your simulation doesn't use "real" units.

    -

    This pair style cannot yet compute per-atom energy or stress. If you -use another command that tries to calculate these quantities using -this pair style, a warning message will be printed and the quantities -will be 0.0. -

    Related commands:

    pair_coeff, fix_qeq_reax, @@ -272,4 +269,9 @@ will be 0.0.

    (Chenoweth_2008) Chenoweth, van Duin and Goddard, Journal of Physical Chemistry A, 112, 1040-1053 (2008).

    + + +

    (Aktulga) Aktulga, Fogarty, Pandit, Grama, Parallel Computing, to +appear (2011). +

    diff --git a/doc/pair_reax_c.txt b/doc/pair_reax_c.txt index 4fde669ed8..60ef519410 100644 --- a/doc/pair_reax_c.txt +++ b/doc/pair_reax_c.txt @@ -34,7 +34,9 @@ energy. There is more than one version of ReaxFF. The version implemented in LAMMPS uses the functional forms documented in the supplemental information of the following paper: "(Chenoweth et al., 2008)"_#Chenoweth_2008. The version integrated into LAMMPS matches -the most up-to-date version of ReaxFF as of summer 2010. +the most up-to-date version of ReaxFF as of summer 2010. For more +technical details about the pair reax/c implementation of ReaxFF, see +the "(Aktulga)" paper. The {reax/c} style differs from the "pair_style reax"_pair_reax.html command in the lo-level implementation details. The {reax} style is a @@ -237,9 +239,9 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This pair style is part of the "user-reaxc" package. It is only -enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +This pair style is part of the USER-REAXC package. It is only enabled +if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. The ReaxFF potential files provided with LAMMPS in the potentials directory are parameterized for real "units"_units.html. You can use @@ -247,11 +249,6 @@ the ReaxFF potential with any LAMMPS units, but you would need to create your own potential file with coefficients listed in the appropriate units if your simulation doesn't use "real" units. -This pair style cannot yet compute per-atom energy or stress. If you -use another command that tries to calculate these quantities using -this pair style, a warning message will be printed and the quantities -will be 0.0. - [Related commands:] "pair_coeff"_pair_coeff.html, "fix_qeq_reax"_fix_qeq_reax.html, @@ -266,3 +263,7 @@ The keyword default is checkqeq = yes. :link(Chenoweth_2008) [(Chenoweth_2008)] Chenoweth, van Duin and Goddard, Journal of Physical Chemistry A, 112, 1040-1053 (2008). + +:link(Aktulga) +[(Aktulga)] Aktulga, Fogarty, Pandit, Grama, Parallel Computing, to +appear (2011). diff --git a/doc/pair_resquared.html b/doc/pair_resquared.html index 5d46cb66ff..63e274fb52 100644 --- a/doc/pair_resquared.html +++ b/doc/pair_resquared.html @@ -13,6 +13,8 @@

    pair_style resquared/gpu command

    +

    pair_style resquared/omp command +

    Syntax:

    pair_style resquared cutoff 
    @@ -145,22 +147,22 @@ specified in the pair_style command is used.
     


    -

    Styles with a cuda, gpu, or opt suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in this section of the manual. +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues.

    -

    These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the Making LAMMPS +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS section for more info.

    You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the -suffix command-line -switch when you invoke LAMMPS, or you can use -the suffix command in your input script. +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script.

    See this section of the manual for more instructions on how to use the accelerated styles effectively. @@ -205,8 +207,8 @@ command.

    Restrictions:

    -

    This style is part of the "asphere" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This style is part of the ASPHERE package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    This pair style requires that atoms be ellipsoids as defined by the diff --git a/doc/pair_resquared.txt b/doc/pair_resquared.txt index dfd330c722..0762b05224 100755 --- a/doc/pair_resquared.txt +++ b/doc/pair_resquared.txt @@ -8,6 +8,7 @@ pair_style resquared command :h3 pair_style resquared/gpu command :h3 +pair_style resquared/omp command :h3 [Syntax:] @@ -141,22 +142,22 @@ specified in the pair_style command is used. :line -Styles with a {cuda}, {gpu}, or {opt} suffix are functionally the same -as the corresponding style without the suffix. They have been -optimized to run faster, depending on your available hardware, as -discussed in "this section"_Section_accelerate.html of the manual. +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. The accelerated styles take the same arguments and should produce the same results, except for round-off and precision issues. -These accelerated styles are part of the "user-cuda", "gpu", and "opt" -packages respectively. They are only enabled if LAMMPS was built with -those packages. See the "Making LAMMPS"_Section_start.html#2_3 +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. You can specify the accelerated styles explicitly in your input script by including their suffix, or you can use the "-suffix command-line -switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use -the "suffix"_suffix.html command in your input script. +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. See "this section"_Section_accelerate.html of the manual for more instructions on how to use the accelerated styles effectively. @@ -201,9 +202,9 @@ command"_run_style.html. [Restrictions:] -This style is part of the "asphere" package. It is only enabled if +This style is part of the ASPHERE package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. This pair style requires that atoms be ellipsoids as defined by the "atom_style ellipsoid"_atom_style.html command. diff --git a/doc/pair_soft.html b/doc/pair_soft.html index a444b544ff..145056ece1 100644 --- a/doc/pair_soft.html +++ b/doc/pair_soft.html @@ -11,6 +11,8 @@

    pair_style soft command

    +

    pair_style soft/omp command +

    Syntax:

    pair_style soft cutoff 
    @@ -80,6 +82,28 @@ variables.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, the A coefficient and cutoff diff --git a/doc/pair_soft.txt b/doc/pair_soft.txt index d1ca823fe5..14f68d7c45 100644 --- a/doc/pair_soft.txt +++ b/doc/pair_soft.txt @@ -7,6 +7,7 @@ :line pair_style soft command :h3 +pair_style soft/omp command :h3 [Syntax:] @@ -77,6 +78,28 @@ variables. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, the A coefficient and cutoff diff --git a/doc/pair_sph_heatconduction.html b/doc/pair_sph_heatconduction.html new file mode 100644 index 0000000000..570a324b87 --- /dev/null +++ b/doc/pair_sph_heatconduction.html @@ -0,0 +1,68 @@ + +

    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    pair_style sph/heatconduction command +

    +

    Syntax: +

    +
    pair_style sph/heatconduction 
    +
    +

    Examples: +

    +
    pair_style sph/heatconduction
    +pair_coeff * * 1.0 2.4 
    +
    +

    Description: +

    +

    The sph/heatconduction style computes heat transport between SPH particles. +The transport model is the diffusion euqation for the internal energy. +

    +

    See this PDF guide to using SPH in +LAMMPS. +

    +

    The following coefficients must be defined for each pair of atoms +types via the pair_coeff command as in the examples +above. +

    +
    • D diffusion coefficient (length^2/time units) +
    • h kernel function cutoff (distance units) +
    +
    + +

    Mixing, shift, table, tail correction, restart, rRESPA info: +

    +

    This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. +

    +

    This style does not support the pair_modify +shift, table, and tail options. +

    +

    This style does not write information to binary restart +files. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. +

    +

    This style can only be used via the pair keyword of the run_style +respa command. It does not support the inner, +middle, outer keywords. +

    +

    Restrictions: +

    +

    This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Related commands: +

    +

    pair_coeff, pair_sph/rhosum +

    +

    Default: none +

    + diff --git a/doc/pair_sph_heatconduction.txt b/doc/pair_sph_heatconduction.txt new file mode 100644 index 0000000000..d25debe91b --- /dev/null +++ b/doc/pair_sph_heatconduction.txt @@ -0,0 +1,63 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +pair_style sph/heatconduction command :h3 + +[Syntax:] + +pair_style sph/heatconduction :pre + +[Examples:] + +pair_style sph/heatconduction +pair_coeff * * 1.0 2.4 :pre + +[Description:] + +The sph/heatconduction style computes heat transport between SPH particles. +The transport model is the diffusion euqation for the internal energy. + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +The following coefficients must be defined for each pair of atoms +types via the "pair_coeff"_pair_coeff.html command as in the examples +above. + +D diffusion coefficient (length^2/time units) +h kernel function cutoff (distance units) :ul + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. + +This style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +This style does not write information to "binary restart +files"_restart.html. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. + +This style can only be used via the {pair} keyword of the "run_style +respa"_run_style.html command. It does not support the {inner}, +{middle}, {outer} keywords. + +[Restrictions:] + +This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"pair_coeff"_pair_coeff.html, pair_sph/rhosum + +[Default:] none diff --git a/doc/pair_sph_idealgas.html b/doc/pair_sph_idealgas.html new file mode 100644 index 0000000000..4d45b2959c --- /dev/null +++ b/doc/pair_sph_idealgas.html @@ -0,0 +1,82 @@ + +
    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    pair_style sph/idealgas command +

    +

    Syntax: +

    +
    pair_style sph/idealgas 
    +
    +

    Examples: +

    +
    pair_style sph/idealgas
    +pair_coeff * * 1.0 2.4 
    +
    +

    Description: +

    +

    The sph/idealgas style computes pressure forces between particles +according to the ideal gas equation of state: +

    +
    +
    +

    where gamma = 1.4 is the heat capacity ratio, rho is the local +density, and e is the internal energy per unit mass. This pair style +also computes Monaghan's artificial viscosity to prevent particles +from interpentrating (Monaghan). +

    +

    See this PDF guide to using SPH in +LAMMPS. +

    +

    The following coefficients must be defined for each pair of atoms +types via the pair_coeff command as in the examples +above. +

    +
    • nu artificial viscosity (no units) +
    • h kernel function cutoff (distance units) +
    +
    + +

    Mixing, shift, table, tail correction, restart, rRESPA info: +

    +

    This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. +

    +

    This style does not support the pair_modify +shift, table, and tail options. +

    +

    This style does not write information to binary restart +files. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. +

    +

    This style can only be used via the pair keyword of the run_style +respa command. It does not support the inner, +middle, outer keywords. +

    +

    Restrictions: +

    +

    This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Related commands: +

    +

    pair_coeff, pair_sph/rhosum +

    +

    Default: none +

    +
    + + + +

    (Monaghan) Monaghan and Gingold, Journal of Computational Physics, +52, 374-389 (1983). +

    + diff --git a/doc/pair_sph_idealgas.txt b/doc/pair_sph_idealgas.txt new file mode 100644 index 0000000000..f28d26265e --- /dev/null +++ b/doc/pair_sph_idealgas.txt @@ -0,0 +1,77 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +pair_style sph/idealgas command :h3 + +[Syntax:] + +pair_style sph/idealgas :pre + +[Examples:] + +pair_style sph/idealgas +pair_coeff * * 1.0 2.4 :pre + +[Description:] + +The sph/idealgas style computes pressure forces between particles +according to the ideal gas equation of state: + +:c,image(Eqs/pair_sph_ideal.jpg) + +where gamma = 1.4 is the heat capacity ratio, rho is the local +density, and e is the internal energy per unit mass. This pair style +also computes Monaghan's artificial viscosity to prevent particles +from interpentrating "(Monaghan)"_#Monoghan. + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +The following coefficients must be defined for each pair of atoms +types via the "pair_coeff"_pair_coeff.html command as in the examples +above. + +nu artificial viscosity (no units) +h kernel function cutoff (distance units) :ul + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. + +This style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +This style does not write information to "binary restart +files"_restart.html. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. + +This style can only be used via the {pair} keyword of the "run_style +respa"_run_style.html command. It does not support the {inner}, +{middle}, {outer} keywords. + +[Restrictions:] + +This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"pair_coeff"_pair_coeff.html, pair_sph/rhosum + +[Default:] none + +:line + +:link(Monoghan) +[(Monaghan)] Monaghan and Gingold, Journal of Computational Physics, +52, 374-389 (1983). + diff --git a/doc/pair_sph_lj.html b/doc/pair_sph_lj.html new file mode 100644 index 0000000000..60cbdc67c8 --- /dev/null +++ b/doc/pair_sph_lj.html @@ -0,0 +1,86 @@ + +
    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    pair_style sph/lj command +

    +

    Syntax: +

    +
    pair_style sph/lj 
    +
    +

    Examples: +

    +
    pair_style sph/lj
    +pair_coeff * * 1.0 2.4 
    +
    +

    Description: +

    +

    The sph/lj style computes pressure forces between particles according +to the Lennard-Jones equation of state, which is computed according to +Ree's 1980 polynomial fit (Ree). The Lennard-Jones parameters +epsilon and sigma are set to unity. This pair style also computes +Monaghan's artificial viscosity to prevent particles from +interpentrating (Monaghan). +

    +

    See this PDF guide to using SPH in +LAMMPS. +

    +

    The following coefficients must be defined for each pair of atoms +types via the pair_coeff command as in the examples +above. +

    +
    • nu artificial viscosity (no units) +
    • h kernel function cutoff (distance units) +
    +
    + +

    Mixing, shift, table, tail correction, restart, rRESPA info: +

    +

    This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. +

    +

    This style does not support the pair_modify +shift, table, and tail options. +

    +

    This style does not write information to binary restart +files. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. +

    +

    This style can only be used via the pair keyword of the run_style +respa command. It does not support the inner, +middle, outer keywords. +

    +

    Restrictions: +

    +

    As noted above, the Lennard-Jones parameters epsilon and sigma are set +to unity. +

    +

    This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Related commands: +

    +

    pair_coeff, pair_sph/rhosum +

    +

    Default: none +

    +
    + + + +

    (Ree) Ree, Journal of Chemical Physics, 73, 5401 (1980). +

    + + +

    (Monaghan) Monaghan and Gingold, Journal of Computational Physics, +52, 374-389 (1983). +

    + diff --git a/doc/pair_sph_lj.txt b/doc/pair_sph_lj.txt new file mode 100644 index 0000000000..8498841131 --- /dev/null +++ b/doc/pair_sph_lj.txt @@ -0,0 +1,79 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +pair_style sph/lj command :h3 + +[Syntax:] + +pair_style sph/lj :pre + +[Examples:] + +pair_style sph/lj +pair_coeff * * 1.0 2.4 :pre + +[Description:] + +The sph/lj style computes pressure forces between particles according +to the Lennard-Jones equation of state, which is computed according to +Ree's 1980 polynomial fit "(Ree)"_#Ree. The Lennard-Jones parameters +epsilon and sigma are set to unity. This pair style also computes +Monaghan's artificial viscosity to prevent particles from +interpentrating "(Monaghan)"_#Monoghan. + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +The following coefficients must be defined for each pair of atoms +types via the "pair_coeff"_pair_coeff.html command as in the examples +above. + +nu artificial viscosity (no units) +h kernel function cutoff (distance units) :ul + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. + +This style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +This style does not write information to "binary restart +files"_restart.html. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. + +This style can only be used via the {pair} keyword of the "run_style +respa"_run_style.html command. It does not support the {inner}, +{middle}, {outer} keywords. + +[Restrictions:] + +As noted above, the Lennard-Jones parameters epsilon and sigma are set +to unity. + +This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"pair_coeff"_pair_coeff.html, pair_sph/rhosum + +[Default:] none + +:line + +:link(Ree) +[(Ree)] Ree, Journal of Chemical Physics, 73, 5401 (1980). + +:link(Monoghan) +[(Monaghan)] Monaghan and Gingold, Journal of Computational Physics, +52, 374-389 (1983). diff --git a/doc/pair_sph_rhosum.html b/doc/pair_sph_rhosum.html new file mode 100644 index 0000000000..7e3f38a91a --- /dev/null +++ b/doc/pair_sph_rhosum.html @@ -0,0 +1,69 @@ + +
    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    pair_style sph/rhosum command +

    +

    Syntax: +

    +
    pair_style sph/rhosum Nstep 
    +
    +
    • Nstep = timestep interval +
    +

    Examples: +

    +
    pair_style sph/rhosum 10
    +pair_coeff * * 2.4 
    +
    +

    Description: +

    +

    The sph/rhosum style computes the local particle mass density rho for +SPH particles by kernel function interpolation, every Nstep timesteps. +

    +

    See this PDF guide to using SPH in +LAMMPS. +

    +

    The following coefficients must be defined for each pair of atoms +types via the pair_coeff command as in the examples +above. +

    +
    • h (distance units) +
    +
    + +

    Mixing, shift, table, tail correction, restart, rRESPA info: +

    +

    This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. +

    +

    This style does not support the pair_modify +shift, table, and tail options. +

    +

    This style does not write information to binary restart +files. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. +

    +

    This style can only be used via the pair keyword of the run_style +respa command. It does not support the inner, +middle, outer keywords. +

    +

    Restrictions: +

    +

    This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Related commands: +

    +

    pair_coeff, pair_sph/taitwater +

    +

    Default: none +

    + diff --git a/doc/pair_sph_rhosum.txt b/doc/pair_sph_rhosum.txt new file mode 100644 index 0000000000..352e717f76 --- /dev/null +++ b/doc/pair_sph_rhosum.txt @@ -0,0 +1,64 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +pair_style sph/rhosum command :h3 + +[Syntax:] + +pair_style sph/rhosum Nstep :pre + +Nstep = timestep interval :ul + +[Examples:] + +pair_style sph/rhosum 10 +pair_coeff * * 2.4 :pre + +[Description:] + +The sph/rhosum style computes the local particle mass density rho for +SPH particles by kernel function interpolation, every Nstep timesteps. + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +The following coefficients must be defined for each pair of atoms +types via the "pair_coeff"_pair_coeff.html command as in the examples +above. + +h (distance units) :ul + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. + +This style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +This style does not write information to "binary restart +files"_restart.html. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. + +This style can only be used via the {pair} keyword of the "run_style +respa"_run_style.html command. It does not support the {inner}, +{middle}, {outer} keywords. + +[Restrictions:] + +This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"pair_coeff"_pair_coeff.html, pair_sph/taitwater + +[Default:] none diff --git a/doc/pair_sph_taitwater.html b/doc/pair_sph_taitwater.html new file mode 100644 index 0000000000..7c350f2f37 --- /dev/null +++ b/doc/pair_sph_taitwater.html @@ -0,0 +1,85 @@ + +
    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    pair_style sph/taitwater command +

    +

    Syntax: +

    +
    pair_style sph/taitwater 
    +
    +

    Examples: +

    +
    pair_style sph/taitwater
    +pair_coeff * * 1000.0 1430.0 1.0 2.4 
    +
    +

    Description: +

    +

    The sph/taitwater style computes pressure forces between SPH particles +according to Tait's equation of state: +

    +
    +
    +

    where gamma = 7 and B = c_0^2 rho_0 / gamma, with rho_0 being the +reference density and c_0 the reference speed of sound. +

    +

    This pair style also computes Monaghan's artificial viscosity to +prevent particles from interpentrating (Monaghan). +

    +

    See this PDF guide to using SPH in +LAMMPS. +

    +

    The following coefficients must be defined for each pair of atoms +types via the pair_coeff command as in the examples +above. +

    +
    • rho0 reference density (mass/volume units) +
    • c0 reference soundspeed (distance/time units) +
    • nu artificial viscosity (no units) +
    • h kernel function cutoff (distance units) +
    +
    + +

    Mixing, shift, table, tail correction, restart, rRESPA info: +

    +

    This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. +

    +

    This style does not support the pair_modify +shift, table, and tail options. +

    +

    This style does not write information to binary restart +files. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. +

    +

    This style can only be used via the pair keyword of the run_style +respa command. It does not support the inner, +middle, outer keywords. +

    +

    Restrictions: +

    +

    This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Related commands: +

    +

    pair_coeff, pair_sph/rhosum +

    +

    Default: none +

    +
    + + + +

    (Monaghan) Monaghan and Gingold, Journal of Computational Physics, +52, 374-389 (1983). +

    + diff --git a/doc/pair_sph_taitwater.txt b/doc/pair_sph_taitwater.txt new file mode 100644 index 0000000000..5f6fbeb5b4 --- /dev/null +++ b/doc/pair_sph_taitwater.txt @@ -0,0 +1,79 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +pair_style sph/taitwater command :h3 + +[Syntax:] + +pair_style sph/taitwater :pre + +[Examples:] + +pair_style sph/taitwater +pair_coeff * * 1000.0 1430.0 1.0 2.4 :pre + +[Description:] + +The sph/taitwater style computes pressure forces between SPH particles +according to Tait's equation of state: + +:c,image(Eqs/pair_sph_tait.jpg) + +where gamma = 7 and B = c_0^2 rho_0 / gamma, with rho_0 being the +reference density and c_0 the reference speed of sound. + +This pair style also computes Monaghan's artificial viscosity to +prevent particles from interpentrating "(Monaghan)"_#Monaghan. + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +The following coefficients must be defined for each pair of atoms +types via the "pair_coeff"_pair_coeff.html command as in the examples +above. + +rho0 reference density (mass/volume units) +c0 reference soundspeed (distance/time units) +nu artificial viscosity (no units) +h kernel function cutoff (distance units) :ul + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. + +This style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +This style does not write information to "binary restart +files"_restart.html. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. + +This style can only be used via the {pair} keyword of the "run_style +respa"_run_style.html command. It does not support the {inner}, +{middle}, {outer} keywords. + +[Restrictions:] + +This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"pair_coeff"_pair_coeff.html, pair_sph/rhosum + +[Default:] none + +:line + +:link(Monoghan) +[(Monaghan)] Monaghan and Gingold, Journal of Computational Physics, +52, 374-389 (1983). diff --git a/doc/pair_sph_taitwater_morris.html b/doc/pair_sph_taitwater_morris.html new file mode 100644 index 0000000000..4abffb4c53 --- /dev/null +++ b/doc/pair_sph_taitwater_morris.html @@ -0,0 +1,83 @@ + +
    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    pair_style sph/taitwater/morris command +

    +

    Syntax: +

    +
    pair_style sph/taitwater/morris 
    +
    +

    Examples: +

    +
    pair_style sph/taitwater/morris
    +pair_coeff * * 1000.0 1430.0 1.0 2.4 
    +
    +

    Description: +

    +

    The sph/taitwater/morris style computes pressure forces between SPH +particles according to Tait's equation of state: +

    +
    +
    +

    where gamma = 7 and B = c_0^2 rho_0 / gamma, with rho_0 being the +reference density and c_0 the reference speed of sound. +

    +

    This pair style also computes laminar viscosity (Morris). +

    +

    See this PDF guide to using SPH in +LAMMPS. +

    +

    The following coefficients must be defined for each pair of atoms +types via the pair_coeff command as in the examples +above. +

    +
    • rho0 reference density (mass/volume units) +
    • c0 reference soundspeed (distance/time units) +
    • nu dynamic viscosity (mass*distance/time units) +
    • h kernel function cutoff (distance units) +
    +
    + +

    Mixing, shift, table, tail correction, restart, rRESPA info: +

    +

    This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. +

    +

    This style does not support the pair_modify +shift, table, and tail options. +

    +

    This style does not write information to binary restart +files. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. +

    +

    This style can only be used via the pair keyword of the run_style +respa command. It does not support the inner, +middle, outer keywords. +

    +

    Restrictions: +

    +

    This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Related commands: +

    +

    pair_coeff, pair_sph/rhosum +

    +

    Default: none +

    +
    + + + +

    (Morris) Morris, Fox, Zhu, J Comp Physics, 136, 214–226 (1997). +

    + diff --git a/doc/pair_sph_taitwater_morris.txt b/doc/pair_sph_taitwater_morris.txt new file mode 100644 index 0000000000..8bedfd4991 --- /dev/null +++ b/doc/pair_sph_taitwater_morris.txt @@ -0,0 +1,79 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +pair_style sph/taitwater/morris command :h3 + +[Syntax:] + +pair_style sph/taitwater/morris :pre + +[Examples:] + +pair_style sph/taitwater/morris +pair_coeff * * 1000.0 1430.0 1.0 2.4 :pre + +[Description:] + +The sph/taitwater/morris style computes pressure forces between SPH +particles according to Tait's equation of state: + +:c,image(Eqs/pair_sph_tait.jpg) + +where gamma = 7 and B = c_0^2 rho_0 / gamma, with rho_0 being the +reference density and c_0 the reference speed of sound. + +This pair style also computes laminar viscosity "(Morris)"_#Morris. + +See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in +LAMMPS. + +The following coefficients must be defined for each pair of atoms +types via the "pair_coeff"_pair_coeff.html command as in the examples +above. + +rho0 reference density (mass/volume units) +c0 reference soundspeed (distance/time units) +nu dynamic viscosity (mass*distance/time units) +h kernel function cutoff (distance units) :ul + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. + +This style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +This style does not write information to "binary restart +files"_restart.html. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. + +This style can only be used via the {pair} keyword of the "run_style +respa"_run_style.html command. It does not support the {inner}, +{middle}, {outer} keywords. + +[Restrictions:] + +This pair style is part of the USER-SPH package. It is only enabled +if LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"pair_coeff"_pair_coeff.html, pair_sph/rhosum + +[Default:] none + +:line + +:link(Morris) +[(Morris)] Morris, Fox, Zhu, J Comp Physics, 136, 214–226 (1997). + + diff --git a/doc/pair_style.html b/doc/pair_style.html index afbdcb8a79..82720df044 100644 --- a/doc/pair_style.html +++ b/doc/pair_style.html @@ -93,6 +93,8 @@ the pair_style command, and coefficients specified by the associated
  • pair_style airebo - AIREBO potential of Stuart
  • pair_style born - Born-Mayer-Huggins potential
  • pair_style born/coul/long - Born-Mayer-Huggins with long-range Coulomb +
  • pair_style brownian - Brownian potential for Fast Lubrication Dynamics +
  • pair_style brownian/poly - Brownian potential for Fast Lubrication Dynamics with polydispersity
  • pair_style buck - Buckingham potential
  • pair_style buck/coul/cut - Buckingham with cutoff Coulomb
  • pair_style buck/coul/long - Buckingham with long-range Coulomb @@ -115,6 +117,7 @@ the pair_style command, and coefficients specified by the associated
  • pair_style gran/hooke/history - granular potential without history effects
  • pair_style hbond/dreiding/lj - DREIDING hydrogen bonding LJ potential
  • pair_style hbond/dreiding/morse - DREIDING hydrogen bonding Morse potential +
  • pair_style line/lj - LJ potential between line segments
  • pair_style lj/charmm/coul/charmm - CHARMM potential with cutoff Coulomb
  • pair_style lj/charmm/coul/charmm/implicit - CHARMM for implicit solvent
  • pair_style lj/charmm/coul/long - CHARMM with long-range Coulomb @@ -132,6 +135,9 @@ the pair_style command, and coefficients specified by the associated
  • pair_style lj/smooth - smoothed Lennard-Jones potential
  • pair_style lj96/cut - Lennard-Jones 9/6 potential
  • pair_style lubricate - hydrodynamic lubrication forces +
  • pair_style lubricate/poly - hydrodynamic lubrication forces with polydispersity +
  • pair_style lubricateU - hydrodynamic lubrication forces for Fast Lubrication Dynamics +
  • pair_style lubricateU/poly - hydrodynamic lubrication forces for Fast Lubrication with polydispersity
  • pair_style meam - modified embedded atom method (MEAM)
  • pair_style morse - Morse potential
  • pair_style peri/lps - peridynamic LPS potential @@ -144,18 +150,19 @@ the pair_style command, and coefficients specified by the associated
  • pair_style table - tabulated pair potential
  • pair_style tersoff - Tersoff 3-body potential
  • pair_style tersoff/zbl - Tersoff/ZBL 3-body potential +
  • pair_style tri/lj - LJ potential between triangles
  • pair_style yukawa - Yukawa potential
  • pair_style yukawa/colloid - screened Yukawa potential for finite-size particles

    There are also additional pair styles submitted by users which are included in the LAMMPS distribution. The list of these with links to -the individual styles are given in the pair section of this +the individual styles are given in the pair section of this page.

    There are also additional accelerated pair styles included in the LAMMPS distribution for faster performance on CPUs and GPUs. The list of these with links to the individual styles are given in the pair -section of this page. +section of this page.


    @@ -166,9 +173,9 @@ section of this page. read_restart commands.

    Some pair styles are part of specific packages. They are only enabled -if LAMMPS was built with that package. See the Making -LAMMPS section for more info on packages. The -doc pages for individual pair potentials tell if it is part of a +if LAMMPS was built with that package. See the Making +LAMMPS section for more info on packages. +The doc pages for individual pair potentials tell if it is part of a package.

    Related commands: diff --git a/doc/pair_style.txt b/doc/pair_style.txt index 5af324b41a..4b23d62068 100644 --- a/doc/pair_style.txt +++ b/doc/pair_style.txt @@ -90,6 +90,8 @@ the pair_style command, and coefficients specified by the associated "pair_style airebo"_pair_airebo.html - AIREBO potential of Stuart "pair_style born"_pair_born.html - Born-Mayer-Huggins potential "pair_style born/coul/long"_pair_born.html - Born-Mayer-Huggins with long-range Coulomb +"pair_style brownian"_pair_brownian.html - Brownian potential for Fast Lubrication Dynamics +"pair_style brownian/poly"_pair_brownian.html - Brownian potential for Fast Lubrication Dynamics with polydispersity "pair_style buck"_pair_buck.html - Buckingham potential "pair_style buck/coul/cut"_pair_buck.html - Buckingham with cutoff Coulomb "pair_style buck/coul/long"_pair_buck.html - Buckingham with long-range Coulomb @@ -112,6 +114,7 @@ the pair_style command, and coefficients specified by the associated "pair_style gran/hooke/history"_pair_gran.html - granular potential without history effects "pair_style hbond/dreiding/lj"_pair_hbond_dreiding.html - DREIDING hydrogen bonding LJ potential "pair_style hbond/dreiding/morse"_pair_hbond_dreiding.html - DREIDING hydrogen bonding Morse potential +"pair_style line/lj"_pair_line_lj.html - LJ potential between line segments "pair_style lj/charmm/coul/charmm"_pair_charmm.html - CHARMM potential with cutoff Coulomb "pair_style lj/charmm/coul/charmm/implicit"_pair_charmm.html - CHARMM for implicit solvent "pair_style lj/charmm/coul/long"_pair_charmm.html - CHARMM with long-range Coulomb @@ -129,6 +132,9 @@ the pair_style command, and coefficients specified by the associated "pair_style lj/smooth"_pair_lj_smooth.html - smoothed Lennard-Jones potential "pair_style lj96/cut"_pair_lj96.html - Lennard-Jones 9/6 potential "pair_style lubricate"_pair_lubricate.html - hydrodynamic lubrication forces +"pair_style lubricate/poly"_pair_lubricate.html - hydrodynamic lubrication forces with polydispersity +"pair_style lubricateU"_pair_lubricateU.html - hydrodynamic lubrication forces for Fast Lubrication Dynamics +"pair_style lubricateU/poly"_pair_lubricateU.html - hydrodynamic lubrication forces for Fast Lubrication with polydispersity "pair_style meam"_pair_meam.html - modified embedded atom method (MEAM) "pair_style morse"_pair_morse.html - Morse potential "pair_style peri/lps"_pair_peri.html - peridynamic LPS potential @@ -141,18 +147,19 @@ the pair_style command, and coefficients specified by the associated "pair_style table"_pair_table.html - tabulated pair potential "pair_style tersoff"_pair_tersoff.html - Tersoff 3-body potential "pair_style tersoff/zbl"_pair_tersoff_zbl.html - Tersoff/ZBL 3-body potential +"pair_style tri/lj"_pair_tri_lj.html - LJ potential between triangles "pair_style yukawa"_pair_yukawa.html - Yukawa potential "pair_style yukawa/colloid"_pair_yukawa_colloid.html - screened Yukawa potential for finite-size particles :ul There are also additional pair styles submitted by users which are included in the LAMMPS distribution. The list of these with links to the individual styles are given in the pair section of "this -page"_Section_commands.html#3_5. +page"_Section_commands.html#cmd_5. There are also additional accelerated pair styles included in the LAMMPS distribution for faster performance on CPUs and GPUs. The list of these with links to the individual styles are given in the pair -section of "this page"_Section_commands.html#3_5. +section of "this page"_Section_commands.html#cmd_5. :line @@ -164,8 +171,8 @@ This command must be used before any coefficients are set by the Some pair styles are part of specific packages. They are only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info on packages. The -doc pages for individual pair potentials tell if it is part of a +LAMMPS"_Section_start.html#start_3 section for more info on packages. +The doc pages for individual pair potentials tell if it is part of a package. [Related commands:] diff --git a/doc/pair_sw.html b/doc/pair_sw.html index 0a15874ba0..6ea6f91277 100644 --- a/doc/pair_sw.html +++ b/doc/pair_sw.html @@ -11,6 +11,10 @@

    pair_style sw command

    +

    pair_style sw/cuda command +

    +

    pair_style sw/omp command +

    Syntax:

    pair_style sw 
    @@ -137,6 +141,28 @@ taken from the ij and ik pairs (sigma, a, gamma)
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, where types I and J correspond to @@ -159,9 +185,9 @@ script that reads a restart file.

    Restrictions:

    -

    This pair style is part of the "manybody" package. It is only enabled +

    This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default). See -the Making LAMMPS section for more info. +the Making LAMMPS section for more info.

    This pair style requires the newton setting to be "on" for pair interactions. diff --git a/doc/pair_sw.txt b/doc/pair_sw.txt index 28e06419c4..6395470c8a 100644 --- a/doc/pair_sw.txt +++ b/doc/pair_sw.txt @@ -7,6 +7,8 @@ :line pair_style sw command :h3 +pair_style sw/cuda command :h3 +pair_style sw/omp command :h3 [Syntax:] @@ -134,6 +136,28 @@ taken from the ij and ik pairs (sigma, a, gamma) :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, where types I and J correspond to @@ -156,9 +180,9 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This pair style is part of the "manybody" package. It is only enabled +This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default). See -the "Making LAMMPS"_Section_start.html#2_3 section for more info. +the "Making LAMMPS"_Section_start.html#start_3 section for more info. This pair style requires the "newton"_newton.html setting to be "on" for pair interactions. diff --git a/doc/pair_table.html b/doc/pair_table.html index 0d96816e54..6b59e441bc 100644 --- a/doc/pair_table.html +++ b/doc/pair_table.html @@ -11,6 +11,8 @@

    pair_style table command

    +

    pair_style table/omp command +

    Syntax:

    pair_style table style N 
    @@ -176,6 +178,28 @@ one that matches the specified keyword.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    This pair style does not support mixing. Thus, coefficients for all diff --git a/doc/pair_table.txt b/doc/pair_table.txt index a83961106a..64bdb31f46 100644 --- a/doc/pair_table.txt +++ b/doc/pair_table.txt @@ -7,6 +7,7 @@ :line pair_style table command :h3 +pair_style table/omp command :h3 [Syntax:] @@ -173,6 +174,28 @@ one that matches the specified keyword. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: This pair style does not support mixing. Thus, coefficients for all diff --git a/doc/pair_tersoff.html b/doc/pair_tersoff.html index f3ac21bf29..9686352730 100644 --- a/doc/pair_tersoff.html +++ b/doc/pair_tersoff.html @@ -15,6 +15,10 @@

    pair_style tersoff 
     
    +
    pair_style tersoff/cuda 
    +
    +
    pair_style tersoff/omp 
    +

    Examples:

    pair_style tersoff
    @@ -131,7 +135,7 @@ equivalent form for alloys, which we will refer to as Tersoff_2
     potential (Tersoff_2).
     

    LAMMPS parameter values for Tersoff_2 can be obtained as follows: -gamma = 1, just as for Tersoff_1, but now lambda3 = 0 and the value of +gamma_ijk = omega_ik, lambda3 = 0 and the value of m has no effect. The parameters for species i and j can be calculated using the Tersoff_2 mixing rules:

    @@ -158,6 +162,28 @@ defined in various papers.


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, where types I and J correspond to @@ -180,9 +206,9 @@ script that reads a restart file.

    Restrictions:

    -

    This pair style is part of the "manybody" package. It is only enabled +

    This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default). See -the Making LAMMPS section for more info. +the Making LAMMPS section for more info.

    This pair style requires the newton setting to be "on" for pair interactions. diff --git a/doc/pair_tersoff.txt b/doc/pair_tersoff.txt index 600eee4ac1..5d23f009f3 100644 --- a/doc/pair_tersoff.txt +++ b/doc/pair_tersoff.txt @@ -11,6 +11,8 @@ pair_style tersoff command :h3 [Syntax:] pair_style tersoff :pre +pair_style tersoff/cuda :pre +pair_style tersoff/omp :pre [Examples:] @@ -128,7 +130,7 @@ equivalent form for alloys, which we will refer to as Tersoff_2 potential "(Tersoff_2)"_#Tersoff_2. LAMMPS parameter values for Tersoff_2 can be obtained as follows: -gamma = 1, just as for Tersoff_1, but now lambda3 = 0 and the value of +gamma_ijk = omega_ik, lambda3 = 0 and the value of m has no effect. The parameters for species i and j can be calculated using the Tersoff_2 mixing rules: @@ -155,6 +157,28 @@ defined in various papers. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, where types I and J correspond to @@ -177,9 +201,9 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This pair style is part of the "manybody" package. It is only enabled +This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default). See -the "Making LAMMPS"_Section_start.html#2_3 section for more info. +the "Making LAMMPS"_Section_start.html#start_3 section for more info. This pair style requires the "newton"_newton.html setting to be "on" for pair interactions. diff --git a/doc/pair_tersoff_zbl.html b/doc/pair_tersoff_zbl.html index 8d3966e16e..be760ba0de 100644 --- a/doc/pair_tersoff_zbl.html +++ b/doc/pair_tersoff_zbl.html @@ -11,6 +11,8 @@

    pair_style tersoff/zbl command

    +

    pair_style tersoff/zbl/omp command +

    Syntax:

    pair_style tersoff/zbl 
    @@ -178,6 +180,28 @@ providing the base ZBL implementation.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, where types I and J correspond to @@ -200,9 +224,9 @@ script that reads a restart file.

    Restrictions:

    -

    This pair style is part of the "manybody" package. It is only enabled +

    This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default). See -the Making LAMMPS section for more info. +the Making LAMMPS section for more info.

    This pair style requires the newton setting to be "on" for pair interactions. diff --git a/doc/pair_tersoff_zbl.txt b/doc/pair_tersoff_zbl.txt index 349c5cdf74..bf69d712bf 100644 --- a/doc/pair_tersoff_zbl.txt +++ b/doc/pair_tersoff_zbl.txt @@ -7,6 +7,7 @@ :line pair_style tersoff/zbl command :h3 +pair_style tersoff/zbl/omp command :h3 [Syntax:] @@ -175,6 +176,28 @@ providing the base ZBL implementation. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, where types I and J correspond to @@ -197,9 +220,9 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This pair style is part of the "manybody" package. It is only enabled +This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package (which it is by default). See -the "Making LAMMPS"_Section_start.html#2_3 section for more info. +the "Making LAMMPS"_Section_start.html#start_3 section for more info. This pair style requires the "newton"_newton.html setting to be "on" for pair interactions. diff --git a/doc/pair_tri_lj.html b/doc/pair_tri_lj.html new file mode 100644 index 0000000000..76b4455fe7 --- /dev/null +++ b/doc/pair_tri_lj.html @@ -0,0 +1,120 @@ + +

    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    pair_style tri/lj command +

    +

    Syntax: +

    +
    pair_style tri/lj cutoff 
    +
    +

    cutoff = global cutoff for interactions (distance units) +

    +

    Examples: +

    +
    pair_style tri/lj 3.0
    +pair_coeff * * 1.0 1.0
    +pair_coeff 1 1 1.0 1.5 2.5 
    +
    +

    Description: +

    +

    Style tri/lj treats particles which are triangles as a set of small +spherical particles that tile the triangle surface as explained below. +Interactions between two triangles, each with N1 and N2 spherical +particles, are calculated as the pairwise sum of N1*N2 Lennard-Jones +interactions. Interactions between a triangle with N spherical +particles and a point particle are treated as the pairwise sum of N +Lennard-Jones interactions. See the pair_style lj/cut +doc page for the definition of Lennard-Jones interactions. +

    +

    The cutoff distance for an interaction between 2 triangles, or between +a triangle and a point particle, is calculated from the position of +the triangle (its centroid), not between pairs of individual spheres +comprising the triangle. Thus an interaction is either calculated in +its entirety or not at all. +

    +

    The set of non-overlapping spherical particles that represent a +triangle, for purposes of this pair style, are generated in the +following manner. Assume the triangle is of type I, and sigma_II has +been specified. We want a set of spheres with centers in the plane of +the triangle, none of them larger in diameter than sigma_II, which +completely cover the triangle's area, but with minimial overlap and a +minimal total number of spheres. This is done in a recursive manner. +Place a sphere at the centroid of the original triangle. Calculate +what diameter it must have to just cover all 3 corner points of the +triangle. If that diameter is equal to or smaller than sigma_II, then +include a sphere of the calculated diameter in the set of covering +spheres. It the diameter is larger than sigma_II, then split the +triangle into 2 triangles by bisecting its longest side. Repeat the +process on each sub-triangle, recursing as far as needed to generate a +set of covering spheres. When finished, the original criteria are +met, and the set of covering spheres shoule be near minimal in number +and overlap, at least for input triangles with a reasonable +aspect-ratio. +

    +

    The LJ interaction between 2 spheres on different triangles of types +I,J is computed with an arithmetic mixing of the sigma values of the 2 +spheres and using the specified epsilon value for I,J atom types. +Note that because the sigma values for triangles spheres is computed +using only sigma_II values, specific to the triangles's type, this +means that any specified sigma_IJ values (for I != J) are effectively +ignored. +

    +

    For style tri/lj, the following coefficients must be defined for +each pair of atoms types via the pair_coeff command +as in the examples above, or in the data file or restart files read by +the read_data or read_restart +commands: +

    +
    • epsilon (energy units) +
    • sigma (distance units) +
    • cutoff (distance units) +
    +

    The last coefficient is optional. If not specified, the global cutoff +is used. +

    +
    + +

    Mixing, shift, table, tail correction, restart, rRESPA info: +

    +

    For atom type pairs I,J and I != J, the epsilon and sigma coefficients +and cutoff distance for all of this pair style can be mixed. The +default mix value is geometric. See the "pair_modify" command for +details. +

    +

    This pair style does not support the pair_modify +shift, table, and tail options. +

    +

    This pair style does not write its information to binary restart +files. +

    +

    This pair style can only be used via the pair keyword of the +run_style respa command. It does not support the +inner, middle, outer keywords. +

    +
    + +

    Restrictions: +

    +

    This style is part of the ASPHERE package. It is only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Defining particles to be triangles so they participate in tri/tri or +tri/particle interactions requires the use the atom_style +tri command. +

    +

    Related commands: +

    +

    pair_coeff, pair_style line/lj +

    +

    Default: none +

    + diff --git a/doc/pair_tri_lj.txt b/doc/pair_tri_lj.txt new file mode 100644 index 0000000000..cfc64c52fd --- /dev/null +++ b/doc/pair_tri_lj.txt @@ -0,0 +1,115 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +pair_style tri/lj command :h3 + +[Syntax:] + +pair_style tri/lj cutoff :pre + +cutoff = global cutoff for interactions (distance units) + +[Examples:] + +pair_style tri/lj 3.0 +pair_coeff * * 1.0 1.0 +pair_coeff 1 1 1.0 1.5 2.5 :pre + +[Description:] + +Style {tri/lj} treats particles which are triangles as a set of small +spherical particles that tile the triangle surface as explained below. +Interactions between two triangles, each with N1 and N2 spherical +particles, are calculated as the pairwise sum of N1*N2 Lennard-Jones +interactions. Interactions between a triangle with N spherical +particles and a point particle are treated as the pairwise sum of N +Lennard-Jones interactions. See the "pair_style lj/cut"_pair_lj.html +doc page for the definition of Lennard-Jones interactions. + +The cutoff distance for an interaction between 2 triangles, or between +a triangle and a point particle, is calculated from the position of +the triangle (its centroid), not between pairs of individual spheres +comprising the triangle. Thus an interaction is either calculated in +its entirety or not at all. + +The set of non-overlapping spherical particles that represent a +triangle, for purposes of this pair style, are generated in the +following manner. Assume the triangle is of type I, and sigma_II has +been specified. We want a set of spheres with centers in the plane of +the triangle, none of them larger in diameter than sigma_II, which +completely cover the triangle's area, but with minimial overlap and a +minimal total number of spheres. This is done in a recursive manner. +Place a sphere at the centroid of the original triangle. Calculate +what diameter it must have to just cover all 3 corner points of the +triangle. If that diameter is equal to or smaller than sigma_II, then +include a sphere of the calculated diameter in the set of covering +spheres. It the diameter is larger than sigma_II, then split the +triangle into 2 triangles by bisecting its longest side. Repeat the +process on each sub-triangle, recursing as far as needed to generate a +set of covering spheres. When finished, the original criteria are +met, and the set of covering spheres shoule be near minimal in number +and overlap, at least for input triangles with a reasonable +aspect-ratio. + +The LJ interaction between 2 spheres on different triangles of types +I,J is computed with an arithmetic mixing of the sigma values of the 2 +spheres and using the specified epsilon value for I,J atom types. +Note that because the sigma values for triangles spheres is computed +using only sigma_II values, specific to the triangles's type, this +means that any specified sigma_IJ values (for I != J) are effectively +ignored. + +For style {tri/lj}, the following coefficients must be defined for +each pair of atoms types via the "pair_coeff"_pair_coeff.html command +as in the examples above, or in the data file or restart files read by +the "read_data"_read_data.html or "read_restart"_read_restart.html +commands: + +epsilon (energy units) +sigma (distance units) +cutoff (distance units) :ul + +The last coefficient is optional. If not specified, the global cutoff +is used. + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +For atom type pairs I,J and I != J, the epsilon and sigma coefficients +and cutoff distance for all of this pair style can be mixed. The +default mix value is {geometric}. See the "pair_modify" command for +details. + +This pair style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +This pair style does not write its information to "binary restart +files"_restart.html. + +This pair style can only be used via the {pair} keyword of the +"run_style respa"_run_style.html command. It does not support the +{inner}, {middle}, {outer} keywords. + +:line + +[Restrictions:] + +This style is part of the ASPHERE package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#2_3 section for more info. + +Defining particles to be triangles so they participate in tri/tri or +tri/particle interactions requires the use the "atom_style +tri"_atom_style.html command. + +[Related commands:] + +"pair_coeff"_pair_coeff.html, "pair_style line/lj"_pair_line_lj.html + +[Default:] none diff --git a/doc/pair_yukawa.html b/doc/pair_yukawa.html index 660dfdfd64..51cdc757c4 100644 --- a/doc/pair_yukawa.html +++ b/doc/pair_yukawa.html @@ -11,6 +11,8 @@

    pair_style yukawa command

    +

    pair_style yukawa/omp command +

    Syntax:

    pair_style yukawa kappa cutoff 
    @@ -46,6 +48,28 @@ cutoff is used.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, the A coefficient and cutoff diff --git a/doc/pair_yukawa.txt b/doc/pair_yukawa.txt index 6828af28ca..41b72a83a6 100644 --- a/doc/pair_yukawa.txt +++ b/doc/pair_yukawa.txt @@ -7,6 +7,7 @@ :line pair_style yukawa command :h3 +pair_style yukawa/omp command :h3 [Syntax:] @@ -43,6 +44,28 @@ cutoff is used. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, the A coefficient and cutoff diff --git a/doc/pair_yukawa_colloid.html b/doc/pair_yukawa_colloid.html index 698450f125..fcb543318d 100644 --- a/doc/pair_yukawa_colloid.html +++ b/doc/pair_yukawa_colloid.html @@ -11,6 +11,8 @@

    pair_style yukawa/colloid command

    +

    pair_style yukawa/colloid/omp command +

    Syntax:

    pair_style yukawa/colloid kappa cutoff 
    @@ -77,6 +79,28 @@ yukawa/colloid cutoff is used.
     


    +

    Styles with a cuda, gpu, omp, or opt suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in this section of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. +

    +

    These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the Making LAMMPS +section for more info. +

    +

    You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the -suffix command-line +switch when you invoke LAMMPS, or you can +use the suffix command in your input script. +

    +

    See this section of the manual for more +instructions on how to use the accelerated styles effectively. +

    +
    +

    Mixing, shift, table, tail correction, restart, rRESPA info:

    For atom type pairs I,J and I != J, the A coefficient and cutoff @@ -106,8 +130,8 @@ to be specified in an input script that reads a restart file.

    Restrictions:

    -

    This style is part of the "colloid" package. It is only enabled if -LAMMPS was built with that package. See the Making +

    This style is part of the COLLOID package. It is only enabled if +LAMMPS was built with that package. See the Making LAMMPS section for more info.

    This pair style requires that atoms be finite-size spheres with a diff --git a/doc/pair_yukawa_colloid.txt b/doc/pair_yukawa_colloid.txt index 5e7f9ac84f..fc85fe3dba 100644 --- a/doc/pair_yukawa_colloid.txt +++ b/doc/pair_yukawa_colloid.txt @@ -7,6 +7,7 @@ :line pair_style yukawa/colloid command :h3 +pair_style yukawa/colloid/omp command :h3 [Syntax:] @@ -74,6 +75,28 @@ yukawa/colloid cutoff is used. :line +Styles with a {cuda}, {gpu}, {omp}, or {opt} suffix are functionally +the same as the corresponding style without the suffix. They have +been optimized to run faster, depending on your available hardware, +as discussed in "this section"_Section_accelerate.html of the manual. +The accelerated styles take the same arguments and should produce the +same results, except for round-off and precision issues. + +These accelerated styles are part of the USER-CUDA, GPU, USER-OMP and OPT +packages, respectively. They are only enabled if LAMMPS was built with +those packages. See the "Making LAMMPS"_Section_start.html#start_3 +section for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the "-suffix command-line +switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can +use the "suffix"_suffix.html command in your input script. + +See "this section"_Section_accelerate.html of the manual for more +instructions on how to use the accelerated styles effectively. + +:line + [Mixing, shift, table, tail correction, restart, rRESPA info]: For atom type pairs I,J and I != J, the A coefficient and cutoff @@ -103,9 +126,9 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This style is part of the "colloid" package. It is only enabled if +This style is part of the COLLOID package. It is only enabled if LAMMPS was built with that package. See the "Making -LAMMPS"_Section_start.html#2_3 section for more info. +LAMMPS"_Section_start.html#start_3 section for more info. This pair style requires that atoms be finite-size spheres with a diameter, as defined by the "atom_style sphere"_atom_style.html diff --git a/doc/prd.html b/doc/prd.html index 88006d1973..270a48c0a6 100644 --- a/doc/prd.html +++ b/doc/prd.html @@ -71,13 +71,14 @@ event to occur.

    Each replica runs on a partition of one or more processors. Processor partitions are defined at run-time using the -partition command-line -switch; see this section of the manual. Note -that if you have MPI installed, you can run a multi-replica simulation -with more replicas (partitions) than you have physical processors, e.g -you can run a 10-replica simulation on one or two processors. For -PRD, this makes little sense, since this offers no effective parallel -speed-up in searching for infrequent events. See this -section of the manual for further discussion. +switch; see this section of the manual. +Note that if you have MPI installed, you can run a multi-replica +simulation with more replicas (partitions) than you have physical +processors, e.g you can run a 10-replica simulation on one or two +processors. For PRD, this makes little sense, since this offers no +effective parallel speed-up in searching for infrequent events. See +this section of the manual for further +discussion.

    When a PRD simulation is performed, it is assumed that each replica is running the same model, though LAMMPS does not check for this. @@ -269,9 +270,9 @@ value for the first event in the new run will be slightly off.

    Restrictions:

    -

    This command can only be used if LAMMPS was built with the "replica" -package. See the Making LAMMPS section for -more info on packages. +

    This command can only be used if LAMMPS was built with the REPLICA +package. See the Making LAMMPS section +for more info on packages.

    N and t_correlate settings must be integer multiples of t_event. diff --git a/doc/prd.txt b/doc/prd.txt index 8016d5c29b..33130c17b6 100644 --- a/doc/prd.txt +++ b/doc/prd.txt @@ -58,13 +58,14 @@ event to occur. Each replica runs on a partition of one or more processors. Processor partitions are defined at run-time using the -partition command-line -switch; see "this section"_Section_start.html#2_6 of the manual. Note -that if you have MPI installed, you can run a multi-replica simulation -with more replicas (partitions) than you have physical processors, e.g -you can run a 10-replica simulation on one or two processors. For -PRD, this makes little sense, since this offers no effective parallel -speed-up in searching for infrequent events. See "this -section"_Section_howto.html#4_5 of the manual for further discussion. +switch; see "this section"_Section_start.html#start_6 of the manual. +Note that if you have MPI installed, you can run a multi-replica +simulation with more replicas (partitions) than you have physical +processors, e.g you can run a 10-replica simulation on one or two +processors. For PRD, this makes little sense, since this offers no +effective parallel speed-up in searching for infrequent events. See +"this section"_Section_howto.html#howto_5 of the manual for further +discussion. When a PRD simulation is performed, it is assumed that each replica is running the same model, though LAMMPS does not check for this. @@ -256,9 +257,9 @@ value for the first event in the new run will be slightly off. [Restrictions:] -This command can only be used if LAMMPS was built with the "replica" -package. See the "Making LAMMPS"_Section_start.html#2_3 section for -more info on packages. +This command can only be used if LAMMPS was built with the REPLICA +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. {N} and {t_correlate} settings must be integer multiples of {t_event}. diff --git a/doc/processors.html b/doc/processors.html index e62e18fde8..4839bee67b 100644 --- a/doc/processors.html +++ b/doc/processors.html @@ -44,9 +44,9 @@ simulation.

    The product of Px, Py, Pz must equal P, the total # of processors LAMMPS is running on. For a 2d simulation, Pz must equal 1. If multiple partitions are being used then P is the number -of processors in this partition; see this -section for an explanation of the -partition -command-line switch. +of processors in this partition; see this +section for an explanation of the +-partition command-line switch.

    Note that if you run on a large, prime number of processors P, then a grid such as 1 x P x 1 will be required, which may incur extra diff --git a/doc/processors.txt b/doc/processors.txt index 01a87dd40e..ae5b89f8cb 100644 --- a/doc/processors.txt +++ b/doc/processors.txt @@ -42,8 +42,8 @@ The product of Px, Py, Pz must equal P, the total # of processors LAMMPS is running on. For a "2d simulation"_dimension.html, Pz must equal 1. If multiple partitions are being used then P is the number of processors in this partition; see "this -section"_Section_start.html#2_6 for an explanation of the -partition -command-line switch. +section"_Section_start.html#start_6 for an explanation of the +-partition command-line switch. Note that if you run on a large, prime number of processors P, then a grid such as 1 x P x 1 will be required, which may incur extra diff --git a/doc/read_data.html b/doc/read_data.html index 882e5ed1c5..fcf68f4680 100644 --- a/doc/read_data.html +++ b/doc/read_data.html @@ -80,6 +80,8 @@ is different than the default.

  • improper types = # of improper types in system
  • extra bond per atom = leave space for this many new bonds per atom
  • ellipsoids = # of ellipsoids in system +
  • lines = # of line segments in system +
  • triangles = # of triangles in system
  • xlo xhi = simulation box boundaries in x dimension
  • ylo yhi = simulation box boundaries in y dimension
  • zlo zhi = simulation box boundaries in z dimension @@ -109,7 +111,7 @@ limitation, since if the maximum tilt factor is 5 (as in this example), then configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all geometrically equivalent.

    -

    See this section of the doc pages for a +

    See this section of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, and how to transform these parameters to and from other commonly used triclinic representations. @@ -156,16 +158,19 @@ added to the system when a simulation runs, e.g. by using the setting is only used with atom_style -ellipsoid and specifies how many of the atoms are -finite-size ellipsoids; the remainder are point particles. See the -discussion of ellipseflag and the Ellipsoids section below. +

    The "ellipsoids" and "lines" and "triangles" settings are only used +with atom_style ellipsoid or line or tri and +specifies how many of the atoms are finite-size ellipsoids or lines or +triangles; the remainder are point particles. See the discussion of +ellipsoidflag and the Ellipsoids section below. See the discussion +of lineflag and the Lines section below. See the discussion of +triangleflag and the Triangles section below.


    These are the section keywords for the body of the file.

    -
    • Atoms, Velocities, Ellipsoids, Masses = atom-property sections +
      • Atoms, Velocities, Masses, Ellipsoids, Lines, Triangles = atom-property sections
      • Bonds, Angles, Dihedrals, Impropers = molecular topology sections
      • Pair Coeffs, Bond Coeffs, Angle Coeffs, Dihedral Coeffs, Improper Coeffs = force field sections
      • BondBond Coeffs, BondAngle Coeffs, MiddleBondTorsion Coeffs, EndBondTorsion Coeffs, AngleTorsion Coeffs, AngleAngleTorsion Coeffs, BondBond13 Coeffs, AngleAngle Coeffs = class 2 force field sections @@ -290,9 +295,12 @@ of analysis. electron atom-ID atom-type q spin eradius x y z ellipsoid atom-ID atom-type ellipsoidflag density x y z full atom-ID molecule-ID atom-type q x y z +line atom-ID molecule-ID atom-type lineflag density x y z +meso atom-ID atom-type rho e cv x y z molecular atom-ID molecule-ID atom-type x y z peri atom-ID atom-type volume density x y z sphere atom-ID atom-type diameter density x y z +tri atom-ID molecule-ID atom-type triangleflag density x y z wavepacket atom-ID atom-type charge spin eradius etag cs_re cs_im x y z hybrid atom-ID atom-type x y z sub-style1 sub-style2 ... @@ -305,10 +313,15 @@ of analysis.
      • q = charge on atom (charge units)
      • diameter = diameter of spherical atom (distance units)
      • ellipsoidflag = 1 for ellipsoidal particles, 0 for point particles -
      • density = density of atom (mass/distance^3 units) +
      • lineflag = 1 for line segment particles, 0 for point particles +
      • triangleflag = 1 for triangular particles, 0 for point particles +
      • density = density of particle (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle)
      • volume = volume of atom (distance^3 units)
      • x,y,z = coordinates of atom
      • mux,muy,muz = components of dipole moment of atom (dipole units) +
      • rho = density (need units) for SPH particles +
      • e = energy (need units) for SPH particles +
      • cv = heat capacity (need units) for SPH particles
      • spin = electron spin (+1/-1), 0 = nuclei, 2 = fixed-core, 3 = pseudo-cores (i.e. ECP)
      • eradius = electron radius (or fixed-core radius)
      • etag = integer ID of electron that each wavepacket belongs to @@ -338,9 +351,13 @@ keep track of molecule assignments.

        The diameter specifies the size of a finite-size spherical particle. It can be set to 0.0, which means that atom is a point particle.

        -

        The ellipseflag determines whether the particle is a finite-size -ellipsoid of finite size, or a point particle. Additional attributes -must be defined for each ellipsoid in the Ellipsoids section. +

        The ellipsoidflag, lineflag, and triangleflag determine whether the +particle is a finite-size ellipsoid or line or triangle of finite +size, or a point particle. Additional attributes must be defined for +each ellipsoid in the Ellipsoids section. Additional attributes +must be defined for each line in the Lines section. Additional +attributes must be defined for each triangle in the Triangles +section.

        Some pair styles and fixes and computes that operate on finite-size particles allow for a mixture of finite-size and point particles. See @@ -348,8 +365,10 @@ the doc pages of individual commands for details.

        The density is used in conjunction with the particle volume for finite-size particles to set the mass of the particle as mass = -density * volume. If the volume is 0.0, meaning a point particle, -then the density value is used as the mass. +density * volume. In this context, volume can be a 3d quantity (for +spheres or ellipsoids), a 2d quantity (for triangles), or a 1d +quantity (for line segments). If the volume is 0.0, meaning a point +particle, then the density value is used as the mass.

        For atom_style hybrid, following the 5 initial values (ID,type,x,y,z), specific values for each sub-style must be listed. The order of the @@ -526,15 +545,12 @@ section must be integers (1, not 1.0).

      • line syntax: atom-ID shapex shapey shapez quatw quati quatj quatk -
          atom-ID = ID of atom which is an ellipsoid
        +
      • atom-ID = ID of atom which is an ellipsoid shapex,shapey,shapez = 3 diameters of ellipsoid (distance units) quatw,quati,quatj,quatk = quaternion components for orientation of atom -type = bond type (1-Nbondtype) - atom1,atom2 = IDs of 1st,2nd atoms in bond -
      • -
      • example: +example: -
          12 3 17 29 
        +
          12 1 2 1 1 0 0 0 
         
      @@ -626,6 +642,37 @@ values in this section must be integers (1, not 1.0).


      +

      Lines section: +

      +
      • one line per line segment + +
      • line syntax: atom-ID x1 y1 x2 y2 + +
      • atom-ID = ID of atom which is a line segment + x1,y1 = 1st end point + x2,y2 = 2nd end point +example: + +
          12 1.0 0.0 2.0 0.0 
        +
        + +
      +

      The Lines section must appear if atom_style line +is used and any atoms are listed in the Atoms section with a +lineflag = 1. The number of lines should be specified in the header +section via the "lines" keyword. +

      +

      The 2 end points are the end points of the line segment. The ordering +of the 2 points should be such that using a right-hand rule to cross +the line segment with a unit vector in the +z direction, gives an +"outward" normal vector perpendicular to the line segment. +I.e. normal = (c2-c1) x (0,0,1). This orientation may be important +for defining some interactions. +

      +

      The Lines section must appear after the Atoms section. +

      +
      +

      Masses section:

      • one line per atom type @@ -684,6 +731,37 @@ script.


        +

        Triangles section: +

        +
        • one line per triangle + +
        • line syntax: atom-ID x1 y1 x2 y2 + +
        • atom-ID = ID of atom which is a line segment + x1,y1,z1 = 1st corner point + x2,y2,z2 = 2nd corner point + x3,y3,z3 = 3rd corner point +example: + +
            12 0.0 0.0 0.0 2.0 0.0 1.0 0.0 2.0 1.0 
          +
          + +
        +

        The Triangles section must appear if atom_style +tri is used and any atoms are listed in the Atoms +section with a triangleflag = 1. The number of lines should be +specified in the header section via the "triangles" keyword. +

        +

        The 3 corner points are the corner points of the triangle. The +ordering of the 3 points should be such that using a right-hand rule +to go from point1 to point2 to point3 gives an "outward" normal vector +to the face of the triangle. I.e. normal = (c2-c1) x (c3-c1). This +orientation may be important for defining some interactions. +

        +

        The Triangles section must appear after the Atoms section. +

        +
        +

        Velocities section:

        • one line per atom @@ -721,8 +799,8 @@ Wz are in units of angular velocity (radians/time).

          Restrictions:

          To read gzipped data files, you must compile LAMMPS with the --DLAMMPS_GZIP option - see the Making LAMMPS -section of the documentation. +-DLAMMPS_GZIP option - see the Making +LAMMPS section of the documentation.

          Related commands:

          diff --git a/doc/read_data.txt b/doc/read_data.txt index be693515c2..b9fcccd0f6 100644 --- a/doc/read_data.txt +++ b/doc/read_data.txt @@ -77,6 +77,8 @@ is different than the default. {improper types} = # of improper types in system {extra bond per atom} = leave space for this many new bonds per atom {ellipsoids} = # of ellipsoids in system +{lines} = # of line segments in system +{triangles} = # of triangles in system {xlo xhi} = simulation box boundaries in x dimension {ylo yhi} = simulation box boundaries in y dimension {zlo zhi} = simulation box boundaries in z dimension @@ -106,7 +108,7 @@ limitation, since if the maximum tilt factor is 5 (as in this example), then configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all geometrically equivalent. -See "this section"_Section_howto.html#4_12 of the doc pages for a +See "this section"_Section_howto.html#howto_12 of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, and how to transform these parameters to and from other commonly used triclinic representations. @@ -153,16 +155,19 @@ added to the system when a simulation runs, e.g. by using the "fix bond/create"_fix_bond_create.html command. This will pre-allocate space in LAMMPS data structures for storing the new bonds. -The "ellipsoids" setting is only used with atom_style -ellipsoid"_atom_style.html and specifies how many of the atoms are -finite-size ellipsoids; the remainder are point particles. See the -discussion of ellipseflag and the {Ellipsoids} section below. +The "ellipsoids" and "lines" and "triangles" settings are only used +with "atom_style ellipsoid or line or tri"_atom_style.html and +specifies how many of the atoms are finite-size ellipsoids or lines or +triangles; the remainder are point particles. See the discussion of +ellipsoidflag and the {Ellipsoids} section below. See the discussion +of lineflag and the {Lines} section below. See the discussion of +triangleflag and the {Triangles} section below. :line These are the section keywords for the body of the file. -{Atoms, Velocities, Ellipsoids, Masses} = atom-property sections +{Atoms, Velocities, Masses, Ellipsoids, Lines, Triangles} = atom-property sections {Bonds, Angles, Dihedrals, Impropers} = molecular topology sections {Pair Coeffs, Bond Coeffs, Angle Coeffs, Dihedral Coeffs, \ Improper Coeffs} = force field sections @@ -270,9 +275,12 @@ dipole: atom-ID atom-type q x y z mux muy muz electron: atom-ID atom-type q spin eradius x y z ellipsoid: atom-ID atom-type ellipsoidflag density x y z full: atom-ID molecule-ID atom-type q x y z +line: atom-ID molecule-ID atom-type lineflag density x y z +meso: atom-ID atom-type rho e cv x y z molecular: atom-ID molecule-ID atom-type x y z peri: atom-ID atom-type volume density x y z sphere: atom-ID atom-type diameter density x y z +tri: atom-ID molecule-ID atom-type triangleflag density x y z wavepacket: atom-ID atom-type charge spin eradius etag cs_re cs_im x y z hybrid: atom-ID atom-type x y z sub-style1 sub-style2 ... :tb(s=:) @@ -284,10 +292,15 @@ atom-type = type of atom (1-Ntype) q = charge on atom (charge units) diameter = diameter of spherical atom (distance units) ellipsoidflag = 1 for ellipsoidal particles, 0 for point particles -density = density of atom (mass/distance^3 units) +lineflag = 1 for line segment particles, 0 for point particles +triangleflag = 1 for triangular particles, 0 for point particles +density = density of particle (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle) volume = volume of atom (distance^3 units) x,y,z = coordinates of atom mux,muy,muz = components of dipole moment of atom (dipole units) +rho = density (need units) for SPH particles +e = energy (need units) for SPH particles +cv = heat capacity (need units) for SPH particles spin = electron spin (+1/-1), 0 = nuclei, 2 = fixed-core, 3 = pseudo-cores (i.e. ECP) eradius = electron radius (or fixed-core radius) etag = integer ID of electron that each wavepacket belongs to @@ -317,9 +330,13 @@ keep track of molecule assignments. The diameter specifies the size of a finite-size spherical particle. It can be set to 0.0, which means that atom is a point particle. -The ellipseflag determines whether the particle is a finite-size -ellipsoid of finite size, or a point particle. Additional attributes -must be defined for each ellipsoid in the {Ellipsoids} section. +The ellipsoidflag, lineflag, and triangleflag determine whether the +particle is a finite-size ellipsoid or line or triangle of finite +size, or a point particle. Additional attributes must be defined for +each ellipsoid in the {Ellipsoids} section. Additional attributes +must be defined for each line in the {Lines} section. Additional +attributes must be defined for each triangle in the {Triangles} +section. Some pair styles and fixes and computes that operate on finite-size particles allow for a mixture of finite-size and point particles. See @@ -327,8 +344,10 @@ the doc pages of individual commands for details. The density is used in conjunction with the particle volume for finite-size particles to set the mass of the particle as mass = -density * volume. If the volume is 0.0, meaning a point particle, -then the density value is used as the mass. +density * volume. In this context, volume can be a 3d quantity (for +spheres or ellipsoids), a 2d quantity (for triangles), or a 1d +quantity (for line segments). If the volume is 0.0, meaning a point +particle, then the density value is used as the mass. For atom_style hybrid, following the 5 initial values (ID,type,x,y,z), specific values for each sub-style must be listed. The order of the @@ -477,10 +496,8 @@ line syntax: atom-ID shapex shapey shapez quatw quati quatj quatk :l atom-ID = ID of atom which is an ellipsoid shapex,shapey,shapez = 3 diameters of ellipsoid (distance units) quatw,quati,quatj,quatk = quaternion components for orientation of atom -type = bond type (1-Nbondtype) - atom1,atom2 = IDs of 1st,2nd atoms in bond :pre example: :l - 12 3 17 29 :pre + 12 1 2 1 1 0 0 0 :pre :ule The {Ellipsoids} section must appear if "atom_style @@ -558,6 +575,33 @@ values in this section must be integers (1, not 1.0). :line +{Lines} section: + +one line per line segment :ulb,l +line syntax: atom-ID x1 y1 x2 y2 :l + atom-ID = ID of atom which is a line segment + x1,y1 = 1st end point + x2,y2 = 2nd end point +example: :l + 12 1.0 0.0 2.0 0.0 :pre +:ule + +The {Lines} section must appear if "atom_style line"_atom_style.html +is used and any atoms are listed in the {Atoms} section with a +lineflag = 1. The number of lines should be specified in the header +section via the "lines" keyword. + +The 2 end points are the end points of the line segment. The ordering +of the 2 points should be such that using a right-hand rule to cross +the line segment with a unit vector in the +z direction, gives an +"outward" normal vector perpendicular to the line segment. +I.e. normal = (c2-c1) x (0,0,1). This orientation may be important +for defining some interactions. + +The {Lines} section must appear after the {Atoms} section. + +:line + {Masses} section: one line per atom type :ulb,l @@ -603,6 +647,33 @@ script. :line +{Triangles} section: + +one line per triangle :ulb,l +line syntax: atom-ID x1 y1 x2 y2 :l + atom-ID = ID of atom which is a line segment + x1,y1,z1 = 1st corner point + x2,y2,z2 = 2nd corner point + x3,y3,z3 = 3rd corner point +example: :l + 12 0.0 0.0 0.0 2.0 0.0 1.0 0.0 2.0 1.0 :pre +:ule + +The {Triangles} section must appear if "atom_style +tri"_atom_style.html is used and any atoms are listed in the {Atoms} +section with a triangleflag = 1. The number of lines should be +specified in the header section via the "triangles" keyword. + +The 3 corner points are the corner points of the triangle. The +ordering of the 3 points should be such that using a right-hand rule +to go from point1 to point2 to point3 gives an "outward" normal vector +to the face of the triangle. I.e. normal = (c2-c1) x (c3-c1). This +orientation may be important for defining some interactions. + +The {Triangles} section must appear after the {Atoms} section. + +:line + {Velocities} section: one line per atom @@ -638,8 +709,8 @@ Translational velocities can also be set by the [Restrictions:] To read gzipped data files, you must compile LAMMPS with the --DLAMMPS_GZIP option - see the "Making LAMMPS"_Section_start.html#2_2 -section of the documentation. +-DLAMMPS_GZIP option - see the "Making +LAMMPS"_Section_start.html#start_2 section of the documentation. [Related commands:] diff --git a/doc/read_restart.html b/doc/read_restart.html index 25ccf115eb..073b9d4dfe 100644 --- a/doc/read_restart.html +++ b/doc/read_restart.html @@ -43,7 +43,7 @@ these cases. Certain fixes will also not restart exactly, though they should provide statistically similar results. These include fix shake and fix langevin. If a restarted run is immediately different than the run which produced the -restart file, it could be a LAMMPS bug, so consider reporting +restart file, it could be a LAMMPS bug, so consider reporting it if you think the behavior is wrong.

          Because restart files are binary, they may not be portable to other diff --git a/doc/read_restart.txt b/doc/read_restart.txt index 854a27bd22..c4afb2a57a 100644 --- a/doc/read_restart.txt +++ b/doc/read_restart.txt @@ -41,7 +41,7 @@ should provide statistically similar results. These include "fix shake"_fix_shake.html and "fix langevin"_fix_langevin.html. If a restarted run is immediately different than the run which produced the restart file, it could be a LAMMPS bug, so consider "reporting -it"_Section_errors.html#10_2 if you think the behavior is wrong. +it"_Section_errors.html#err_2 if you think the behavior is wrong. Because restart files are binary, they may not be portable to other machines. They can be converted to ASCII data files using the diff --git a/doc/region.html b/doc/region.html index df278065f4..a9b089de7c 100644 --- a/doc/region.html +++ b/doc/region.html @@ -175,7 +175,7 @@ since if the maximum tilt factor is 5 (as in this example), then configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all geometrically equivalent.

          -

          See this section of the doc pages for a +

          See this section of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, and how to transform these parameters to and from other commonly used triclinic representations. diff --git a/doc/region.txt b/doc/region.txt index 0f72de9d5d..c8da7594f3 100644 --- a/doc/region.txt +++ b/doc/region.txt @@ -166,7 +166,7 @@ since if the maximum tilt factor is 5 (as in this example), then configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all geometrically equivalent. -See "this section"_Section_howto.html#4_12 of the doc pages for a +See "this section"_Section_howto.html#howto_12 of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, and how to transform these parameters to and from other commonly used triclinic representations. diff --git a/doc/run.html b/doc/run.html index da99cd1fb3..ddbd74c492 100644 --- a/doc/run.html +++ b/doc/run.html @@ -133,9 +133,9 @@ be useful for invoking a command you have added to LAMMPS that wraps some other code (e.g. as a library) to perform a computation periodically during a long LAMMPS run. See this section of the documentation for info about how -to add new commands to LAMMPS. See this -section of the documentation for ideas about -how to couple LAMMPS to other codes. +to add new commands to LAMMPS. See this +section of the documentation for ideas +about how to couple LAMMPS to other codes.

          With the every option, N total steps are simulated, in shorter runs of M steps each. After each M-length run, the specified commands are @@ -159,6 +159,17 @@ print Coord = $q particular atom between runs. Note that the variable "$q" will be evaluated afresh each time the print command is executed.

          +

          IMPORTANT NOTE: You might think you could specify a command +that exits the run by jumping out of the loop, e.g. +one of these two cases: +

          +
          run		100 every 1 "jump SELF afterrun"
          +run		100 every 1 "if '$t < 1.0' then 'jump SELF afterrun'" 
          +
          +

          Unfortunately this will not currently work. The run command simply +executes each command one at a time each time it pauses, then +continues the run. +

          Note that by using the line continuation character "&", the run every command can be spread across many lines, though it is still a single command: @@ -174,6 +185,18 @@ command: run will print the full timing summary, but these operations will be skipped for intermediate runs.

          +

          IMPORTANT NOTE: You might think you could use the every option to +perform a test that exits the run by jumping or breaking out of the +loop, e.g. similar to this logic, which tests on the current +temperature: +

          +
          variable t equal temp
          +run 10000 every 100 "if '$t < 300.0' then 'jump SELF afterrun'" 
          +
          +

          Unfortunately this will not currently work. The run command simply +executes the command(s) each time it pauses, then continues the run +until completed. +

          Restrictions:

          The number of specified timesteps N must fit in a signed 32-bit diff --git a/doc/run.txt b/doc/run.txt index febf22777a..d38af3443a 100644 --- a/doc/run.txt +++ b/doc/run.txt @@ -127,8 +127,8 @@ some other code (e.g. as a library) to perform a computation periodically during a long LAMMPS run. See "this section"_Section_modify.html of the documentation for info about how to add new commands to LAMMPS. See "this -section"_Section_howto.html#4_10 of the documentation for ideas about -how to couple LAMMPS to other codes. +section"_Section_howto.html#howto_10 of the documentation for ideas +about how to couple LAMMPS to other codes. With the {every} option, N total steps are simulated, in shorter runs of M steps each. After each M-length run, the specified commands are @@ -152,6 +152,17 @@ which does 3 runs of 2000 steps and prints the x-coordinate of a particular atom between runs. Note that the variable "$q" will be evaluated afresh each time the print command is executed. +IMPORTANT NOTE: You might think you could specify a command +that exits the run by jumping out of the loop, e.g. +one of these two cases: + +run 100 every 1 "jump SELF afterrun" +run 100 every 1 "if '$t < 1.0' then 'jump SELF afterrun'" :pre + +Unfortunately this will not currently work. The run command simply +executes each command one at a time each time it pauses, then +continues the run. + Note that by using the line continuation character "&", the run every command can be spread across many lines, though it is still a single command: @@ -167,6 +178,18 @@ If the {pre} and {post} options are set to "no" when used with the run will print the full timing summary, but these operations will be skipped for intermediate runs. +IMPORTANT NOTE: You might think you could use the {every} option to +perform a test that exits the run by jumping or breaking out of the +loop, e.g. similar to this logic, which tests on the current +temperature: + +variable t equal temp +run 10000 every 100 "if '$t < 300.0' then 'jump SELF afterrun'" :pre + +Unfortunately this will not currently work. The run command simply +executes the command(s) each time it pauses, then continues the run +until completed. + [Restrictions:] The number of specified timesteps N must fit in a signed 32-bit diff --git a/doc/set.html b/doc/set.html index e70cd6a1b9..06be9fb51c 100644 --- a/doc/set.html +++ b/doc/set.html @@ -21,8 +21,9 @@

        • one or more keyword/value pairs may be appended -
        • keyword = type or type/fraction or mol or x or y or z or charge or dipole or dipole/random or quat or quat/random or diameter or shape or mass or density or volume or image or - bond or angle or dihedral or improper +
        • keyword = type or type/fraction or mol or x or y or z or charge or dipole or dipole/random or quat or quat/random or diameter or shape or length or tri or theta or angmom or mass or density or volume or image or + bond or angle or dihedral or improper or + meso_e or meso_cv or meso_rho
            type value = atom type
             type/fraction values = type fraction seed
          @@ -39,21 +40,32 @@
               Dlen = magnitude of dipole moment (dipole units)
             quat values = a b c theta
               a,b,c = unit vector to rotate particle around via right-hand rule
          -    theta = rotation angle in degrees
          +    theta = rotation angle (degrees)
             quat/random value = seed
               seed = random # seed (positive integer) for quaternion orientations
             diameter value = diameter of spherical particle (distance units)
             shape value = Sx Sy Sz
               Sx,Sy,Sz = 3 diameters of ellipsoid (distance units)
          +  length value = len
          +    len = length of line segment (distance units)
          +  tri value = side
          +    side = side length of equilateral triangle (distance units)
          +  theta value = angle (degrees)
          +    angle = orientation of line segment with respect to x-axis
          +  angmom values = Lx Ly Lz
          +    Lx,Ly,Lz = components of angular momentum vector (distance-mass-velocity units)
             mass value = per-atom mass (mass units)
          -  density value = particle density for sphere or ellipsoid (mass/distance^3 units)
          +  density value = particle density for sphere or ellipsoid (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle)
             volume value = particle volume for Peridynamic particle (distance^3 units)
             image nx ny nz
               nx,ny,nz = which periodic image of the simulation box the atom is in
             bond value = bond type for all bonds between selected atoms
             angle value = angle type for all angles between selected atoms
             dihedral value = dihedral type for all dihedrals between selected atoms
          -  improper value = improper type for all impropers between selected atoms 
          +  improper value = improper type for all impropers between selected atoms
          +  meso_e value = energy of SPH particles (need units)
          +  meso_cv value = heat capacity of SPH particles (need units)
          +  meso_rho value = density of SPH particles (need units) 
           
        @@ -139,26 +151,31 @@ the orientation of a particular atom is the same, regardless of how many processors are being used.

        Keyword quat uses the specified values to create a quaternion -(4-vector) that represents the orientation of the selected atoms. -Note that particles defined by atom_style ellipsoid -have 3 shape parameters. The 3 values must be non-zero for each -particle set by this command. They are used to specify the aspect -ratios of an ellipsoidal particle, which is oriented by default with -its x-axis along the simulation box's x-axis, and similarly for y and -z. If this body is rotated (via the right-hand rule) by an angle -theta around a unit rotation vector (a,b,c), then the quaternion that -represents its new orientation is given by (cos(theta/2), -a*sin(theta/2), b*sin(theta/2), c*sin(theta/2)). The theta and a,b,c -values are the arguments to the quat keyword. LAMMPS normalizes the -quaternion in case (a,b,c) was not specified as a unit vector. For 2d -systems, the a,b,c values are ignored, since a rotation vector of -(0,0,1) is the only valid choice. +(4-vector) that represents the orientation of the selected atoms. The +particles must be ellipsoids as defined by the atom_style +ellipsoid command or triangles as defined by the +atom_style tri command. Note that particles defined +by atom_style ellipsoid have 3 shape parameters. +The 3 values must be non-zero for each particle set by this command. +They are used to specify the aspect ratios of an ellipsoidal particle, +which is oriented by default with its x-axis along the simulation +box's x-axis, and similarly for y and z. If this body is rotated (via +the right-hand rule) by an angle theta around a unit rotation vector +(a,b,c), then the quaternion that represents its new orientation is +given by (cos(theta/2), a*sin(theta/2), b*sin(theta/2), +c*sin(theta/2)). The theta and a,b,c values are the arguments to the +quat keyword. LAMMPS normalizes the quaternion in case (a,b,c) was +not specified as a unit vector. For 2d systems, the a,b,c values are +ignored, since a rotation vector of (0,0,1) is the only valid choice.

        Keyword quat/random randomizes the orientation of the quaternion of -the selected atoms. Random numbers are used in such a way that the -orientation of a particular atom is the same, regardless of how many -processors are being used. For 2d systems, only orientations in the -xy plane are generated. As with keyword quat, the 3 shape values +the selected atoms. The particles must be ellipsoids as defined by +the atom_style ellipsoid command or triangles as +defined by the atom_style tri command. Random +numbers are used in such a way that the orientation of a particular +atom is the same, regardless of how many processors are being used. +For 2d systems, only orientations in the xy plane are generated. As +with keyword quat, for ellipsoidal particles, the 3 shape values must be non-zero for each particle set by this command.

        Keyword diameter sets the size of the selected atoms. The particles @@ -170,7 +187,7 @@ defined with a density, e.g. via the read_data command.

        Keyword shape sets the size and shape of the selected atoms. The -particles must be aspherical ellipsoids as defined by the atom_style +particles must be ellipsoids as defined by the atom_style ellipsoid command. The Sx, Sy, Sz settings are the 3 diameters of the ellipsoid in each direction. All 3 can be set to the same value, which means the ellipsoid is effectively a sphere. @@ -179,20 +196,60 @@ treated as a point particle. Note that this command does not adjust the particle mass, even if it was defined with a density, e.g. via the read_data command.

        +

        Keyword length sets the length of selected atoms. The particles +must be line segments as defined by the atom_style +line command. If the specified value is non-zero the +line segment is (re)set to a length = the specified value, centered +around the particle position, with an orientation along the x-axis. +If the specified value is 0.0, the particle will become a point +particle. Note that this command does not adjust the particle mass, +even if it was defined with a density, e.g. via the +read_data command. +

        +

        Keyword tri sets the size of selected atoms. The particles must be +triangles as defined by the atom_style tri command. +If the specified value is non-zero the triangle is (re)set to be an +equilateral triangle in the xy plane with side length = the specified +value, with a centroid at the particle position, with its base +parallel to the x axis, and the y-axis running from the center of the +base to the top point of the triangle. If the specified value is 0.0, +the particle will become a point particle. Note that this command +does not adjust the particle mass, even if it was defined with a +density, e.g. via the read_data command. +

        +

        Keyword theta sets the orientation of selected atoms. The particles +must be line segments as defined by the atom_style +line command. The specified value is used to set the +orientation angle of the line segments with respect to the x axis. +

        +

        Keyword angmom sets the angular momentum of selected atoms. The +particles must be ellipsoids as defined by the atom_style +ellipsoid command or triangles as defined by the +atom_style tri command. The angular momentum vector +of the particles is set to the 3 specified components. +

        Keyword mass sets the mass of all selected particles. The particles must have a per-atom mass attribute, as defined by the atom_style command. See the "mass" command for how to set mass values on a per-type basis.

        -

        Keyword density sets the mass of all selected particles. The -particles must have a per-atom mass attribute, as defined by the -atom_style command. See the "mass" command for how -to set mass values on a per-type basis. If the atom has a radius -attribute (see atom_style sphere) and its radius is -non-zero, its mass is set from the density and particle volume. The -same is true if the atom has a shape attribute (see atom_style -ellipsoid) and its 3 shape parameters are non-zero. -Otherwise the mass is set to the density value directly. +

        Keyword density also sets the mass of all selected particles, but in +a different way. The particles must have a per-atom mass attribute, +as defined by the atom_style command. If the atom +has a radius attribute (see atom_style sphere) and +its radius is non-zero, its mass is set from the density and particle +volume. If the atom has a shape attribute (see atom_style +ellipsoid) and its 3 shape parameters are non-zero, +then its mass is set from the density and particle volume. If the +atom has a length attribute (see atom_style line) +and its length is non-zero, then its mass is set from the density and +line segment length (the input density is assumed to be in +mass/distance units). If the atom has an area attribute (see +atom_style tri) and its area is non-zero, then its +mass is set from the density and triangle area (the input density is +assumed to be in mass/distance^2 units). If none of these cases are +valid, then the mass is set to the density value directly (the input +density is assumed to be in mass units).

        Keyword volume sets the volume of all selected particles. Currently, only the atom_style peri command defines @@ -232,6 +289,11 @@ etc) was set by the bond types (angle types, etc) field in the header of the data file read by the read_data command.

        +

        Keywords meso_e, meso_cv, and meso_rho set the energy, heat +capacity, and density of smmothed particle hydrodynamics (SPH) +particles. See this PDF guide to +using SPH in LAMMPS. +

        Restrictions:

        You cannot set an atom attribute (e.g. mol or q or volume) if diff --git a/doc/set.txt b/doc/set.txt index a768576f1d..0c352d0958 100644 --- a/doc/set.txt +++ b/doc/set.txt @@ -17,9 +17,11 @@ ID = atom ID range or type range or mol ID range or group ID or region ID :l one or more keyword/value pairs may be appended :l keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \ {charge} or {dipole} or {dipole/random} or {quat} or \ - {quat/random} or {diameter} or {shape} or {mass} or \ - {density} or {volume} or {image} or - {bond} or {angle} or {dihedral} or {improper} :l + {quat/random} or {diameter} or {shape} or \ + {length} or {tri} or {theta} or {angmom} or \ + {mass} or {density} or {volume} or {image} or + {bond} or {angle} or {dihedral} or {improper} or + {meso_e} or {meso_cv} or {meso_rho} :l {type} value = atom type {type/fraction} values = type fraction seed type = new atom type @@ -35,21 +37,32 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \ Dlen = magnitude of dipole moment (dipole units) {quat} values = a b c theta a,b,c = unit vector to rotate particle around via right-hand rule - theta = rotation angle in degrees + theta = rotation angle (degrees) {quat/random} value = seed seed = random # seed (positive integer) for quaternion orientations {diameter} value = diameter of spherical particle (distance units) {shape} value = Sx Sy Sz Sx,Sy,Sz = 3 diameters of ellipsoid (distance units) + {length} value = len + len = length of line segment (distance units) + {tri} value = side + side = side length of equilateral triangle (distance units) + {theta} value = angle (degrees) + angle = orientation of line segment with respect to x-axis + {angmom} values = Lx Ly Lz + Lx,Ly,Lz = components of angular momentum vector (distance-mass-velocity units) {mass} value = per-atom mass (mass units) - {density} value = particle density for sphere or ellipsoid (mass/distance^3 units) + {density} value = particle density for sphere or ellipsoid (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle) {volume} value = particle volume for Peridynamic particle (distance^3 units) {image} nx ny nz nx,ny,nz = which periodic image of the simulation box the atom is in {bond} value = bond type for all bonds between selected atoms {angle} value = angle type for all angles between selected atoms {dihedral} value = dihedral type for all dihedrals between selected atoms - {improper} value = improper type for all impropers between selected atoms :pre + {improper} value = improper type for all impropers between selected atoms + {meso_e} value = energy of SPH particles (need units) + {meso_cv} value = heat capacity of SPH particles (need units) + {meso_rho} value = density of SPH particles (need units) :pre :ule [Examples:] @@ -134,26 +147,31 @@ the orientation of a particular atom is the same, regardless of how many processors are being used. Keyword {quat} uses the specified values to create a quaternion -(4-vector) that represents the orientation of the selected atoms. -Note that particles defined by "atom_style ellipsoid"_atom_style.html -have 3 shape parameters. The 3 values must be non-zero for each -particle set by this command. They are used to specify the aspect -ratios of an ellipsoidal particle, which is oriented by default with -its x-axis along the simulation box's x-axis, and similarly for y and -z. If this body is rotated (via the right-hand rule) by an angle -theta around a unit rotation vector (a,b,c), then the quaternion that -represents its new orientation is given by (cos(theta/2), -a*sin(theta/2), b*sin(theta/2), c*sin(theta/2)). The theta and a,b,c -values are the arguments to the {quat} keyword. LAMMPS normalizes the -quaternion in case (a,b,c) was not specified as a unit vector. For 2d -systems, the a,b,c values are ignored, since a rotation vector of -(0,0,1) is the only valid choice. +(4-vector) that represents the orientation of the selected atoms. The +particles must be ellipsoids as defined by the "atom_style +ellipsoid"_atom_style.html command or triangles as defined by the +"atom_style tri"_atom_style.html command. Note that particles defined +by "atom_style ellipsoid"_atom_style.html have 3 shape parameters. +The 3 values must be non-zero for each particle set by this command. +They are used to specify the aspect ratios of an ellipsoidal particle, +which is oriented by default with its x-axis along the simulation +box's x-axis, and similarly for y and z. If this body is rotated (via +the right-hand rule) by an angle theta around a unit rotation vector +(a,b,c), then the quaternion that represents its new orientation is +given by (cos(theta/2), a*sin(theta/2), b*sin(theta/2), +c*sin(theta/2)). The theta and a,b,c values are the arguments to the +{quat} keyword. LAMMPS normalizes the quaternion in case (a,b,c) was +not specified as a unit vector. For 2d systems, the a,b,c values are +ignored, since a rotation vector of (0,0,1) is the only valid choice. Keyword {quat/random} randomizes the orientation of the quaternion of -the selected atoms. Random numbers are used in such a way that the -orientation of a particular atom is the same, regardless of how many -processors are being used. For 2d systems, only orientations in the -xy plane are generated. As with keyword {quat}, the 3 shape values +the selected atoms. The particles must be ellipsoids as defined by +the "atom_style ellipsoid"_atom_style.html command or triangles as +defined by the "atom_style tri"_atom_style.html command. Random +numbers are used in such a way that the orientation of a particular +atom is the same, regardless of how many processors are being used. +For 2d systems, only orientations in the xy plane are generated. As +with keyword {quat}, for ellipsoidal particles, the 3 shape values must be non-zero for each particle set by this command. Keyword {diameter} sets the size of the selected atoms. The particles @@ -165,7 +183,7 @@ defined with a density, e.g. via the "read_data"_read_data.html command. Keyword {shape} sets the size and shape of the selected atoms. The -particles must be aspherical ellipsoids as defined by the "atom_style +particles must be ellipsoids as defined by the "atom_style ellipsoid"_atom_style.html command. The {Sx}, {Sy}, {Sz} settings are the 3 diameters of the ellipsoid in each direction. All 3 can be set to the same value, which means the ellipsoid is effectively a sphere. @@ -174,20 +192,60 @@ treated as a point particle. Note that this command does not adjust the particle mass, even if it was defined with a density, e.g. via the "read_data"_read_data.html command. +Keyword {length} sets the length of selected atoms. The particles +must be line segments as defined by the "atom_style +line"_atom_style.html command. If the specified value is non-zero the +line segment is (re)set to a length = the specified value, centered +around the particle position, with an orientation along the x-axis. +If the specified value is 0.0, the particle will become a point +particle. Note that this command does not adjust the particle mass, +even if it was defined with a density, e.g. via the +"read_data"_read_data.html command. + +Keyword {tri} sets the size of selected atoms. The particles must be +triangles as defined by the "atom_style tri"_atom_style.html command. +If the specified value is non-zero the triangle is (re)set to be an +equilateral triangle in the xy plane with side length = the specified +value, with a centroid at the particle position, with its base +parallel to the x axis, and the y-axis running from the center of the +base to the top point of the triangle. If the specified value is 0.0, +the particle will become a point particle. Note that this command +does not adjust the particle mass, even if it was defined with a +density, e.g. via the "read_data"_read_data.html command. + +Keyword {theta} sets the orientation of selected atoms. The particles +must be line segments as defined by the "atom_style +line"_atom_style.html command. The specified value is used to set the +orientation angle of the line segments with respect to the x axis. + +Keyword {angmom} sets the angular momentum of selected atoms. The +particles must be ellipsoids as defined by the "atom_style +ellipsoid"_atom_style.html command or triangles as defined by the +"atom_style tri"_atom_style.html command. The angular momentum vector +of the particles is set to the 3 specified components. + Keyword {mass} sets the mass of all selected particles. The particles must have a per-atom mass attribute, as defined by the "atom_style"_atom_style.html command. See the "mass" command for how to set mass values on a per-type basis. -Keyword {density} sets the mass of all selected particles. The -particles must have a per-atom mass attribute, as defined by the -"atom_style"_atom_style.html command. See the "mass" command for how -to set mass values on a per-type basis. If the atom has a radius -attribute (see "atom_style sphere"_atom_style.html) and its radius is -non-zero, its mass is set from the density and particle volume. The -same is true if the atom has a shape attribute (see "atom_style -ellipsoid"_atom_style.html) and its 3 shape parameters are non-zero. -Otherwise the mass is set to the density value directly. +Keyword {density} also sets the mass of all selected particles, but in +a different way. The particles must have a per-atom mass attribute, +as defined by the "atom_style"_atom_style.html command. If the atom +has a radius attribute (see "atom_style sphere"_atom_style.html) and +its radius is non-zero, its mass is set from the density and particle +volume. If the atom has a shape attribute (see "atom_style +ellipsoid"_atom_style.html) and its 3 shape parameters are non-zero, +then its mass is set from the density and particle volume. If the +atom has a length attribute (see "atom_style line"_atom_style.html) +and its length is non-zero, then its mass is set from the density and +line segment length (the input density is assumed to be in +mass/distance units). If the atom has an area attribute (see +"atom_style tri"_atom_style.html) and its area is non-zero, then its +mass is set from the density and triangle area (the input density is +assumed to be in mass/distance^2 units). If none of these cases are +valid, then the mass is set to the density value directly (the input +density is assumed to be in mass units). Keyword {volume} sets the volume of all selected particles. Currently, only the "atom_style peri"_atom_style.html command defines @@ -227,6 +285,11 @@ etc) was set by the {bond types} ({angle types}, etc) field in the header of the data file read by the "read_data"_read_data.html command. +Keywords {meso_e}, {meso_cv}, and {meso_rho} set the energy, heat +capacity, and density of smmothed particle hydrodynamics (SPH) +particles. See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to +using SPH in LAMMPS. + [Restrictions:] You cannot set an atom attribute (e.g. {mol} or {q} or {volume}) if diff --git a/doc/suffix.html b/doc/suffix.html index 85199d16df..e58c86bf81 100644 --- a/doc/suffix.html +++ b/doc/suffix.html @@ -15,7 +15,7 @@

        suffix style 
         
        -
        • style = off or on or opt or gpu or cuda +
          • style = off or on or opt or omp or gpu or cuda

          Examples:

          @@ -26,28 +26,30 @@ suffix gpu

          Description:

          This command allows you to use variants of various styles if they -exist. In that respect it operates the same as the -suffix -command-line switch. It also has options to -turn off/on any suffix setting made via the command line. +exist. In that respect it operates the same as the -suffix +command-line switch. It also has options +to turn off/on any suffix setting made via the command line.

          -

          The specified style can be opt or gpu or cuda. These refer to -optional packages that LAMMPS can be built with, as described in this +

          The specified style can be opt, omp, gpu, or cuda. These refer to +optional packages that LAMMPS can be built with, as described in this section of the manual. The "opt" style -corrsponds to the OPT package, the "gpu" style to the GPU package, and -the "cuda" style to the USER-CUDA package. +corrsponds to the OPT package, the "omp" style to the USER-OMP package, +the "gpu" style to the GPU package, and the "cuda" style to the +USER-CUDA package.

          These are the variants these packages provide:

          • OPT = a handful of pair styles, cache-optimized for faster CPU performance +
          • USER-OMP = a collection of pair, dihedral and fix styles with support for OpenMP multi-threading
          • GPU = a handful of pair styles and the PPPM kspace_style, optimized to run on one or more GPUs or multicore CPU/GPU nodes
          • USER-CUDA = a collection of atom, pair, fix, compute, and intergrate styles, optimized to run on one or more NVIDIA GPUs

          As an example, all of the packages provide a pair_style -lj/cut variant, with style names lj/cut/opt or -lj/cut/gpu or lj/cut/cuda. A variant styles can be specified +lj/cut variant, with style names lj/cut/opt, lj/cut/omp, +lj/cut/gpu, or lj/cut/cuda. A variant styles can be specified explicitly in your input script, e.g. pair_style lj/cut/gpu. If the suffix command is used with the appropriate style, you do not need to -modify your input script. The specified suffix (opt,gpu,cuda) is +modify your input script. The specified suffix (opt,omp,gpu,cuda) is automatically appended whenever your input script command creates a new atom, pair, fix, compute, or run style. If the variant @@ -67,7 +69,7 @@ commands in your input script.

          Related commands:

          -

          Command-line switch -suffix +

          Command-line switch -suffix

          Default: none

          diff --git a/doc/suffix.txt b/doc/suffix.txt index af34e03db9..ec773f0eb7 100644 --- a/doc/suffix.txt +++ b/doc/suffix.txt @@ -12,7 +12,7 @@ suffix command :h3 suffix style :pre -style = {off} or {on} or {opt} or {gpu} or {cuda} :ul +style = {off} or {on} or {opt} or {omp} or {gpu} or {cuda} :ul [Examples:] @@ -24,27 +24,29 @@ suffix gpu :pre This command allows you to use variants of various styles if they exist. In that respect it operates the same as the "-suffix -command-line switch"_Section_start.html#2_6. It also has options to -turn off/on any suffix setting made via the command line. +command-line switch"_Section_start.html#start_6. It also has options +to turn off/on any suffix setting made via the command line. -The specified style can be {opt} or {gpu} or {cuda}. These refer to +The specified style can be {opt}, {omp}, {gpu}, or {cuda}. These refer to optional packages that LAMMPS can be built with, as described in "this -section of the manual"_Section_start.html#2_3. The "opt" style -corrsponds to the OPT package, the "gpu" style to the GPU package, and -the "cuda" style to the USER-CUDA package. +section of the manual"_Section_start.html#start_3. The "opt" style +corrsponds to the OPT package, the "omp" style to the USER-OMP package, +the "gpu" style to the GPU package, and the "cuda" style to the +USER-CUDA package. These are the variants these packages provide: OPT = a handful of pair styles, cache-optimized for faster CPU performance +USER-OMP = a collection of pair, dihedral and fix styles with support for OpenMP multi-threading GPU = a handful of pair styles and the PPPM kspace_style, optimized to run on one or more GPUs or multicore CPU/GPU nodes USER-CUDA = a collection of atom, pair, fix, compute, and intergrate styles, optimized to run on one or more NVIDIA GPUs :ul As an example, all of the packages provide a "pair_style -lj/cut"_pair_lj.html variant, with style names lj/cut/opt or -lj/cut/gpu or lj/cut/cuda. A variant styles can be specified +lj/cut"_pair_lj.html variant, with style names lj/cut/opt, lj/cut/omp, +lj/cut/gpu, or lj/cut/cuda. A variant styles can be specified explicitly in your input script, e.g. pair_style lj/cut/gpu. If the suffix command is used with the appropriate style, you do not need to -modify your input script. The specified suffix (opt,gpu,cuda) is +modify your input script. The specified suffix (opt,omp,gpu,cuda) is automatically appended whenever your input script command creates a new "atom"_atom_style.html, "pair"_pair_style.html, "fix"_fix.html, "compute"_compute.html, or "run"_run_style.html style. If the variant @@ -64,6 +66,6 @@ commands in your input script. [Related commands:] -"Command-line switch -suffix"_Section_start.html#2_6 +"Command-line switch -suffix"_Section_start.html#start_6 [Default:] none diff --git a/doc/tad.html b/doc/tad.html index 29e8b21cb5..08a87fc8bf 100644 --- a/doc/tad.html +++ b/doc/tad.html @@ -13,7 +13,7 @@

          Syntax:

          -
          tad N t_event T_lo T_hi delta tmax compute-ID seed keyword value ... 
          +
          tad N t_event T_lo T_hi delta tmax compute-ID keyword value ... 
           
          • N = # of timesteps to run (not including dephasing/quenching) @@ -52,8 +52,8 @@

          Examples:

          -
          tad 2000 50 1800 2300 0.01 0.01 event 54985
          -tad 2000 50 1800 2300 0.01 0.01 event 54985 &
          +
          tad 2000 50 1800 2300 0.01 0.01 event
          +tad 2000 50 1800 2300 0.01 0.01 event &
               min 1e-05 1e-05 100 100 &
               neb 0.0 0.01 200 200 20 &
               min_style cg &
          @@ -102,9 +102,8 @@ restricts you to having exactly one processor per replica. For more
           information, see the documentation for the neb command.  In
           the current LAMMPS implementation of TAD, all the non-NEB TAD
           operations are performed on the first partition, while the other
          -partitions remain idle. See this
          -section of the manual for further discussion
          -of multi-replica simulations.
          +partitions remain idle. See this section
          +of the manual for further discussion of multi-replica simulations.
           

          A TAD run has several stages, which are repeated each time an event is performed. The logic for a TAD run is as follows: @@ -203,10 +202,13 @@ high-temperature time since entering the current basin, scaled by an exponential factor that depends on the hi/lo temperature ratio and the energy barrier for that event.

          -

          On lines for executed events, with status E, the global event number -is incremented by one, and the timestep, local event number, energy -barrier, t_lo, and delt_lo match the last event with status DF -in the immediately preceding block of detected events. +

          On lines for executed events, with status E, the global event number +is incremented by one, +the local event number and time margin are reset to zero, +while the global event number, energy barrier, and +delt_lo match the last event with status DF +in the immediately preceding block of detected events. +The low-temperature event time t_lo is incremented by delt_lo.

          The NEB statistics are written to the file specified by the neb_log keyword. If the keyword value is "none", then no NEB statistics are @@ -270,9 +272,9 @@ are always monotonically increasing.

          Restrictions:

          -

          This command can only be used if LAMMPS was built with the "replica" -package. See the Making LAMMPS section for -more info on packages. +

          This command can only be used if LAMMPS was built with the REPLICA +package. See the Making LAMMPS section +for more info on packages.

          N setting must be integer multiple of t_event.

          diff --git a/doc/tad.txt b/doc/tad.txt index a7f9d3088f..adb10fcc3a 100644 --- a/doc/tad.txt +++ b/doc/tad.txt @@ -11,7 +11,7 @@ tad command :h3 [Syntax:] tad N t_event T_lo T_hi delta tmax compute-ID \ -seed keyword value ... :pre +keyword value ... :pre N = # of timesteps to run (not including dephasing/quenching) :ulb,l t_event = timestep interval between event checks :l @@ -41,8 +41,8 @@ keyword = {min} or {neb} or {min_style} or {neb_style} or {neb_log} :l [Examples:] -tad 2000 50 1800 2300 0.01 0.01 event 54985 -tad 2000 50 1800 2300 0.01 0.01 event 54985 & +tad 2000 50 1800 2300 0.01 0.01 event +tad 2000 50 1800 2300 0.01 0.01 event & min 1e-05 1e-05 100 100 & neb 0.0 0.01 200 200 20 & min_style cg & @@ -91,9 +91,8 @@ restricts you to having exactly one processor per replica. For more information, see the documentation for the "neb"_neb.html command. In the current LAMMPS implementation of TAD, all the non-NEB TAD operations are performed on the first partition, while the other -partitions remain idle. See "this -section"_Section_howto.html#4_5 of the manual for further discussion -of multi-replica simulations. +partitions remain idle. See "this section"_Section_howto.html#howto_5 +of the manual for further discussion of multi-replica simulations. A TAD run has several stages, which are repeated each time an event is @@ -193,10 +192,14 @@ high-temperature time since entering the current basin, scaled by an exponential factor that depends on the hi/lo temperature ratio and the energy barrier for that event. -On lines for executed events, with status {E}, the global event number -is incremented by one, and the timestep, local event number, energy -barrier, {t_lo}, and {delt_lo} match the last event with status {DF} -in the immediately preceding block of detected events. +On lines for executed events, with status {E}, the global event number +is incremented by one, +the local event number and time margin are reset to zero, +while the global event number, energy barrier, and +{delt_lo} match the last event with status {DF} +in the immediately preceding block of detected events. +The low-temperature event time {t_lo} is incremented by {delt_lo}. + The NEB statistics are written to the file specified by the {neb_log} keyword. If the keyword value is "none", then no NEB statistics are @@ -260,9 +263,9 @@ are always monotonically increasing. [Restrictions:] -This command can only be used if LAMMPS was built with the "replica" -package. See the "Making LAMMPS"_Section_start.html#2_3 section for -more info on packages. +This command can only be used if LAMMPS was built with the REPLICA +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. {N} setting must be integer multiple of {t_event}. diff --git a/doc/temper.html b/doc/temper.html index ff67dbc3fa..514db78868 100644 --- a/doc/temper.html +++ b/doc/temper.html @@ -35,13 +35,14 @@ replicas (ensembles) of a system. Two or more replicas must be used.

          Each replica runs on a partition of one or more processors. Processor partitions are defined at run-time using the -partition command-line -switch; see this section of the manual. Note -that if you have MPI installed, you can run a multi-replica simulation -with more replicas (partitions) than you have physical processors, e.g -you can run a 10-replica simulation on one or two processors. You -will simply not get the performance speed-up you would see with one or -more physical processors per replica. See this -section of the manual for further discussion. +switch; see this section of the manual. +Note that if you have MPI installed, you can run a multi-replica +simulation with more replicas (partitions) than you have physical +processors, e.g you can run a 10-replica simulation on one or two +processors. You will simply not get the performance speed-up you +would see with one or more physical processors per replica. See this +section of the manual for further +discussion.

          Each replica's temperature is controlled at a different value by a fix with fix-ID that controls temperature. Possible fix styles are @@ -71,7 +72,7 @@ rejected based on a Boltzmann-weighted Metropolis criterion which uses

          As a tempering run proceeds, multiple log files and screen output files are created, one per replica. By default these files are named log.lammps.M and screen.M where M is the replica number from 0 to N-1, -with N = # of replicas. See the section on command-line +with N = # of replicas. See the section on command-line switches for info on how to change these names.

          @@ -114,7 +115,7 @@ log file listed the following for a simulation with 5 replicas:

          then a setting of

          -
          variable w proc 2 4 0 1 3 
          +
          variable w world 2 4 0 1 3 
           

          would be used to restart the run with a tempering command like the example above with $w as the last argument. @@ -123,9 +124,9 @@ example above with $w as the last argument.

          Restrictions:

          -

          This command can only be used if LAMMPS was built with the "replica" -package. See the Making LAMMPS section for -more info on packages. +

          This command can only be used if LAMMPS was built with the REPLICA +package. See the Making LAMMPS section +for more info on packages.

          Related commands:

          diff --git a/doc/temper.txt b/doc/temper.txt index 4f6ba7179c..70f1e2f0d9 100644 --- a/doc/temper.txt +++ b/doc/temper.txt @@ -32,13 +32,14 @@ replicas (ensembles) of a system. Two or more replicas must be used. Each replica runs on a partition of one or more processors. Processor partitions are defined at run-time using the -partition command-line -switch; see "this section"_Section_start.html#2_6 of the manual. Note -that if you have MPI installed, you can run a multi-replica simulation -with more replicas (partitions) than you have physical processors, e.g -you can run a 10-replica simulation on one or two processors. You -will simply not get the performance speed-up you would see with one or -more physical processors per replica. See "this -section"_Section_howto.html#4_5 of the manual for further discussion. +switch; see "this section"_Section_start.html#start_6 of the manual. +Note that if you have MPI installed, you can run a multi-replica +simulation with more replicas (partitions) than you have physical +processors, e.g you can run a 10-replica simulation on one or two +processors. You will simply not get the performance speed-up you +would see with one or more physical processors per replica. See "this +section"_Section_howto.html#howto_5 of the manual for further +discussion. Each replica's temperature is controlled at a different value by a fix with {fix-ID} that controls temperature. Possible fix styles are @@ -69,7 +70,7 @@ As a tempering run proceeds, multiple log files and screen output files are created, one per replica. By default these files are named log.lammps.M and screen.M where M is the replica number from 0 to N-1, with N = # of replicas. See the "section on command-line -switches"_Section_start.html#2_6 for info on how to change these +switches"_Section_start.html#start_6 for info on how to change these names. The main screen and log file (log.lammps) will list information about @@ -111,7 +112,7 @@ log file listed the following for a simulation with 5 replicas: then a setting of -variable w proc 2 4 0 1 3 :pre +variable w world 2 4 0 1 3 :pre would be used to restart the run with a tempering command like the example above with $w as the last argument. @@ -120,9 +121,9 @@ example above with $w as the last argument. [Restrictions:] -This command can only be used if LAMMPS was built with the "replica" -package. See the "Making LAMMPS"_Section_start.html#2_3 section for -more info on packages. +This command can only be used if LAMMPS was built with the REPLICA +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. [Related commands:] diff --git a/doc/thermo_style.html b/doc/thermo_style.html index 11d4e7a8be..3c58443544 100644 --- a/doc/thermo_style.html +++ b/doc/thermo_style.html @@ -233,13 +233,13 @@ calculates the maximum force in any dimension on any atom in the system, or the infinity-norm of the force vector for the system. The fnorm keyword calculates the 2-norm or length of the force vector.

          -

          The keywords cella, cellb, cellc, cellalpha, cellbeta, cellgamma, -correspond to the usual crystallographic quantities that define -the periodic unit cell of a crystal. -See this section of the doc pages for a -geometric description of triclinic periodic cells, including -a precise defintion of these quantities in terms of the internal -LAMMPS cell dimensions lx, ly, lz, yz, xz, xy, +

          The keywords cella, cellb, cellc, cellalpha, cellbeta, +cellgamma, correspond to the usual crystallographic quantities that +define the periodic unit cell of a crystal. See this +section of the doc pages for a geometric +description of triclinic periodic cells, including a precise defintion +of these quantities in terms of the internal LAMMPS cell dimensions +lx, ly, lz, yz, xz, xy,


          diff --git a/doc/thermo_style.txt b/doc/thermo_style.txt index 03ad2c917b..8f4a64148d 100644 --- a/doc/thermo_style.txt +++ b/doc/thermo_style.txt @@ -227,13 +227,13 @@ calculates the maximum force in any dimension on any atom in the system, or the infinity-norm of the force vector for the system. The {fnorm} keyword calculates the 2-norm or length of the force vector. -The keywords {cella}, {cellb}, {cellc}, {cellalpha}, {cellbeta}, {cellgamma}, -correspond to the usual crystallographic quantities that define -the periodic unit cell of a crystal. -See "this section"_Section_howto.html#4_12 of the doc pages for a -geometric description of triclinic periodic cells, including -a precise defintion of these quantities in terms of the internal -LAMMPS cell dimensions {lx}, {ly}, {lz}, {yz}, {xz}, {xy}, +The keywords {cella}, {cellb}, {cellc}, {cellalpha}, {cellbeta}, +{cellgamma}, correspond to the usual crystallographic quantities that +define the periodic unit cell of a crystal. See "this +section"_Section_howto.html#howto_12 of the doc pages for a geometric +description of triclinic periodic cells, including a precise defintion +of these quantities in terms of the internal LAMMPS cell dimensions +{lx}, {ly}, {lz}, {yz}, {xz}, {xy}, :line diff --git a/doc/variable.html b/doc/variable.html index fd1e7f7657..31dae2e600 100644 --- a/doc/variable.html +++ b/doc/variable.html @@ -129,8 +129,8 @@ is ignored. This means variables can NOT be re-defined in an input script (with 2 exceptions, read further). This is to allow an input script to be processed multiple times without resetting the variables; see the jump or include commands. It also -means that using the command-line switch -var -will override a corresponding index variable setting in the input +means that using the command-line switch +-var will override a corresponding index variable setting in the input script.

          There are two exceptions to this rule. First, variables of style @@ -148,7 +148,7 @@ the same thing.


          -

          This section of the manual explains how +

          This section of the manual explains how occurrences of a variable name in an input script line are replaced by the variable's string. The variable name can be referenced as $x if the name "x" is a single character, or as ${LoopVar} if the name @@ -187,7 +187,7 @@ string is assigned. All processors assign the same string to the variable.

          Index style variables with a single string value can also be set by -using the command-line switch -var; see this +using the command-line switch -var; see this section for details.

          The loop style is identical to the index style except that the @@ -202,7 +202,7 @@ two arguments N1 and N2. In this case the loop runs from N1 to N2 inclusive, and the string N1 is initially assigned to the variable.

          For the world style, one or more strings are specified. There must -be one string for each processor partition or "world". See this +be one string for each processor partition or "world". See this section of the manual for information on running LAMMPS with multiple partitions via the "-partition" command-line switch. This variable command assigns one string to each @@ -216,8 +216,8 @@ different partitions.

          For the universe style, one or more strings are specified. There must be at least as many strings as there are processor partitions or -"worlds". See this page for information on -running LAMMPS with multiple partitions via the "-partition" +"worlds". See this page for information +on running LAMMPS with multiple partitions via the "-partition" command-line switch. This variable command initially assigns one string to each world. When a next command is encountered using this variable, the first processor partition to encounter it, is @@ -715,10 +715,10 @@ quotes if it contains variables preceeded by $ signs. For example,

          variable vratio equal "${vfinal}/${v0}" 
           
          -

          This is because the quotes prevent variable substitution (see this -section on parsing input script commands), -and thus an error will occur when the formula for "vratio" is -evaluated later. +

          This is because the quotes prevent variable substitution (see this +section on parsing input script +commands), and thus an error will occur when the formula for "vratio" +is evaluated later.


          diff --git a/doc/variable.txt b/doc/variable.txt index cbd6d57a9e..987e806fc3 100644 --- a/doc/variable.txt +++ b/doc/variable.txt @@ -123,8 +123,8 @@ is ignored. This means variables can NOT be re-defined in an input script (with 2 exceptions, read further). This is to allow an input script to be processed multiple times without resetting the variables; see the "jump"_jump.html or "include"_include.html commands. It also -means that using the "command-line switch"_Section_start.html#2_6 -var -will override a corresponding index variable setting in the input +means that using the "command-line switch"_Section_start.html#start_6 +-var will override a corresponding index variable setting in the input script. There are two exceptions to this rule. First, variables of style @@ -142,7 +142,7 @@ the same thing. :line -"This section"_Section_commands.html#3_2 of the manual explains how +"This section"_Section_commands.html#cmd_2 of the manual explains how occurrences of a variable name in an input script line are replaced by the variable's string. The variable name can be referenced as $x if the name "x" is a single character, or as $\{LoopVar\} if the name @@ -182,7 +182,7 @@ variable. {Index} style variables with a single string value can also be set by using the command-line switch -var; see "this -section"_Section_start.html#2_6 for details. +section"_Section_start.html#start_6 for details. The {loop} style is identical to the {index} style except that the strings are the integers from 1 to N inclusive, if only one argument N @@ -197,7 +197,7 @@ inclusive, and the string N1 is initially assigned to the variable. For the {world} style, one or more strings are specified. There must be one string for each processor partition or "world". See "this -section"_Section_start.html#2_6 of the manual for information on +section"_Section_start.html#start_6 of the manual for information on running LAMMPS with multiple partitions via the "-partition" command-line switch. This variable command assigns one string to each world. All processors in the world are assigned the same string. The @@ -210,8 +210,8 @@ different partitions. For the {universe} style, one or more strings are specified. There must be at least as many strings as there are processor partitions or -"worlds". See "this page"_Section_start.html#2_6 for information on -running LAMMPS with multiple partitions via the "-partition" +"worlds". See "this page"_Section_start.html#start_6 for information +on running LAMMPS with multiple partitions via the "-partition" command-line switch. This variable command initially assigns one string to each world. When a "next"_next.html command is encountered using this variable, the first processor partition to encounter it, is @@ -710,9 +710,9 @@ quotes if it contains variables preceeded by $ signs. For example, variable vratio equal "$\{vfinal\}/$\{v0\}" :pre This is because the quotes prevent variable substitution (see "this -section"_Section_commands.html#3_2 on parsing input script commands), -and thus an error will occur when the formula for "vratio" is -evaluated later. +section"_Section_commands.html#cmd_2 on parsing input script +commands), and thus an error will occur when the formula for "vratio" +is evaluated later. :line diff --git a/examples/README b/examples/README index 5915f61cb5..814497cf81 100644 --- a/examples/README +++ b/examples/README @@ -29,11 +29,13 @@ colloid: big colloid particles in a small particle solvent, 2d system comb: models using the COMB potential crack: crack propagation in a 2d solid dipole: point dipolar particles, 2d system +dreiding: methanol via Dreiding FF eim: NaCl using the EIM potential ellipse: ellipsoidal particles in spherical solvent, 2d system flow: Couette and Poiseuille flow in a 2d channel friction: frictional contact of spherical asperities between 2d surfaces gpu: use of the GPU package for GPU acceleration +hugoniostat: Hugoniostat shock dynamics indent: spherical indenter into a 2d solid meam: MEAM test for SiC and shear (same as shear examples) melt: rapid melt of 3d LJ system diff --git a/examples/USER/sph/README b/examples/USER/sph/README new file mode 100644 index 0000000000..b5a1acc614 --- /dev/null +++ b/examples/USER/sph/README @@ -0,0 +1 @@ +see the USER-SPH user's guide for a detailed explanation of these examples. diff --git a/examples/USER/sph/cavity_flow/cavity_flow.lmp b/examples/USER/sph/cavity_flow/cavity_flow.lmp new file mode 100644 index 0000000000..3348c42b98 --- /dev/null +++ b/examples/USER/sph/cavity_flow/cavity_flow.lmp @@ -0,0 +1,63 @@ +dimension 2 +units si +atom_style meso + +# create simulation box +region box block -0.050e-3 1.044e-3 -0.05e-3 1.044e-3 -1.0e-6 1.0e-6 units box +create_box 3 box + +# create fluid particles +region fluid block 0.0001e-3 0.999e-3 0.0001e-3 0.999e-3 EDGE EDGE side in units box +lattice sq 0.025e-3 +create_atoms 1 region fluid + +# create bottom, left, and right wall +region walls block 0.0001e-3 0.999e-3 0.0001e-3 EDGE EDGE EDGE side out units box +lattice sq2 0.025e-3 +create_atoms 2 region walls + +# create a driver strip of particles, which exerts shear forces on the fluid +region driver block EDGE EDGE 0.999e-3 EDGE EDGE EDGE side in units box +create_atoms 3 region driver + +group fluid type 1 +group walls type 2 +group driver type 3 +group integrate_full union fluid driver + +mass 3 2.0e-7 +mass 2 2.0e-7 +mass 1 4.0e-7 +set group all meso_rho 1000.0 + +# use Tait's EOS in combination with Morris' laminar viscosity. +# We set rho_0 = 1000 kg/m^3, c = 0.1 m/s, h = 6.5e-5 m. +# The dynamic viscosity is set to 1.0e-3 Pa s, corresponding to a kinematic viscosity of 1.0e-6 m^2/s +pair_style hybrid sph/taitwater/morris +pair_coeff * * sph/taitwater/morris 1000 0.1 1.0e-3 6.5e-5 +pair_coeff 2 3 none # exclude interaction between walls and shear driver + +compute rho_peratom all meso_rho/atom +compute e_peratom all meso_e/atom +compute ke_peratom all ke/atom +compute esph all reduce sum c_e_peratom +compute ke all ke +variable etot equal c_ke+c_esph + +# assign a constant velocity to shear driver +velocity driver set 0.001 0.0 0.0 units box +fix freeze_fix driver setforce 0.0 0.0 0.0 + +# do full time integration for shear driver and fluid, but keep walls stationary +fix integrate_fix_full integrate_full meso +fix integrate_fix_stationary walls meso/stationary + +dump dump_id all custom 100 dump.lammpstrj id type xs ys zs vx vy c_rho_peratom c_e_peratom +dump_modify dump_id first yes +thermo 100 +thermo_style custom step c_esph v_etot +thermo_modify norm no + +neighbor 3.0e-6 bin +timestep 5.0e-5 +run 4000 diff --git a/examples/USER/sph/heatconduction/compare_analytic.gpl b/examples/USER/sph/heatconduction/compare_analytic.gpl new file mode 100755 index 0000000000..602da6a696 --- /dev/null +++ b/examples/USER/sph/heatconduction/compare_analytic.gpl @@ -0,0 +1,24 @@ +#!/usr/bin/gnuplot + +# compare sph/heatconduction output with analytic solution to diffusion equation + +alpha = 1.0e-4 +time = 4.0 + +analytic_profile(x) = 1.5 + 0.5*erf((x-49.5e-2)/sqrt(4.0*alpha*time)) + +set ylabel "internal energy per particle" +set xlabel "x position [m]" + +plot [][0.5:2.5]'dump.last' u 3:6 ti "SPH simulation", analytic_profile(x) ti "analytic solution" + +pause -1 +#set terminal postscript color enhanced lw 2 +#set out "heat_profile.ps" +set table "simu.dat" +plot [0:1][0.5:2.5]'dump.last' u 3:6 + +set table "analytic.dat" +set samples 1000 +plot [0:1][0.5:2.5] analytic_profile(x) +#replot diff --git a/examples/USER/sph/heatconduction/sph_heat_conduction_2d.lmp b/examples/USER/sph/heatconduction/sph_heat_conduction_2d.lmp new file mode 100644 index 0000000000..2538a2fabd --- /dev/null +++ b/examples/USER/sph/heatconduction/sph_heat_conduction_2d.lmp @@ -0,0 +1,51 @@ +# mesoscopic heat conduction +# heat flow from hot right region to cold left region +# compare the temperature profile at the end opf the simulation, +# contained in file dump.last, to analytic solution. +# +# +dimension 2 +units si +atom_style meso +boundary f p p + +lattice sq 0.01 +region box block 0 100 0 10 0 0.1 +create_box 1 box +create_atoms 1 box +mass 1 1.0e-5 + +region left block EDGE 49.9 EDGE EDGE EDGE EDGE +region right block 50 EDGE EDGE EDGE EDGE EDGE +set region left meso_e 1.0 # internal energies +set region right meso_e 2.0 +set group all meso_rho 0.1 # mesoscopic density is also needed for this pair style +# For correct temperature profiles, mescoscopic density and mass * number density must coincide! + +pair_style sph/heatconduction +# i j diffusion coeff. cutoff +pair_coeff 1 1 1.0e-4 2.0e-2 + +compute ie_atom all meso_e/atom +compute ie all reduce sum c_ie_atom + +thermo 10 +thermo_style custom step temp c_ie +timestep 0.25e-1 +neighbor 0.2e-2 bin +fix integrate_fix all meso/stationary + +dump dump_fix all custom 10 dump.heat id type x y z c_ie_atom +dump_modify dump_fix first yes +run 160 +undump dump_fix + +dump dump_fix all custom 10 dump.last id type x y z c_ie_atom +dump_modify dump_fix first yes +run 0 +undump dump_fix + +dump dump_fix all custom 10 dump.last.xs id type xs ys zs c_ie_atom +dump_modify dump_fix first yes +run 0 +undump dump_fix diff --git a/examples/USER/sph/heatconduction/sph_heat_conduction_3d.lmp b/examples/USER/sph/heatconduction/sph_heat_conduction_3d.lmp new file mode 100644 index 0000000000..f34cc054c2 --- /dev/null +++ b/examples/USER/sph/heatconduction/sph_heat_conduction_3d.lmp @@ -0,0 +1,49 @@ +# mesoscopic heat conduction +# heat flow from hot right region to cold left region +# compare the temperature profile at the end opf the simulation, +# contained in file dump.last, to analytic solution. +# +# +units si +atom_style meso +newton on +boundary f p p + +lattice sc 0.01 +region box block 0 100 0 10 0 10 +create_box 1 box +create_atoms 1 box +mass 1 1.0e-5 + +region left block EDGE 49.9 EDGE EDGE EDGE EDGE +region right block 50 EDGE EDGE EDGE EDGE EDGE +set region left meso_e 1.0 # internal energies +set region right meso_e 2.0 +set group all meso_rho 10.0 # mesoscopic density is also needed for this pair style +# For correct temperature profiles, mescoscopic density and mass * number density must coincide! + +pair_style sph/heatconduction +# i j diffusion coeff. cutoff +pair_coeff 1 1 1.0e-4 2.0e-2 +neighbor 0.2e-2 bin +neigh_modify every 20 delay 0 check no + +compute ie_atom all meso_e/atom +compute ie all reduce sum c_ie_atom + +thermo_style custom step temp c_ie +thermo_modify norm no + +fix integrate_fix all meso/stationary + +thermo 10 +timestep 0.25e-1 + +dump dump_fix all custom 10 dump.heat id type x y z c_ie_atom +dump_modify dump_fix first yes +run 160 +undump dump_fix + +dump dump_fix all custom 10 dump.last id type x y z c_ie_atom +dump_modify dump_fix first yes +run 0 diff --git a/examples/USER/sph/shock_tube/compare_exact.gpl b/examples/USER/sph/shock_tube/compare_exact.gpl new file mode 100755 index 0000000000..2dfef9c655 --- /dev/null +++ b/examples/USER/sph/shock_tube/compare_exact.gpl @@ -0,0 +1,6 @@ +#!/usr/bin/gnuplot + +# compare SPH shock output with exact solution +plot 'dump.3d.last' u 3:6, "exact_solution.dat" w l +pause -1 + diff --git a/examples/USER/sph/shock_tube/exact_solution.dat b/examples/USER/sph/shock_tube/exact_solution.dat new file mode 100755 index 0000000000..22f960158e --- /dev/null +++ b/examples/USER/sph/shock_tube/exact_solution.dat @@ -0,0 +1,501 @@ +-5.000000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.980000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.960000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.940000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.920000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.900000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.880000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.860000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.840000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.820000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.800000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.780000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.760000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.740000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.720000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.700000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.680000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.660000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.640000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.620000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.600000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.580000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.560000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.540000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.520000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.500000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.480000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.460000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.440000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.420000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.400000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.380000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.360000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.340000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.320000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.300000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.280000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.260000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.240000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.220000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.200000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.180000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.160000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.140000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.120000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.100000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.080000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.060000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.040000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.020000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-4.000000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.980000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.960000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.940000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.920000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.900000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.880000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.860000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.840000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.820000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.800000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.780000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.760000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.740000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.720000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.700000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.680000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.660000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.640000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.620000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.600000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.580000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.560000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.540000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.520000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.500000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.480000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.460000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.440000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.420000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.400000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.380000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.360000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.340000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.320000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.300000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.280000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.260000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.240000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.220000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.200000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.180000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.160000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.140000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.120000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.100000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.080000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.060000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.040000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.020000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-3.000000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.980000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.960000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.940000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.920000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.900000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.880000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.860000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.840000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.820000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.800000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.780000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.760000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.740000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.720000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.700000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.680000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.660000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.640000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.620000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.600000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.580000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.560000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.540000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.520000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.500000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.480000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.460000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.440000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.420000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.400000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.380000E+01 1.000000E+00 0.000000E+00 1.000000E+00 +-2.360000E+01 9.977371E-01 2.679964E-03 9.968333E-01 +-2.340000E+01 9.907267E-01 1.101330E-02 9.870414E-01 +-2.320000E+01 9.837557E-01 1.934663E-02 9.773321E-01 +-2.300000E+01 9.768240E-01 2.767996E-02 9.677048E-01 +-2.280000E+01 9.699315E-01 3.601330E-02 9.581588E-01 +-2.260000E+01 9.630780E-01 4.434663E-02 9.486937E-01 +-2.240000E+01 9.562632E-01 5.267996E-02 9.393088E-01 +-2.220000E+01 9.494870E-01 6.101330E-02 9.300037E-01 +-2.200000E+01 9.427494E-01 6.934663E-02 9.207776E-01 +-2.180000E+01 9.360500E-01 7.767996E-02 9.116301E-01 +-2.160000E+01 9.293888E-01 8.601330E-02 9.025607E-01 +-2.140000E+01 9.227655E-01 9.434663E-02 8.935686E-01 +-2.120000E+01 9.161801E-01 1.026800E-01 8.846535E-01 +-2.100000E+01 9.096323E-01 1.110133E-01 8.758147E-01 +-2.080000E+01 9.031220E-01 1.193466E-01 8.670517E-01 +-2.060000E+01 8.966491E-01 1.276800E-01 8.583640E-01 +-2.040000E+01 8.902133E-01 1.360133E-01 8.497510E-01 +-2.020000E+01 8.838145E-01 1.443466E-01 8.412122E-01 +-2.000000E+01 8.774525E-01 1.526800E-01 8.327470E-01 +-1.980000E+01 8.711273E-01 1.610133E-01 8.243550E-01 +-1.960000E+01 8.648386E-01 1.693466E-01 8.160355E-01 +-1.940000E+01 8.585862E-01 1.776800E-01 8.077881E-01 +-1.920000E+01 8.523701E-01 1.860133E-01 7.996123E-01 +-1.900000E+01 8.461900E-01 1.943466E-01 7.915075E-01 +-1.880000E+01 8.400458E-01 2.026800E-01 7.834732E-01 +-1.860000E+01 8.339374E-01 2.110133E-01 7.755090E-01 +-1.840000E+01 8.278645E-01 2.193466E-01 7.676142E-01 +-1.820000E+01 8.218271E-01 2.276800E-01 7.597884E-01 +-1.800000E+01 8.158250E-01 2.360133E-01 7.520311E-01 +-1.780000E+01 8.098579E-01 2.443466E-01 7.443417E-01 +-1.760000E+01 8.039259E-01 2.526800E-01 7.367199E-01 +-1.740000E+01 7.980286E-01 2.610133E-01 7.291651E-01 +-1.720000E+01 7.921660E-01 2.693466E-01 7.216767E-01 +-1.700000E+01 7.863379E-01 2.776800E-01 7.142544E-01 +-1.680000E+01 7.805442E-01 2.860133E-01 7.068976E-01 +-1.660000E+01 7.747847E-01 2.943466E-01 6.996059E-01 +-1.640000E+01 7.690592E-01 3.026800E-01 6.923787E-01 +-1.620000E+01 7.633676E-01 3.110133E-01 6.852156E-01 +-1.600000E+01 7.577098E-01 3.193466E-01 6.781161E-01 +-1.580000E+01 7.520855E-01 3.276800E-01 6.710798E-01 +-1.560000E+01 7.464947E-01 3.360133E-01 6.641061E-01 +-1.540000E+01 7.409373E-01 3.443466E-01 6.571946E-01 +-1.520000E+01 7.354129E-01 3.526800E-01 6.503449E-01 +-1.500000E+01 7.299216E-01 3.610133E-01 6.435565E-01 +-1.480000E+01 7.244631E-01 3.693466E-01 6.368289E-01 +-1.460000E+01 7.190373E-01 3.776800E-01 6.301617E-01 +-1.440000E+01 7.136441E-01 3.860133E-01 6.235544E-01 +-1.420000E+01 7.082832E-01 3.943466E-01 6.170065E-01 +-1.400000E+01 7.029547E-01 4.026800E-01 6.105177E-01 +-1.380000E+01 6.976582E-01 4.110133E-01 6.040875E-01 +-1.360000E+01 6.923938E-01 4.193466E-01 5.977154E-01 +-1.340000E+01 6.871611E-01 4.276800E-01 5.914010E-01 +-1.320000E+01 6.819602E-01 4.360133E-01 5.851438E-01 +-1.300000E+01 6.767908E-01 4.443466E-01 5.789435E-01 +-1.280000E+01 6.716528E-01 4.526800E-01 5.727996E-01 +-1.260000E+01 6.665460E-01 4.610133E-01 5.667117E-01 +-1.240000E+01 6.614704E-01 4.693466E-01 5.606793E-01 +-1.220000E+01 6.564257E-01 4.776800E-01 5.547021E-01 +-1.200000E+01 6.514118E-01 4.860133E-01 5.487795E-01 +-1.180000E+01 6.464286E-01 4.943466E-01 5.429112E-01 +-1.160000E+01 6.414760E-01 5.026800E-01 5.370968E-01 +-1.140000E+01 6.365538E-01 5.110133E-01 5.313359E-01 +-1.120000E+01 6.316618E-01 5.193466E-01 5.256280E-01 +-1.100000E+01 6.268000E-01 5.276800E-01 5.199727E-01 +-1.080000E+01 6.219681E-01 5.360133E-01 5.143697E-01 +-1.060000E+01 6.171661E-01 5.443466E-01 5.088185E-01 +-1.040000E+01 6.123938E-01 5.526800E-01 5.033187E-01 +-1.020000E+01 6.076510E-01 5.610133E-01 4.978700E-01 +-1.000000E+01 6.029377E-01 5.693466E-01 4.924719E-01 +-9.800000E+00 5.982537E-01 5.776800E-01 4.871240E-01 +-9.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-9.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-9.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-9.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-8.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-8.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-8.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-8.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-8.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-7.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-7.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-7.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-7.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-7.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-6.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-6.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-6.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-6.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-6.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-5.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-5.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-5.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-5.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-5.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-4.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-4.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-4.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-4.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-4.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-3.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-3.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-3.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-3.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-3.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-2.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-2.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-2.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-2.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-2.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-1.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-1.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-1.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-1.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-1.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 +-8.000000E-01 5.938536E-01 5.855558E-01 4.821156E-01 +-6.000000E-01 5.938536E-01 5.855558E-01 4.821156E-01 +-4.000000E-01 5.938536E-01 5.855558E-01 4.821156E-01 +-2.000000E-01 5.938536E-01 5.855558E-01 4.821156E-01 + 0.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 2.000000E-01 5.938536E-01 5.855558E-01 4.821156E-01 + 4.000000E-01 5.938536E-01 5.855558E-01 4.821156E-01 + 6.000000E-01 5.938536E-01 5.855558E-01 4.821156E-01 + 8.000000E-01 5.938536E-01 5.855558E-01 4.821156E-01 + 1.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 1.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 1.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 1.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 1.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 2.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 2.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 2.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 2.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 2.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 3.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 3.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 3.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 3.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 3.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 4.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 4.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 4.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 4.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 4.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 5.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 5.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 5.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 5.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 5.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 6.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 6.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 6.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 6.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 6.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 7.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 7.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 7.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 7.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 7.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 8.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 8.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 8.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 8.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 8.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 9.000000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 9.200000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 9.400000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 9.600000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 9.800000E+00 5.938536E-01 5.855558E-01 4.821156E-01 + 1.000000E+01 5.938536E-01 5.855558E-01 4.821156E-01 + 1.020000E+01 5.938536E-01 5.855558E-01 4.821156E-01 + 1.040000E+01 5.938536E-01 5.855558E-01 4.821156E-01 + 1.060000E+01 5.938536E-01 5.855558E-01 4.821156E-01 + 1.080000E+01 5.938536E-01 5.855558E-01 4.821156E-01 + 1.100000E+01 5.938536E-01 5.855558E-01 4.821156E-01 + 1.120000E+01 5.938536E-01 5.855558E-01 4.821156E-01 + 1.140000E+01 5.938536E-01 5.855558E-01 4.821156E-01 + 1.160000E+01 5.938536E-01 5.855558E-01 4.821156E-01 + 1.180000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.200000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.220000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.240000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.260000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.280000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.300000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.320000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.340000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.360000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.380000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.400000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.420000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.440000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.460000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.480000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.500000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.520000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.540000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.560000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.580000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.600000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.620000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.640000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.660000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.680000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.700000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.720000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.740000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.760000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.780000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.800000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.820000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.840000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.860000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.880000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.900000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.920000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.940000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.960000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 1.980000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.000000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.020000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.040000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.060000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.080000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.100000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.120000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.140000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.160000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.180000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.200000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.220000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.240000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.260000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.280000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.300000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.320000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.340000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.360000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.380000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.400000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.420000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.440000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.460000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.480000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.500000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.520000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.540000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.560000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.580000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.600000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.620000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.640000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.660000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.680000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.700000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.720000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.740000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.760000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.780000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.800000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.820000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.840000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.860000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.880000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.900000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.920000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.940000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.960000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 2.980000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 3.000000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 3.020000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 3.040000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 3.060000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 3.080000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 3.100000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 3.120000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 3.140000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 3.160000E+01 3.963812E-01 5.855558E-01 4.821156E-01 + 3.180000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.200000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.220000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.240000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.260000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.280000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.300000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.320000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.340000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.360000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.380000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.400000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.420000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.440000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.460000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.480000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.500000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.520000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.540000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.560000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.580000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.600000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.620000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.640000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.660000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.680000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.700000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.720000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.740000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.760000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.780000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.800000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.820000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.840000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.860000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.880000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.900000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.920000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.940000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.960000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 3.980000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.000000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.020000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.040000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.060000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.080000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.100000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.120000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.140000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.160000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.180000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.200000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.220000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.240000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.260000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.280000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.300000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.320000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.340000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.360000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.380000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.400000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.420000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.440000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.460000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.480000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.500000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.520000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.540000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.560000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.580000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.600000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.620000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.640000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.660000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.680000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.700000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.720000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.740000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.760000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.780000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.800000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.820000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.840000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.860000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.880000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.900000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.920000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.940000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.960000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 4.980000E+01 2.500000E-01 0.000000E+00 2.500000E-01 + 5.000000E+01 2.500000E-01 0.000000E+00 2.500000E-01 diff --git a/examples/USER/sph/shock_tube/shock2d.lmp b/examples/USER/sph/shock_tube/shock2d.lmp new file mode 100755 index 0000000000..70eb4039c6 --- /dev/null +++ b/examples/USER/sph/shock_tube/shock2d.lmp @@ -0,0 +1,45 @@ +atom_style meso +dimension 2 +boundary s p p + +region box block -100 150 -4 4 -0.1 0.1 units box +create_box 2 box +lattice sq 1.0 +create_atoms 1 box + +region left block EDGE 0.0 EDGE EDGE EDGE EDGE units box +region right block 1 EDGE EDGE EDGE EDGE EDGE units box +set region right type 2 + +mass 1 1 +mass 2 0.25 +set type 1 meso_e 2.5 # internal energy corresponding to p=1, rho=1 +set type 2 meso_e 0.625 # internal energy corresponding to p=0.25, rho=0.25 +set type 1 meso_rho 1.0 +set type 2 meso_rho 0.25 + +pair_style hybrid/overlay sph/rhosum 1 sph/idealgas +pair_coeff * * sph/rhosum 4.0 +pair_coeff * * sph/idealgas 0.75 4.0 + +compute rhoatom all meso_rho/atom +compute ieatom all meso_e/atom +compute emeso all reduce sum c_ieatom # total internal energy +compute ke all ke +variable etot equal c_ke+c_emeso # total energy + +# dump positions and local density +dump dump_id all custom 100 dump.2d id type x z y c_rhoatom +dump_modify dump_id first yes + +neighbor 0.5 bin +neigh_modify every 5 delay 0 check yes +thermo 10 +thermo_style custom step c_ke c_emeso v_etot +thermo_modify norm no + +fix integration_fix all meso +fix 1 all setforce NULL 0.0 0.0 # treat as a quasi 1d problem +timestep 0.05 +log log.2d +run 400 # run for t=20 diff --git a/examples/USER/sph/shock_tube/shock3d.lmp b/examples/USER/sph/shock_tube/shock3d.lmp new file mode 100644 index 0000000000..22a3710e3d --- /dev/null +++ b/examples/USER/sph/shock_tube/shock3d.lmp @@ -0,0 +1,48 @@ +atom_style meso +boundary s p p + +region box block -100 150 -4 4 -4 4 units box +create_box 2 box +lattice sc 1.0 +create_atoms 1 box + +region left block EDGE 0.0 EDGE EDGE EDGE EDGE units box +region right block 1 EDGE EDGE EDGE EDGE EDGE units box +set region right type 2 + +mass 1 1 +mass 2 0.25 +set type 1 meso_e 2.5 # internal energy corresponding to p=1, rho=1 +set type 2 meso_e 0.625 # internal energy corresponding to p=0.25, rho=0.25 +set type 1 meso_rho 1.0 +set type 2 meso_rho 0.25 + +pair_style hybrid/overlay sph/rhosum 1 sph/idealgas +pair_coeff * * sph/rhosum 4.0 +pair_coeff * * sph/idealgas 0.75 4.0 + +compute rhoatom all meso_rho/atom +compute ieatom all meso_e/atom +compute emeso all reduce sum c_ieatom # total internal energy +compute ke all ke +variable etot equal c_ke+c_emeso # total energy + +# dump positions and local density +dump dump_id all custom 100 dump.3d id type x z y c_rhoatom +dump_modify dump_id first yes + +neighbor 0.5 bin +neigh_modify every 5 delay 0 check yes +thermo 10 +thermo_style custom step c_ke c_emeso v_etot +thermo_modify norm no + +fix integration_fix all meso +fix 1 all setforce NULL 0.0 0.0 # treat as a quasi 1d problem +timestep 0.05 +log log.3d +run 400 # run for t=20 + +undump dump_id +dump dump_id all custom 100 dump.3d.last id type x z y c_rhoatom +run 0 diff --git a/examples/USER/sph/water_collapse/data.initial b/examples/USER/sph/water_collapse/data.initial new file mode 100644 index 0000000000..9a78b60348 --- /dev/null +++ b/examples/USER/sph/water_collapse/data.initial @@ -0,0 +1,31424 @@ +LAMMPS data file from restart file: timestep = 0, procs = 4 + +15702 atoms + +2 atom types + +0.0000000000000000e+00 4.0010000000000003e+00 xlo xhi +0.0000000000000000e+00 8.0009999999999994e+00 ylo yhi +-1.0000000000000000e-03 1.0000000000000000e-03 zlo zhi + +Masses + +1 0.2 +2 0.1 + +Atoms + +1 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +3 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +4 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596427e-02 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8284271247461901e-02 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +6 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5355339059327376e-02 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +7 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2426406871192854e-02 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +8 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.9497474683058325e-02 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +9 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6568542494923803e-02 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3639610306789274e-02 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +11 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654752e-02 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +12 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7781745930520230e-02 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +13 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4852813742385708e-02 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +14 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1923881554251186e-02 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +15 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.8994949366116650e-02 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +16 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0606601717798213e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +17 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1313708498984761e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +18 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2020815280171308e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +19 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2727922061357855e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +20 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3435028842544403e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +21 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730950e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +22 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4849242404917498e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +23 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5556349186104046e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +24 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6263455967290594e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +284 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +285 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +286 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +287 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8284271247461901e-02 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +288 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2426406871192854e-02 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +289 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6568542494923803e-02 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +290 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654752e-02 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +291 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4852813742385708e-02 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +292 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.8994949366116650e-02 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +293 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1313708498984761e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +294 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2727922061357855e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +295 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730950e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +296 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5556349186104046e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +427 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +428 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +429 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +430 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +431 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +432 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +433 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +434 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +435 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +436 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +437 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +438 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +439 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +440 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +441 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +442 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +443 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +444 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +445 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +446 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +447 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +448 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +449 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +450 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +451 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +452 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +453 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +454 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +455 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +456 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +6001 1 5.5054257779048794e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6002 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6003 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6004 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6005 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6006 1 7.1371621756056595e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6007 1 7.1371621756056641e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6050 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6051 1 9.3882791880927641e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6052 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6053 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6054 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6055 1 9.7257311157309209e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6056 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6057 1 9.7257311157309175e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6058 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6059 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6060 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6061 1 9.7257311157309198e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6062 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6063 1 9.7257311157309141e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6148 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6149 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6150 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6151 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6152 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6153 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6154 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6155 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6156 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6157 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6158 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6159 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6160 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6161 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6246 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6247 1 9.7257311157309209e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6248 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6249 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6250 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6251 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6252 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6253 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6254 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6255 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6256 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6257 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6258 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6259 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6344 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6345 1 9.7257311157309175e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6346 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6347 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6348 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6349 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6350 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6351 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6352 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6353 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6354 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6355 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6356 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6357 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6442 1 7.1371621756056595e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6443 1 9.7257311157309152e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6444 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6445 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6446 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6447 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6448 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6449 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6450 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6451 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6452 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6453 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6454 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6455 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6540 1 7.1371621756056641e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6541 1 9.7257311157309209e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6542 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6543 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6544 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6545 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6546 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6547 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6548 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6549 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6550 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6551 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6552 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6553 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6639 1 9.7257311157309141e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6641 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6643 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6645 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6647 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6649 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6651 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +25 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6970562748477142e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +26 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7677669529663689e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +27 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8384776310850237e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +28 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9091883092036782e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +29 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9798989873223330e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +30 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0506096654409878e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +31 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596426e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +32 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782973e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +33 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +34 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3334523779156069e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +35 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4041630560342617e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +36 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4748737341529164e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +37 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5455844122715710e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +38 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6162950903902260e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +39 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6870057685088805e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +40 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7577164466275356e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +41 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8284271247461901e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +42 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8991378028648451e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +43 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9698484809834996e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +44 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0405591591021541e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +45 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1112698372208092e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +46 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1819805153394637e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +47 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2526911934581187e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +48 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3234018715767732e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +297 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6970562748477142e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +298 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8384776310850237e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +299 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9798989873223330e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +300 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596426e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +301 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +302 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4041630560342617e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +303 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5455844122715710e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +304 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6870057685088805e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +305 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8284271247461901e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +306 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9698484809834996e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +307 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1112698372208092e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +308 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2526911934581187e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +6008 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6009 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6010 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6011 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6012 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6013 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6014 1 7.1371621756056709e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6015 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6016 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6064 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6065 1 9.7257311157309221e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6066 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6067 1 9.7257311157309198e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6068 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6069 1 9.7257311157309141e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6070 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6071 1 9.7257311157309209e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6072 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6073 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6074 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6075 1 9.7257311157309323e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6076 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6077 1 9.7257311157309141e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6078 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6079 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6080 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6162 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6163 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6164 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6165 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6166 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6167 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6168 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6169 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6170 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6171 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6172 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6173 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6174 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6175 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6176 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6177 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6178 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6260 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6261 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6262 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6263 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6264 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6265 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6266 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6267 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6268 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6269 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6270 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6271 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6272 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6273 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6274 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6275 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6276 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6358 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6359 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6360 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6361 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6362 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6363 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6364 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6365 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6366 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6367 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6368 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6369 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6370 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6371 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6372 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6373 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6374 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6456 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6457 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6458 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6459 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6460 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6461 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6462 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6463 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6464 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6465 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6466 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6467 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6468 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6469 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6470 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6471 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6472 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6554 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6555 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6556 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6557 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6558 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6559 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6560 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6561 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6562 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6563 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6564 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6565 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6566 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6567 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6568 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6569 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6570 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6653 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6655 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6657 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6659 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6661 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6663 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6665 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6667 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +49 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3941125496954283e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +50 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4648232278140828e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +51 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5355339059327379e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +52 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6062445840513924e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +53 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6769552621700474e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +54 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7476659402887019e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +55 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073564e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +56 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260115e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +57 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446660e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +58 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0305086527633210e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +59 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1012193308819755e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +60 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1719300090006306e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +61 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2426406871192851e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +62 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.3133513652379402e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +63 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.3840620433565947e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +64 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4547727214752497e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +65 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5254833995939042e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +66 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5961940777125587e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +67 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6669047558312138e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +68 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7376154339498683e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +69 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8083261120685233e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +70 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8790367901871778e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +71 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.9497474683058329e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +309 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3941125496954283e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +310 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5355339059327379e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +311 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6769552621700474e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +312 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073564e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +313 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446660e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +314 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1012193308819755e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +315 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2426406871192851e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +316 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.3840620433565947e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +317 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5254833995939042e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +318 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6669047558312138e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +319 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8083261120685233e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +320 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.9497474683058329e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +6017 1 7.1371621756056709e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6018 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6019 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6020 1 7.1371621756056709e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6021 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6022 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6023 1 7.1371621756056709e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6024 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6081 1 9.7257311157309152e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6082 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6083 1 9.7257311157309323e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6084 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6085 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6086 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6087 1 9.7257311157309141e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6088 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6089 1 9.7257311157309323e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6090 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6091 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6092 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6093 1 9.7257311157309141e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6094 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6095 1 9.7257311157309323e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6096 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6097 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6179 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6180 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6181 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6182 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6183 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6184 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6185 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6186 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6187 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6188 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6189 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6190 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6191 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6192 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6193 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6194 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6195 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6277 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6278 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6279 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6280 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6281 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6282 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6283 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6284 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6285 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6286 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6287 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6288 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6289 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6290 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6291 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6292 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6293 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6375 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6376 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6377 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6378 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6379 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6380 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6381 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6382 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6383 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6384 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6385 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6386 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6387 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6388 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6389 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6390 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6391 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6473 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6474 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6475 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6476 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6477 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6478 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6479 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6480 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6481 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6482 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6483 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6484 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6485 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6486 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6487 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6488 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6489 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6571 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6572 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6573 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6574 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6575 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6576 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6577 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6578 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6579 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6580 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6581 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6582 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6583 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6584 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6585 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6586 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6587 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6669 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6671 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6673 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6675 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6677 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6679 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6681 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6683 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6685 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +72 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0204581464244880e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +73 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0911688245431419e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +74 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1618795026617970e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +75 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2325901807804520e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +76 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3033008588991060e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +77 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3740115370177610e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +78 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4447222151364161e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +79 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5154328932550711e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +80 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5861435713737251e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +81 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6568542494923801e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +82 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7275649276110352e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +83 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7982756057296903e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +84 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8689862838483442e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +85 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9396969619669993e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +86 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0104076400856543e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +87 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0811183182043083e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +88 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.1518289963229633e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +89 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2225396744416184e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +90 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2932503525602734e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +91 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3639610306789274e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +92 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4346717087975824e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +93 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5053823869162375e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +94 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5760930650348925e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +95 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6468037431535465e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +321 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0911688245431419e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +322 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2325901807804520e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +323 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3740115370177610e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +324 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5154328932550711e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +325 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6568542494923801e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +326 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7982756057296903e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +327 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9396969619669993e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +328 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0811183182043083e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +329 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2225396744416184e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +330 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3639610306789274e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +331 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5053823869162375e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +332 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6468037431535465e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +6025 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6026 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6027 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6028 1 7.1371621756056845e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6029 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6030 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6031 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6032 1 7.1371621756056550e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6098 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6099 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6100 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6101 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6102 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6103 1 9.7257311157309198e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6104 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6105 1 9.7257311157309550e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6106 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6107 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6108 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6109 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6110 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6111 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6112 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6113 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6196 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6197 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6198 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6199 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6200 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6201 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6202 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6203 1 1.0063722103956388e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6204 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6205 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6206 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6207 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6208 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6209 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6210 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6211 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6294 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6295 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6296 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6297 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6298 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6299 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6300 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6301 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6302 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6303 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6304 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6305 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6306 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6307 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6308 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6309 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6392 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6393 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6394 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6395 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6396 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6397 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6398 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6399 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6400 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6401 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6402 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6403 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6404 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6405 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6406 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6407 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6490 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6491 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6492 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6493 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6494 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6495 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6496 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6497 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6498 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6499 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6500 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6501 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6502 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6503 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6504 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6505 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6588 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6589 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6590 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6591 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6592 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6593 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6594 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6595 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6596 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6597 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6598 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6599 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6600 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6601 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6602 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6603 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6687 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6689 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6691 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6693 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6695 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6697 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6699 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6701 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +96 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7175144212722016e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +97 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7882250993908566e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +98 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8589357775095106e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +99 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9296464556281656e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +100 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0003571337468207e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +101 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654757e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +102 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1417784899841297e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +103 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2124891681027847e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +104 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2831998462214398e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +105 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3539105243400948e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +106 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.4246212024587488e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +107 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.4953318805774038e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +108 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5660425586960589e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +109 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6367532368147129e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +110 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7074639149333679e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +111 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7781745930520230e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +112 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8488852711706780e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +113 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9195959492893320e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +114 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9903066274079870e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +115 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0610173055266421e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +116 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1317279836452971e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +117 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2024386617639511e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +118 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2731493398826061e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +333 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7882250993908566e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +334 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9296464556281656e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +335 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654757e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +336 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2124891681027847e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +337 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3539105243400948e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +338 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.4953318805774038e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +339 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6367532368147129e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +340 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7781745930520230e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +341 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9195959492893320e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +342 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0610173055266421e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +343 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2024386617639511e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +6033 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6034 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6035 1 7.1371621756056845e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6036 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6037 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6038 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6039 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6040 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6041 1 7.1371621756056845e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6114 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6115 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6116 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6117 1 9.7257311157309516e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6118 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6119 1 9.7257311157309209e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6120 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6121 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6122 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6123 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6124 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6125 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6126 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6127 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6128 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6129 1 9.7257311157309198e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6130 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6212 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6213 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6214 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6215 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6216 1 1.0063722103956388e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6217 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6218 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6219 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6220 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6221 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6222 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6223 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6224 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6225 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6226 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6227 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6228 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6310 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6311 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6312 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6313 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6314 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6315 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6316 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6317 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6318 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6319 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6320 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6321 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6322 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6323 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6324 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6325 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6326 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6408 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6409 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6410 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6411 1 1.0063722103956388e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6412 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6413 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6414 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6415 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6416 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6417 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6418 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6419 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6420 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6421 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6422 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6423 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6424 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6506 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6507 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6508 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6509 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6510 1 1.0063722103956384e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6511 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6512 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6513 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6514 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6515 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6516 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6517 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6518 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6519 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6520 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6521 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6522 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6604 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6605 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6606 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6607 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6608 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6609 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6610 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6611 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6612 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6613 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6614 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6615 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6616 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6617 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6618 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6619 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6620 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6703 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6705 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6707 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6709 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6711 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6713 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6715 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6717 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +119 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3438600180012612e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +120 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4145706961199151e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +121 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4852813742385702e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +122 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5559920523572253e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +123 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.6267027304758803e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +124 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.6974134085945343e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +125 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7681240867131893e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +126 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8388347648318444e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +127 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9095454429504994e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +128 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9802561210691534e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +129 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0509667991878084e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +130 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1216774773064635e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +131 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1923881554251174e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +132 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2630988335437725e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +133 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3338095116624276e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +134 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4045201897810826e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +135 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4752308678997366e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +136 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5459415460183916e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +137 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6166522241370467e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +138 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6873629022557017e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +139 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7580735803743557e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +140 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.8287842584930107e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +141 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.8994949366116658e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +142 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.9702056147303197e-01 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +344 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3438600180012612e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +345 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4852813742385702e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +346 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.6267027304758803e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +347 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7681240867131893e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +348 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9095454429504994e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +349 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0509667991878084e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +350 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1923881554251174e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +351 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3338095116624276e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +352 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4752308678997366e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +353 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6166522241370467e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +354 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7580735803743557e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +355 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.8994949366116658e-01 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +6042 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6043 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6044 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6045 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6046 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6047 1 7.1371621756056845e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6048 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6049 1 6.7997102479675050e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 2.9999999999999999e-02 0.0000000000000000e+00 0 0 0 +6131 1 9.7257311157309539e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6132 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6133 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6134 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6135 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6136 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6137 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6138 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6139 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6140 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6141 1 9.7257311157309198e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6142 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6143 1 9.7257311157309550e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6144 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6145 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6146 1 9.7257311157309130e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 5.0000000000000003e-02 0.0000000000000000e+00 0 0 0 +6147 1 6.7997102479675050e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 0.0000000000000000e+00 0 0 0 +6229 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6230 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6231 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6232 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6233 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6234 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6235 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6236 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6237 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6238 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6239 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6240 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6241 1 1.0063722103956388e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6242 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6243 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6244 1 9.7257311157309118e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 7.0000000000000007e-02 0.0000000000000000e+00 0 0 0 +6245 1 7.1371621756056572e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 0.0000000000000000e+00 0 0 0 +6327 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6328 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6329 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6330 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6331 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6332 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6333 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6334 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6335 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6336 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6337 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6338 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6339 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6340 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6341 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6342 1 9.7257311157309118e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 8.9999999999999997e-02 0.0000000000000000e+00 0 0 0 +6343 1 7.1371621756056595e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 0.0000000000000000e+00 0 0 0 +6425 1 1.0063722103956388e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6426 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6427 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6428 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6429 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6430 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6431 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6432 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6433 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6434 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6435 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6436 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6437 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6438 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6439 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6440 1 9.7257311157309152e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +6441 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6523 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6524 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6525 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6526 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6527 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6528 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6529 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6530 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6531 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6532 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6533 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6534 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6535 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6536 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6537 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6538 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +6539 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6621 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6622 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6623 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6624 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6625 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6626 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6627 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6628 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6629 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6630 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6631 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6632 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6633 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6634 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6635 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6636 1 9.7257311157309141e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.4999999999999999e-01 0.0000000000000000e+00 0 0 0 +6637 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +6719 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6721 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6723 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6725 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6727 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6729 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6731 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6733 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +6735 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 0.0000000000000000e+00 0 0 0 +143 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0040916292848976e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +144 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0111626970967629e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +145 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0182337649086284e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +146 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0253048327204939e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +147 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0323759005323594e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +148 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0394469683442249e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +149 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0465180361560904e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +150 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0535891039679559e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +151 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0606601717798212e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +152 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0677312395916867e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +153 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0748023074035522e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +154 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0818733752154177e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +155 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0889444430272832e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +156 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0960155108391487e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +157 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1030865786510142e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +158 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1101576464628797e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +159 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1172287142747450e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +160 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1242997820866105e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +161 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1313708498984760e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +162 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1384419177103415e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +163 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1455129855222070e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +164 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1525840533340725e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +165 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1596551211459381e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +166 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1667261889578033e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +356 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0040916292848976e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +357 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0182337649086284e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +358 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0323759005323594e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +359 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0465180361560904e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +360 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0606601717798212e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +361 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0748023074035522e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +362 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0889444430272832e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +363 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1030865786510142e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +364 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1172287142747450e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +365 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1313708498984760e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +366 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1455129855222070e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +367 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1596551211459381e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +167 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1737972567696688e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +168 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1808683245815343e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +169 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1879393923933999e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +170 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1950104602052654e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +171 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2020815280171309e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +172 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2091525958289964e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +173 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2162236636408617e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +174 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2232947314527272e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +175 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2303657992645927e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +176 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2374368670764582e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +177 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2445079348883237e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +178 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2515790027001892e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +179 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2586500705120547e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +180 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2657211383239202e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +181 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2727922061357855e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +182 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2798632739476510e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +183 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2869343417595165e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +184 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2940054095713820e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +185 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3010764773832475e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +186 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3081475451951130e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +187 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3152186130069785e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +188 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3222896808188438e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +189 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3293607486307093e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +368 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1737972567696688e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +369 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1879393923933999e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +370 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2020815280171309e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +371 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2162236636408617e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +372 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2303657992645927e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +373 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2445079348883237e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +374 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2586500705120547e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +375 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2727922061357855e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +376 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2869343417595165e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +377 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3010764773832475e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +378 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3152186130069785e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +379 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3293607486307093e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +190 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3364318164425748e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +191 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3435028842544403e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +192 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3505739520663058e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +193 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3576450198781713e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +194 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3647160876900368e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +195 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3717871555019021e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +196 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3788582233137676e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +197 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3859292911256331e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +198 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3930003589374986e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +199 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000714267493641e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +200 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4071424945612296e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +201 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +202 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4212846301849607e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +203 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4283556979968259e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +204 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4354267658086914e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +205 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4424978336205569e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +206 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4495689014324225e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +207 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4566399692442880e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +208 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4637110370561535e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +209 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4707821048680190e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +210 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4778531726798843e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +211 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4849242404917498e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +212 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4919953083036153e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +213 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4990663761154808e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +380 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3435028842544403e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +381 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3576450198781713e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +382 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3717871555019021e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +383 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3859292911256331e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +384 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000714267493641e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +385 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +386 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4283556979968259e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +387 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4424978336205569e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +388 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4566399692442880e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +389 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4707821048680190e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +390 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4849242404917498e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +391 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4990663761154808e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +214 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5061374439273463e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +215 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5132085117392118e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +216 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5202795795510773e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +217 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5273506473629426e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +218 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5344217151748081e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +219 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5414927829866736e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +220 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5485638507985391e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +221 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5556349186104046e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +222 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5627059864222701e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +223 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5697770542341356e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +224 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5768481220460011e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +225 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5839191898578664e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +226 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5909902576697319e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +227 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5980613254815974e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +228 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6051323932934629e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +229 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6122034611053284e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +230 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6192745289171939e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +231 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6263455967290594e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +232 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6334166645409247e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +233 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6404877323527902e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +234 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6475588001646557e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +235 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6546298679765212e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +236 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6617009357883867e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +392 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5132085117392118e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +393 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5273506473629426e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +394 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5414927829866736e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +395 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5556349186104046e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +396 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5697770542341356e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +397 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5839191898578664e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +398 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5980613254815974e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +399 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6122034611053284e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +400 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6263455967290594e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +401 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6404877323527902e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +402 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6546298679765212e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +237 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6687720036002522e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +238 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6758430714121177e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +239 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6829141392239830e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +240 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6899852070358485e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +241 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6970562748477140e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +242 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7041273426595795e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +243 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7111984104714451e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +244 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7182694782833106e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +245 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7253405460951761e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +246 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7324116139070416e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +247 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7394826817189069e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +248 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7465537495307724e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +249 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7536248173426379e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +250 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7606958851545034e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +251 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7677669529663689e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +252 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7748380207782344e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +253 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7819090885900999e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +254 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7889801564019652e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +255 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7960512242138307e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +256 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8031222920256962e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +257 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8101933598375617e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +258 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8172644276494272e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +259 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8243354954612927e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +260 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8314065632731582e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +403 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6687720036002522e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +404 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6829141392239830e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +405 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6970562748477140e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +406 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7111984104714451e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +407 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7253405460951761e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +408 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7394826817189069e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +409 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7536248173426379e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +410 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7677669529663689e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +411 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7819090885900999e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +412 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7960512242138307e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +413 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8101933598375617e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +414 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8243354954612927e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +261 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8384776310850235e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +262 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8455486988968890e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +263 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8526197667087545e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +264 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8596908345206200e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +265 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8667619023324855e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +266 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8738329701443510e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +267 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8809040379562165e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +268 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8879751057680818e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +269 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8950461735799473e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +270 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9021172413918128e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +271 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9091883092036783e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +272 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9162593770155438e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +273 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9233304448274093e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +274 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9304015126392748e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +275 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9374725804511403e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +276 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9445436482630056e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +277 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9516147160748711e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +278 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9586857838867366e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +279 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9657568516986021e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +280 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9728279195104677e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +281 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9798989873223332e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +282 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9869700551341987e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +283 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9940411229460639e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +415 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8384776310850235e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +416 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8526197667087545e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +417 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8667619023324855e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +418 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8809040379562165e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +419 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8950461735799473e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +420 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9091883092036783e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +421 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9233304448274093e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +422 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9374725804511403e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +423 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9516147160748711e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +424 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9657568516986021e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +425 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9798989873223332e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +426 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9940411229460639e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +457 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +458 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +459 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +460 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +461 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +462 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +463 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +464 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +465 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +466 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +467 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +468 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +469 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +470 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +471 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +472 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +473 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +474 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +475 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.5455844122715710e-01 0.0000000000000000e+00 0 0 0 +476 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.6162950903902260e-01 0.0000000000000000e+00 0 0 0 +477 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.5455844122715710e-01 0.0000000000000000e+00 0 0 0 +478 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.6870057685088805e-01 0.0000000000000000e+00 0 0 0 +479 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.7577164466275356e-01 0.0000000000000000e+00 0 0 0 +480 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.6870057685088805e-01 0.0000000000000000e+00 0 0 0 +481 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.8284271247461901e-01 0.0000000000000000e+00 0 0 0 +482 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.8991378028648451e-01 0.0000000000000000e+00 0 0 0 +483 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.8284271247461901e-01 0.0000000000000000e+00 0 0 0 +484 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.9698484809834996e-01 0.0000000000000000e+00 0 0 0 +485 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.0405591591021541e-01 0.0000000000000000e+00 0 0 0 +486 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.9698484809834996e-01 0.0000000000000000e+00 0 0 0 +487 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.1112698372208092e-01 0.0000000000000000e+00 0 0 0 +488 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.1819805153394637e-01 0.0000000000000000e+00 0 0 0 +489 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.1112698372208092e-01 0.0000000000000000e+00 0 0 0 +490 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.2526911934581187e-01 0.0000000000000000e+00 0 0 0 +491 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.3234018715767732e-01 0.0000000000000000e+00 0 0 0 +492 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.2526911934581187e-01 0.0000000000000000e+00 0 0 0 +6638 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6640 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6642 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6644 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6646 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6648 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6650 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6736 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6737 1 9.7257311157309221e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6738 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6739 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6740 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6741 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6742 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6743 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6744 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6745 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6746 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6747 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6748 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6749 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6834 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6835 1 9.7257311157309209e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6836 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6837 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6838 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6839 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6840 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6841 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6842 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6843 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6844 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6845 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6846 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6847 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6932 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6933 1 9.7257311157309141e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6934 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6935 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6936 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6937 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6938 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6939 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6940 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6941 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6942 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6943 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6944 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6945 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7030 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7031 1 9.7257311157309198e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7032 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7033 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7034 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7035 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7036 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7037 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7038 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7039 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7040 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7041 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7042 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7043 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7128 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7129 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7130 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7131 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7132 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7133 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7134 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7135 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7136 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7137 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7138 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7139 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7140 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7141 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7226 1 7.1371621756056697e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7227 1 9.7257311157309334e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7228 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7229 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7230 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7231 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7232 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7233 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7234 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7235 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7236 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7237 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7238 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7239 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7324 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7325 1 9.7257311157309152e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7326 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7327 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7328 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7329 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7330 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7331 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7332 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7333 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7334 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7335 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7336 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7337 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7422 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7423 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7424 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7425 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7426 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7427 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7428 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7429 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7430 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7431 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7432 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7433 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7434 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7435 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +6652 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6654 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6656 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6658 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6660 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6662 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6664 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6666 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6668 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6750 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6751 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6752 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6753 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6754 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6755 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6756 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6757 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6758 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6759 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6760 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6761 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6762 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6763 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6764 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6765 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6766 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6848 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6849 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6850 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6851 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6852 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6853 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6854 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6855 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6856 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6857 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6858 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6859 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6860 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6861 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6862 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6863 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6864 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6946 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6947 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6948 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6949 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6950 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6951 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6952 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6953 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6954 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6955 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6956 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6957 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6958 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6959 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6960 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6961 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6962 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7044 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7045 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7046 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7047 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7048 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7049 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7050 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7051 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7052 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7053 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7054 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7055 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7056 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7057 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7058 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7059 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7060 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7142 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7143 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7144 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7145 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7146 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7147 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7148 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7149 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7150 1 1.0063722103956345e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7151 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7152 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7153 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7154 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7155 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7156 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7157 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7158 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7240 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7241 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7242 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7243 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7244 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7245 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7246 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7247 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7248 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7249 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7250 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7251 1 1.0063722103956379e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7252 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7253 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7254 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7255 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7256 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7338 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7339 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7340 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7341 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7342 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7343 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7344 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7345 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7346 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7347 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7348 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7349 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7350 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7351 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7352 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7353 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7354 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7436 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7437 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7438 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7439 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7440 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7441 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7442 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7443 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7444 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7445 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7446 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7447 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7448 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7449 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7450 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7451 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7452 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +6670 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6672 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6674 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6676 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6678 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6680 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6682 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6684 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6767 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6768 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6769 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6770 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6771 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6772 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6773 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6774 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6775 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6776 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6777 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6778 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6779 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6780 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6781 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6782 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6783 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6865 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6866 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6867 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6868 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6869 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6870 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6871 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6872 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6873 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6874 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6875 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6876 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6877 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6878 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6879 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6880 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6881 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6963 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6964 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6965 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6966 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6967 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6968 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6969 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6970 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6971 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6972 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6973 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6974 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6975 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6976 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6977 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6978 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6979 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7061 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7062 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7063 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7064 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7065 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7066 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7067 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7068 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7069 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7070 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7071 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7072 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7073 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7074 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7075 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7076 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7077 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7159 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7160 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7161 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7162 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7163 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7164 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7165 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7166 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7167 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7168 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7169 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7170 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7171 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7172 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7173 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7174 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7175 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7257 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7258 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7259 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7260 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7261 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7262 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7263 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7264 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7265 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7266 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7267 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7268 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7269 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7270 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7271 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7272 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7273 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7355 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7356 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7357 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7358 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7359 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7360 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7361 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7362 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7363 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7364 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7365 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7366 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7367 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7368 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7369 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7370 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7371 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7453 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7454 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7455 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7456 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7457 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7458 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7459 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7460 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7461 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7462 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7463 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7464 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7465 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7466 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7467 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7468 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7469 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +6686 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6688 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6690 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6692 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6694 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6696 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6698 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6700 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6784 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6785 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6786 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6787 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6788 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6789 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6790 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6791 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6792 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6793 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6794 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6795 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6796 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6797 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6798 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6799 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6882 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6883 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6884 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6885 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6886 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6887 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6888 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6889 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6890 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6891 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6892 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6893 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6894 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6895 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6896 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6897 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6980 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6981 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6982 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6983 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6984 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6985 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6986 1 1.0063722103956393e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6987 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6988 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6989 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6990 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6991 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6992 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6993 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6994 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6995 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7078 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7079 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7080 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7081 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7082 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7083 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7084 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7085 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7086 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7087 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7088 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7089 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7090 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7091 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7092 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7093 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7176 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7177 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7178 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7179 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7180 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7181 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7182 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7183 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7184 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7185 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7186 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7187 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7188 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7189 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7190 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7191 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7274 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7275 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7276 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7277 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7278 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7279 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7280 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7281 1 1.0063722103956402e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7282 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7283 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7284 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7285 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7286 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7287 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7288 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7289 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7372 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7373 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7374 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7375 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7376 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7377 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7378 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7379 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7380 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7381 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7382 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7383 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7384 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7385 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7386 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7387 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7470 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7471 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7472 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7473 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7474 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7475 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7476 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7477 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7478 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7479 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7480 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7481 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7482 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7483 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7484 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7485 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +6702 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6704 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6706 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6708 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6710 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6712 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6714 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6716 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6718 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6800 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6801 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6802 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6803 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6804 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6805 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6806 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6807 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6808 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6809 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6810 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6811 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6812 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6813 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6814 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6815 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6816 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6898 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6899 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6900 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6901 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6902 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6903 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6904 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6905 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6906 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6907 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6908 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6909 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6910 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6911 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6912 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6913 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6914 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6996 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6997 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +6998 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +6999 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7000 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7001 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7002 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7003 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7004 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7005 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7006 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7007 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7008 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7009 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7010 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7011 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7012 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7094 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7095 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7096 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7097 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7098 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7099 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7100 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7101 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7102 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7103 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7104 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7105 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7106 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7107 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7108 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7109 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7110 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7192 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7193 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7194 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7195 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7196 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7197 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7198 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7199 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7200 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7201 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7202 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7203 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7204 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7205 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7206 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7207 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7208 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7290 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7291 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7292 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7293 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7294 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7295 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7296 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7297 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7298 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7299 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7300 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7301 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7302 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7303 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7304 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7305 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7306 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7388 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7389 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7390 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7391 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7392 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7393 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7394 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7395 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7396 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7397 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7398 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7399 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7400 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7401 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7402 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7403 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7404 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7486 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7487 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7488 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7489 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7490 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7491 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7492 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7493 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7494 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7495 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7496 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7497 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7498 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7499 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7500 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7501 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7502 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +6720 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6722 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6724 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6726 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6728 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6730 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6732 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6734 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.7000000000000001e-01 0.0000000000000000e+00 0 0 0 +6817 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6818 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6819 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6820 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6821 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6822 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6823 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6824 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6825 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6826 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6827 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6828 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6829 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6830 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6831 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6832 1 9.7257311157309096e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.9000000000000000e-01 0.0000000000000000e+00 0 0 0 +6833 1 7.1371621756056607e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 0.0000000000000000e+00 0 0 0 +6915 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6916 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6917 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6918 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6919 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6920 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6921 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6922 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6923 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6924 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6925 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6926 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6927 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6928 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6929 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +6930 1 9.7257311157309141e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 2.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +6931 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 0.0000000000000000e+00 0 0 0 +7013 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7014 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7015 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7016 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7017 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7018 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7019 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7020 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7021 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7022 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7023 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7024 1 1.0063722103956393e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7025 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7026 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7027 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7028 1 9.7257311157309152e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 2.3000000000000001e-01 0.0000000000000000e+00 0 0 0 +7029 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +7111 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7112 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7113 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7114 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7115 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7116 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7117 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7118 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7119 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7120 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7121 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7122 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7123 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7124 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7125 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7126 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 2.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +7127 1 7.1371621756056607e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +7209 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7210 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7211 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7212 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7213 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7214 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7215 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7216 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7217 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7218 1 1.0063722103956343e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7219 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7220 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7221 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7222 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7223 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7224 1 9.7257311157309096e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 2.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +7225 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +7307 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7308 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7309 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7310 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7311 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7312 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7313 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7314 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7315 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7316 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7317 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7318 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7319 1 1.0063722103956402e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7320 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7321 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7322 1 9.7257311157309255e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 2.8999999999999998e-01 0.0000000000000000e+00 0 0 0 +7323 1 7.1371621756056652e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +7405 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7406 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7407 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7408 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7409 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7410 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7411 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7412 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7413 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7414 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7415 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7416 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7417 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7418 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7419 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7420 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 3.1000000000000000e-01 0.0000000000000000e+00 0 0 0 +7421 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 0.0000000000000000e+00 0 0 0 +7503 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7504 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7505 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7506 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7507 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7508 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7509 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7510 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7511 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7512 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7513 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7514 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7515 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7516 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7517 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +7518 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 3.3000000000000002e-01 0.0000000000000000e+00 0 0 0 +7519 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 0.0000000000000000e+00 0 0 0 +493 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.3941125496954283e-01 0.0000000000000000e+00 0 0 0 +494 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.4648232278140828e-01 0.0000000000000000e+00 0 0 0 +495 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.3941125496954283e-01 0.0000000000000000e+00 0 0 0 +496 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.5355339059327379e-01 0.0000000000000000e+00 0 0 0 +497 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.6062445840513924e-01 0.0000000000000000e+00 0 0 0 +498 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.5355339059327379e-01 0.0000000000000000e+00 0 0 0 +499 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.6769552621700474e-01 0.0000000000000000e+00 0 0 0 +500 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.7476659402887019e-01 0.0000000000000000e+00 0 0 0 +501 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.6769552621700474e-01 0.0000000000000000e+00 0 0 0 +502 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.8183766184073564e-01 0.0000000000000000e+00 0 0 0 +503 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.8890872965260115e-01 0.0000000000000000e+00 0 0 0 +504 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.8183766184073564e-01 0.0000000000000000e+00 0 0 0 +505 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.9597979746446660e-01 0.0000000000000000e+00 0 0 0 +506 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.0305086527633210e-01 0.0000000000000000e+00 0 0 0 +507 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.9597979746446660e-01 0.0000000000000000e+00 0 0 0 +508 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.1012193308819755e-01 0.0000000000000000e+00 0 0 0 +509 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.1719300090006306e-01 0.0000000000000000e+00 0 0 0 +510 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.1012193308819755e-01 0.0000000000000000e+00 0 0 0 +511 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.2426406871192851e-01 0.0000000000000000e+00 0 0 0 +512 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.3133513652379402e-01 0.0000000000000000e+00 0 0 0 +513 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.2426406871192851e-01 0.0000000000000000e+00 0 0 0 +514 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.3840620433565947e-01 0.0000000000000000e+00 0 0 0 +515 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.4547727214752497e-01 0.0000000000000000e+00 0 0 0 +516 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.3840620433565947e-01 0.0000000000000000e+00 0 0 0 +517 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.5254833995939042e-01 0.0000000000000000e+00 0 0 0 +518 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.5961940777125587e-01 0.0000000000000000e+00 0 0 0 +519 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.5254833995939042e-01 0.0000000000000000e+00 0 0 0 +520 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.6669047558312138e-01 0.0000000000000000e+00 0 0 0 +521 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.7376154339498683e-01 0.0000000000000000e+00 0 0 0 +522 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.6669047558312138e-01 0.0000000000000000e+00 0 0 0 +523 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.8083261120685233e-01 0.0000000000000000e+00 0 0 0 +524 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.8790367901871778e-01 0.0000000000000000e+00 0 0 0 +525 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.8083261120685233e-01 0.0000000000000000e+00 0 0 0 +526 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.9497474683058329e-01 0.0000000000000000e+00 0 0 0 +528 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.9497474683058329e-01 0.0000000000000000e+00 0 0 0 +7520 1 7.1371621756056709e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7521 1 9.7257311157309152e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7522 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7523 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7524 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7525 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7526 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7527 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7528 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7529 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7530 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7531 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7532 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7533 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7618 1 7.1371621756056607e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7619 1 9.7257311157309334e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7620 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7621 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7622 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7623 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7624 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7625 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7626 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7627 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7628 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7629 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7630 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7631 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7716 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7717 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7718 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7719 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7720 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7721 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7722 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7723 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7724 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7725 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7726 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7727 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7728 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7729 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7814 1 7.1371621756056709e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7815 1 9.7257311157309152e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7816 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7817 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7818 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7819 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7820 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7821 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7822 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7823 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7824 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7825 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7826 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7827 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7912 1 7.1371621756056607e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7913 1 9.7257311157309334e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7914 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7915 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7916 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7917 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7918 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7919 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7920 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7921 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7922 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7923 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7924 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7925 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +8010 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8011 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8012 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8013 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8014 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8015 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8016 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8017 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8018 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8019 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8020 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8021 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8022 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8023 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8108 1 7.1371621756056709e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8109 1 9.7257311157309152e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8110 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8111 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8112 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8113 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8114 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8115 1 1.0063722103956350e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8116 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8117 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8118 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8119 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8120 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8121 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8206 1 7.1371621756056618e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8207 1 9.7257311157309334e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8208 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8209 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8210 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8211 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8212 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8213 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8214 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8215 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8216 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8217 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8218 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8219 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8305 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8307 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8309 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8311 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8313 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8315 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8317 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +7534 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7535 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7536 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7537 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7538 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7539 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7540 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7541 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7542 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7543 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7544 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7545 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7546 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7547 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7548 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7549 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7550 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7632 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7633 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7634 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7635 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7636 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7637 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7638 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7639 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7640 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7641 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7642 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7643 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7644 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7645 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7646 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7647 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7648 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7730 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7731 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7732 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7733 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7734 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7735 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7736 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7737 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7738 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7739 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7740 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7741 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7742 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7743 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7744 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7745 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7746 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7828 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7829 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7830 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7831 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7832 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7833 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7834 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7835 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7836 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7837 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7838 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7839 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7840 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7841 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7842 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7843 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7844 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7926 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7927 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7928 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7929 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7930 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7931 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7932 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7933 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7934 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7935 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7936 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7937 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7938 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7939 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7940 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7941 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7942 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +8024 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8025 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8026 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8027 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8028 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8029 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8030 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8031 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8032 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8033 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8034 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8035 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8036 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8037 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8038 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8039 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8040 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8122 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8123 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8124 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8125 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8126 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8127 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8128 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8129 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8130 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8131 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8132 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8133 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8134 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8135 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8136 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8137 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8138 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8220 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8221 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8222 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8223 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8224 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8225 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8226 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8227 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8228 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8229 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8230 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8231 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8232 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8233 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8234 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8235 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8236 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8319 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8321 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8323 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8325 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8327 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8329 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8331 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8333 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +7551 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7552 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7553 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7554 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7555 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7556 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7557 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7558 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7559 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7560 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7561 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7562 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7563 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7564 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7565 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7566 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7567 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7649 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7650 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7651 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7652 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7653 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7654 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7655 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7656 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7657 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7658 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7659 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7660 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7661 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7662 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7663 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7664 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7665 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7747 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7748 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7749 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7750 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7751 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7752 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7753 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7754 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7755 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7756 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7757 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7758 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7759 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7760 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7761 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7762 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7763 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7845 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7846 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7847 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7848 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7849 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7850 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7851 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7852 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7853 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7854 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7855 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7856 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7857 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7858 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7859 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7860 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7861 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7943 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7944 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7945 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7946 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7947 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7948 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7949 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7950 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7951 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7952 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7953 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7954 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7955 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7956 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7957 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7958 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7959 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +8041 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8042 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8043 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8044 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8045 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8046 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8047 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8048 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8049 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8050 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8051 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8052 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8053 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8054 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8055 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8056 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8057 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8139 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8140 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8141 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8142 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8143 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8144 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8145 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8146 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8147 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8148 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8149 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8150 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8151 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8152 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8153 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8154 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8155 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8237 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8238 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8239 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8240 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8241 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8242 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8243 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8244 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8245 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8246 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8247 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8248 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8249 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8250 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8251 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8252 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8253 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8335 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8337 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8339 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8341 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8343 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8345 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8347 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8349 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8351 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +7568 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7569 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7570 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7571 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7572 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7573 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7574 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7575 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7576 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7577 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7578 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7579 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7580 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7581 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7582 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7583 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7666 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7667 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7668 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7669 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7670 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7671 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7672 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7673 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7674 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7675 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7676 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7677 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7678 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7679 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7680 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7681 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7764 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7765 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7766 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7767 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7768 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7769 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7770 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7771 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7772 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7773 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7774 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7775 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7776 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7777 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7778 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7779 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7862 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7863 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7864 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7865 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7866 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7867 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7868 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7869 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7870 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7871 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7872 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7873 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7874 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7875 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7876 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7877 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7960 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7961 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7962 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7963 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7964 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7965 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7966 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7967 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7968 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7969 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7970 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7971 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7972 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7973 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7974 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7975 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +8058 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8059 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8060 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8061 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8062 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8063 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8064 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8065 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8066 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8067 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8068 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8069 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8070 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8071 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8072 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8073 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8156 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8157 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8158 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8159 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8160 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8161 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8162 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8163 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8164 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8165 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8166 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8167 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8168 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8169 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8170 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8171 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8254 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8255 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8256 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8257 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8258 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8259 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8260 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8261 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8262 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8263 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8264 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8265 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8266 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8267 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8268 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8269 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8353 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8355 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8357 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8359 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8361 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8363 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8365 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8367 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +7584 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7585 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7586 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7587 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7588 1 1.0063722103956402e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7589 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7590 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7591 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7592 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7593 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7594 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7595 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7596 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7597 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7598 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7599 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7600 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7682 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7683 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7684 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7685 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7686 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7687 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7688 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7689 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7690 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7691 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7692 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7693 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7694 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7695 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7696 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7697 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7698 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7780 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7781 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7782 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7783 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7784 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7785 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7786 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7787 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7788 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7789 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7790 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7791 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7792 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7793 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7794 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7795 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7796 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7878 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7879 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7880 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7881 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7882 1 1.0063722103956402e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7883 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7884 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7885 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7886 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7887 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7888 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7889 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7890 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7891 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7892 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7893 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7894 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7976 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7977 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7978 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7979 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7980 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7981 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7982 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7983 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7984 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7985 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7986 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7987 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7988 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7989 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7990 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7991 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7992 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +8074 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8075 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8076 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8077 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8078 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8079 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8080 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8081 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8082 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8083 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8084 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8085 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8086 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8087 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8088 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8089 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8090 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8172 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8173 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8174 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8175 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8176 1 1.0063722103956402e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8177 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8178 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8179 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8180 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8181 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8182 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8183 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8184 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8185 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8186 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8187 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8188 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8270 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8271 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8272 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8273 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8274 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8275 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8276 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8277 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8278 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8279 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8280 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8281 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8282 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8283 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8284 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8285 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8286 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8369 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8371 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8373 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8375 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8377 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8379 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8381 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8383 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +7601 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7602 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7603 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7604 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7605 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7606 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7607 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7608 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7609 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7610 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7611 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7612 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7613 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7614 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7615 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7616 1 9.7257311157309255e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 3.5000000000000003e-01 0.0000000000000000e+00 0 0 0 +7617 1 7.1371621756056572e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 0.0000000000000000e+00 0 0 0 +7699 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7700 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7701 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7702 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7703 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7704 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7705 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7706 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7707 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7708 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7709 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7710 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7711 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7712 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7713 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7714 1 9.7257311157309096e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 3.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +7715 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +7797 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7798 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7799 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7800 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7801 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7802 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7803 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7804 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7805 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7806 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7807 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7808 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7809 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7810 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7811 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7812 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 3.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +7813 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +7895 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7896 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7897 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7898 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7899 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7900 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7901 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7902 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7903 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7904 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7905 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7906 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7907 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7908 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7909 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7910 1 9.7257311157309255e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 4.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +7911 1 7.1371621756056572e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +7993 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7994 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7995 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7996 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7997 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +7998 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +7999 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +8000 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +8001 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +8002 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +8003 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +8004 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +8005 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +8006 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +8007 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +8008 1 9.7257311157309096e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 4.2999999999999999e-01 0.0000000000000000e+00 0 0 0 +8009 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 0.0000000000000000e+00 0 0 0 +8091 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8092 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8093 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8094 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8095 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8096 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8097 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8098 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8099 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8100 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8101 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8102 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8103 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8104 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8105 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8106 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 4.5000000000000001e-01 0.0000000000000000e+00 0 0 0 +8107 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 0.0000000000000000e+00 0 0 0 +8189 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8190 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8191 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8192 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8193 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8194 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8195 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8196 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8197 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8198 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8199 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8200 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8201 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8202 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8203 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8204 1 9.7257311157309255e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 4.7000000000000003e-01 0.0000000000000000e+00 0 0 0 +8205 1 7.1371621756056572e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 0.0000000000000000e+00 0 0 0 +8287 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8288 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8289 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8290 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8291 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8292 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8293 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8294 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8295 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8296 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8297 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8298 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8299 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8300 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8301 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8302 1 9.7257311157309096e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 4.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +8303 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +8385 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8387 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8389 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8391 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8393 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8395 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8397 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8399 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +8401 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 0.0000000000000000e+00 0 0 0 +527 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.0204581464244880e-01 0.0000000000000000e+00 0 0 0 +529 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.0911688245431419e-01 0.0000000000000000e+00 0 0 0 +530 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.1618795026617970e-01 0.0000000000000000e+00 0 0 0 +531 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.0911688245431419e-01 0.0000000000000000e+00 0 0 0 +532 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.2325901807804520e-01 0.0000000000000000e+00 0 0 0 +533 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.3033008588991060e-01 0.0000000000000000e+00 0 0 0 +534 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.2325901807804520e-01 0.0000000000000000e+00 0 0 0 +535 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.3740115370177610e-01 0.0000000000000000e+00 0 0 0 +536 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.4447222151364161e-01 0.0000000000000000e+00 0 0 0 +537 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.3740115370177610e-01 0.0000000000000000e+00 0 0 0 +538 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.5154328932550711e-01 0.0000000000000000e+00 0 0 0 +539 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.5861435713737251e-01 0.0000000000000000e+00 0 0 0 +540 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.5154328932550711e-01 0.0000000000000000e+00 0 0 0 +541 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.6568542494923801e-01 0.0000000000000000e+00 0 0 0 +542 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.7275649276110352e-01 0.0000000000000000e+00 0 0 0 +543 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.6568542494923801e-01 0.0000000000000000e+00 0 0 0 +544 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.7982756057296903e-01 0.0000000000000000e+00 0 0 0 +545 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.8689862838483442e-01 0.0000000000000000e+00 0 0 0 +546 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.7982756057296903e-01 0.0000000000000000e+00 0 0 0 +547 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.9396969619669993e-01 0.0000000000000000e+00 0 0 0 +548 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.0104076400856543e-01 0.0000000000000000e+00 0 0 0 +549 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.9396969619669993e-01 0.0000000000000000e+00 0 0 0 +550 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.0811183182043083e-01 0.0000000000000000e+00 0 0 0 +551 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.1518289963229633e-01 0.0000000000000000e+00 0 0 0 +552 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.0811183182043083e-01 0.0000000000000000e+00 0 0 0 +553 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.2225396744416184e-01 0.0000000000000000e+00 0 0 0 +554 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.2932503525602734e-01 0.0000000000000000e+00 0 0 0 +555 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.2225396744416184e-01 0.0000000000000000e+00 0 0 0 +556 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.3639610306789274e-01 0.0000000000000000e+00 0 0 0 +557 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.4346717087975824e-01 0.0000000000000000e+00 0 0 0 +558 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.3639610306789274e-01 0.0000000000000000e+00 0 0 0 +559 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.5053823869162375e-01 0.0000000000000000e+00 0 0 0 +560 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.5760930650348925e-01 0.0000000000000000e+00 0 0 0 +561 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.5053823869162375e-01 0.0000000000000000e+00 0 0 0 +562 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.6468037431535465e-01 0.0000000000000000e+00 0 0 0 +564 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.6468037431535465e-01 0.0000000000000000e+00 0 0 0 +8304 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8306 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8308 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8310 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8312 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8314 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8316 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8402 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8403 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8404 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8405 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8406 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8407 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8408 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8409 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8410 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8411 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8412 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8413 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8414 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8415 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8500 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8501 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8502 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8503 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8504 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8505 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8506 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8507 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8508 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8509 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8510 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8511 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8512 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8513 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8598 1 7.1371621756056845e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8599 1 9.7257311157309209e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8600 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8601 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8602 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8603 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8604 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8605 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8606 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8607 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8608 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8609 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8610 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8611 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8696 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8697 1 9.7257311157309539e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8698 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8699 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8700 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8701 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8702 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8703 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8704 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8705 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8706 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8707 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8708 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8709 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8794 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8795 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8796 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8797 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8798 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8799 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8800 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8801 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8802 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8803 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8804 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8805 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8806 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8807 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8892 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8893 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8894 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8895 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8896 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8897 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8898 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8899 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8900 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8901 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8902 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8903 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8904 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8905 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8990 1 7.1371621756056550e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +8991 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +8992 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +8993 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +8994 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +8995 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +8996 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +8997 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +8998 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +8999 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9000 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9001 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9002 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9003 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9089 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9091 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9093 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9095 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9097 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9099 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9101 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +8318 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8320 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8322 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8324 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8326 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8328 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8330 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8332 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8334 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8416 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8417 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8418 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8419 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8420 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8421 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8422 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8423 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8424 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8425 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8426 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8427 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8428 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8429 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8430 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8431 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8432 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8514 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8515 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8516 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8517 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8518 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8519 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8520 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8521 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8522 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8523 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8524 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8525 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8526 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8527 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8528 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8529 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8530 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8612 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8613 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8614 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8615 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8616 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8617 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8618 1 1.0063722103956393e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8619 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8620 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8621 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8622 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8623 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8624 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8625 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8626 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8627 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8628 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8710 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8711 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8712 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8713 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8714 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8715 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8716 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8717 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8718 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8719 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8720 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8721 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8722 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8723 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8724 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8725 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8726 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8808 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8809 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8810 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8811 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8812 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8813 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8814 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8815 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8816 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8817 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8818 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8819 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8820 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8821 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8822 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8823 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8824 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8906 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8907 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8908 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8909 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8910 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8911 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8912 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8913 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8914 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8915 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8916 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8917 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8918 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8919 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8920 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8921 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8922 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +9004 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9005 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9006 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9007 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9008 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9009 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9010 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9011 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9012 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9013 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9014 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9015 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9016 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9017 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9018 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9019 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9020 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9103 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9105 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9107 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9109 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9111 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9113 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9115 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9117 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +8336 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8338 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8340 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8342 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8344 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8346 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8348 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8350 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8433 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8434 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8435 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8436 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8437 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8438 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8439 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8440 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8441 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8442 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8443 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8444 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8445 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8446 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8447 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8448 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8449 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8531 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8532 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8533 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8534 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8535 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8536 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8537 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8538 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8539 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8540 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8541 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8542 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8543 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8544 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8545 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8546 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8547 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8629 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8630 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8631 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8632 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8633 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8634 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8635 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8636 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8637 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8638 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8639 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8640 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8641 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8642 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8643 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8644 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8645 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8727 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8728 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8729 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8730 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8731 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8732 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8733 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8734 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8735 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8736 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8737 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8738 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8739 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8740 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8741 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8742 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8743 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8825 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8826 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8827 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8828 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8829 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8830 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8831 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8832 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8833 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8834 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8835 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8836 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8837 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8838 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8839 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8840 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8841 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8923 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8924 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8925 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8926 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8927 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8928 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8929 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8930 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8931 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8932 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8933 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8934 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8935 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8936 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8937 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8938 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8939 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +9021 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9022 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9023 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9024 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9025 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9026 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9027 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9028 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9029 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9030 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9031 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9032 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9033 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9034 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9035 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9036 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9037 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9119 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9121 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9123 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9125 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9127 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9129 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9131 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9133 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9135 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +8352 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8354 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8356 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8358 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8360 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8362 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8364 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8366 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8450 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8451 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8452 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8453 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8454 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8455 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8456 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8457 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8458 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8459 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8460 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8461 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8462 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8463 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8464 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8465 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8548 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8549 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8550 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8551 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8552 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8553 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8554 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8555 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8556 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8557 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8558 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8559 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8560 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8561 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8562 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8563 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8646 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8647 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8648 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8649 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8650 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8651 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8652 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8653 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8654 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8655 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8656 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8657 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8658 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8659 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8660 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8661 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8744 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8745 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8746 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8747 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8748 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8749 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8750 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8751 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8752 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8753 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8754 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8755 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8756 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8757 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8758 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8759 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8842 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8843 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8844 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8845 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8846 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8847 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8848 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8849 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8850 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8851 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8852 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8853 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8854 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8855 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8856 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8857 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8940 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8941 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8942 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8943 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8944 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8945 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8946 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8947 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8948 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8949 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8950 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8951 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8952 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8953 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8954 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8955 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +9038 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9039 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9040 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9041 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9042 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9043 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9044 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9045 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9046 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9047 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9048 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9049 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9050 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9051 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9052 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9053 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9137 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9139 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9141 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9143 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9145 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9147 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9149 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9151 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +8368 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8370 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8372 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8374 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8376 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8378 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8380 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8382 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8384 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8466 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8467 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8468 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8469 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8470 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8471 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8472 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8473 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8474 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8475 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8476 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8477 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8478 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8479 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8480 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8481 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8482 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8564 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8565 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8566 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8567 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8568 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8569 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8570 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8571 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8572 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8573 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8574 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8575 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8576 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8577 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8578 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8579 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8580 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8662 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8663 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8664 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8665 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8666 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8667 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8668 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8669 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8670 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8671 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8672 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8673 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8674 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8675 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8676 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8677 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8678 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8760 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8761 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8762 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8763 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8764 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8765 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8766 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8767 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8768 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8769 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8770 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8771 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8772 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8773 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8774 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8775 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8776 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8858 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8859 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8860 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8861 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8862 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8863 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8864 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8865 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8866 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8867 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8868 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8869 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8870 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8871 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8872 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8873 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8874 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8956 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8957 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8958 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8959 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8960 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8961 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8962 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8963 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8964 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8965 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8966 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8967 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8968 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8969 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8970 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8971 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8972 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +9054 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9055 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9056 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9057 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9058 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9059 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9060 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9061 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9062 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9063 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9064 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9065 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9066 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9067 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9068 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9069 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9070 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9153 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9155 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9157 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9159 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9161 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9163 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9165 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9167 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +8386 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8388 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8390 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8392 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8394 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8396 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8398 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8400 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 5.1000000000000001e-01 0.0000000000000000e+00 0 0 0 +8483 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8484 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8485 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8486 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8487 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8488 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8489 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8490 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8491 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8492 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8493 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8494 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8495 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8496 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8497 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8498 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 5.3000000000000003e-01 0.0000000000000000e+00 0 0 0 +8499 1 7.1371621756056538e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 0.0000000000000000e+00 0 0 0 +8581 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8582 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8583 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8584 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8585 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8586 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8587 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8588 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8589 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8590 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8591 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8592 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8593 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8594 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8595 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8596 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 5.5000000000000004e-01 0.0000000000000000e+00 0 0 0 +8597 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 0.0000000000000000e+00 0 0 0 +8679 1 1.0063722103956393e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8680 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8681 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8682 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8683 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8684 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8685 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8686 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8687 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8688 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8689 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8690 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8691 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8692 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8693 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8694 1 9.7257311157309482e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 5.7000000000000006e-01 0.0000000000000000e+00 0 0 0 +8695 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 0.0000000000000000e+00 0 0 0 +8777 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8778 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8779 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8780 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8781 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8782 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8783 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8784 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8785 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8786 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8787 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8788 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8789 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8790 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8791 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8792 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 5.8999999999999997e-01 0.0000000000000000e+00 0 0 0 +8793 1 7.1371621756056811e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 0.0000000000000000e+00 0 0 0 +8875 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8876 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8877 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8878 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8879 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8880 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8881 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8882 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8883 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8884 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8885 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8886 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8887 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8888 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8889 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8890 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 6.0999999999999999e-01 0.0000000000000000e+00 0 0 0 +8891 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 0.0000000000000000e+00 0 0 0 +8973 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8974 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8975 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8976 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8977 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8978 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8979 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8980 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8981 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8982 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8983 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8984 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8985 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8986 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8987 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +8988 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 6.3000000000000000e-01 0.0000000000000000e+00 0 0 0 +8989 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 0.0000000000000000e+00 0 0 0 +9071 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9072 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9073 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9074 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9075 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9076 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9077 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9078 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9079 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9080 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9081 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9082 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9083 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9084 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9085 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9086 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 6.5000000000000002e-01 0.0000000000000000e+00 0 0 0 +9087 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 0.0000000000000000e+00 0 0 0 +9169 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9171 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9173 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9175 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9177 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9179 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9181 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9183 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +9185 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 0.0000000000000000e+00 0 0 0 +563 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.7175144212722016e-01 0.0000000000000000e+00 0 0 0 +565 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.7882250993908566e-01 0.0000000000000000e+00 0 0 0 +566 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.8589357775095106e-01 0.0000000000000000e+00 0 0 0 +567 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.7882250993908566e-01 0.0000000000000000e+00 0 0 0 +568 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.9296464556281656e-01 0.0000000000000000e+00 0 0 0 +569 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.0003571337468207e-01 0.0000000000000000e+00 0 0 0 +570 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.9296464556281656e-01 0.0000000000000000e+00 0 0 0 +571 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.0710678118654757e-01 0.0000000000000000e+00 0 0 0 +572 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.1417784899841297e-01 0.0000000000000000e+00 0 0 0 +573 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.0710678118654757e-01 0.0000000000000000e+00 0 0 0 +574 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.2124891681027847e-01 0.0000000000000000e+00 0 0 0 +575 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.2831998462214398e-01 0.0000000000000000e+00 0 0 0 +576 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.2124891681027847e-01 0.0000000000000000e+00 0 0 0 +577 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.3539105243400948e-01 0.0000000000000000e+00 0 0 0 +578 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.4246212024587488e-01 0.0000000000000000e+00 0 0 0 +579 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.3539105243400948e-01 0.0000000000000000e+00 0 0 0 +580 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.4953318805774038e-01 0.0000000000000000e+00 0 0 0 +581 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.5660425586960589e-01 0.0000000000000000e+00 0 0 0 +582 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.4953318805774038e-01 0.0000000000000000e+00 0 0 0 +583 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.6367532368147129e-01 0.0000000000000000e+00 0 0 0 +584 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.7074639149333679e-01 0.0000000000000000e+00 0 0 0 +585 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.6367532368147129e-01 0.0000000000000000e+00 0 0 0 +586 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.7781745930520230e-01 0.0000000000000000e+00 0 0 0 +587 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.8488852711706780e-01 0.0000000000000000e+00 0 0 0 +588 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.7781745930520230e-01 0.0000000000000000e+00 0 0 0 +589 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.9195959492893320e-01 0.0000000000000000e+00 0 0 0 +590 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.9903066274079870e-01 0.0000000000000000e+00 0 0 0 +591 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.9195959492893320e-01 0.0000000000000000e+00 0 0 0 +592 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 8.0610173055266421e-01 0.0000000000000000e+00 0 0 0 +593 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 8.1317279836452971e-01 0.0000000000000000e+00 0 0 0 +594 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 8.0610173055266421e-01 0.0000000000000000e+00 0 0 0 +595 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 8.2024386617639511e-01 0.0000000000000000e+00 0 0 0 +596 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 8.2731493398826061e-01 0.0000000000000000e+00 0 0 0 +597 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 8.2024386617639511e-01 0.0000000000000000e+00 0 0 0 +9088 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9090 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9092 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9094 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9096 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9098 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9100 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9186 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9187 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9188 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9189 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9190 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9191 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9192 1 1.0063722103956356e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9193 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9194 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9195 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9196 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9197 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9198 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9199 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9284 1 7.1371621756056834e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9285 1 9.7257311157309550e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9286 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9287 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9288 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9289 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9290 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9291 1 1.0063722103956388e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9292 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9293 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9294 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9295 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9296 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9297 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9382 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9383 1 9.7257311157309198e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9384 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9385 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9386 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9387 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9388 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9389 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9390 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9391 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9392 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9393 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9394 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9395 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9480 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9481 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9482 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9483 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9484 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9485 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9486 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9487 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9488 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9489 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9490 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9491 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9492 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9493 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9578 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9579 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9580 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9581 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9582 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9583 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9584 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9585 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9586 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9587 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9588 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9589 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9590 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9591 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9676 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9677 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9678 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9679 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9680 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9681 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9682 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9683 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9684 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9685 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9686 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9687 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9688 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9689 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9774 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9775 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9776 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9777 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9778 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9779 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9780 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9781 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9782 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9783 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9784 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9785 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9786 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9787 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9872 1 7.1371621756056845e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9873 1 9.7257311157309209e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9874 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9875 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9876 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9877 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9878 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9879 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9880 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9881 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9882 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9883 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9884 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9885 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9102 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9104 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9106 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9108 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9110 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9112 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9114 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9116 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9118 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9200 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9201 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9202 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9203 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9204 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9205 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9206 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9207 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9208 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9209 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9210 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9211 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9212 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9213 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9214 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9215 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9216 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9298 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9299 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9300 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9301 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9302 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9303 1 1.0063722103956384e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9304 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9305 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9306 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9307 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9308 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9309 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9310 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9311 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9312 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9313 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9314 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9396 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9397 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9398 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9399 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9400 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9401 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9402 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9403 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9404 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9405 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9406 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9407 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9408 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9409 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9410 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9411 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9412 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9494 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9495 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9496 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9497 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9498 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9499 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9500 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9501 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9502 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9503 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9504 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9505 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9506 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9507 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9508 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9509 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9510 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9592 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9593 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9594 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9595 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9596 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9597 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9598 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9599 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9600 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9601 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9602 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9603 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9604 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9605 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9606 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9607 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9608 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9690 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9691 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9692 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9693 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9694 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9695 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9696 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9697 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9698 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9699 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9700 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9701 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9702 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9703 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9704 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9705 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9706 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9788 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9789 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9790 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9791 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9792 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9793 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9794 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9795 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9796 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9797 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9798 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9799 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9800 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9801 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9802 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9803 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9804 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9886 1 1.0063722103956393e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9887 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9888 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9889 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9890 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9891 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9892 1 1.0063722103956393e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9893 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9894 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9895 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9896 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9897 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9898 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9899 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9900 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9901 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9902 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9120 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9122 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9124 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9126 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9128 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9130 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9132 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9134 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9217 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9218 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9219 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9220 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9221 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9222 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9223 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9224 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9225 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9226 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9227 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9228 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9229 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9230 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9231 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9232 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9233 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9315 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9316 1 1.0063722103956402e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9317 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9318 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9319 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9320 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9321 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9322 1 1.0063722103956404e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9323 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9324 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9325 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9326 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9327 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9328 1 1.0063722103956404e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9329 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9330 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9331 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9413 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9414 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9415 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9416 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9417 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9418 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9419 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9420 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9421 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9422 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9423 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9424 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9425 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9426 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9427 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9428 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9429 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9511 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9512 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9513 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9514 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9515 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9516 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9517 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9518 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9519 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9520 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9521 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9522 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9523 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9524 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9525 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9526 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9527 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9609 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9610 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9611 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9612 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9613 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9614 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9615 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9616 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9617 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9618 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9619 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9620 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9621 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9622 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9623 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9624 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9625 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9707 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9708 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9709 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9710 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9711 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9712 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9713 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9714 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9715 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9716 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9717 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9718 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9719 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9720 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9721 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9722 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9723 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9805 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9806 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9807 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9808 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9809 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9810 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9811 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9812 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9813 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9814 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9815 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9816 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9817 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9818 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9819 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9820 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9821 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9903 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9904 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9905 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9906 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9907 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9908 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9909 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9910 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9911 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9912 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9913 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9914 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9915 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9916 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9917 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9918 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9919 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9136 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9138 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9140 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9142 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9144 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9146 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9148 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9150 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9234 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9235 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9236 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9237 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9238 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9239 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9240 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9241 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9242 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9243 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9244 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9245 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9246 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9247 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9248 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9249 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9332 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9333 1 1.0063722103956379e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9334 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9335 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9336 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9337 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9338 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9339 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9340 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9341 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9342 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9343 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9344 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9345 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9346 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9347 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9430 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9431 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9432 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9433 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9434 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9435 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9436 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9437 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9438 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9439 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9440 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9441 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9442 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9443 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9444 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9445 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9528 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9529 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9530 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9531 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9532 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9533 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9534 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9535 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9536 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9537 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9538 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9539 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9540 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9541 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9542 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9543 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9626 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9627 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9628 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9629 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9630 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9631 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9632 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9633 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9634 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9635 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9636 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9637 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9638 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9639 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9640 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9641 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9724 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9725 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9726 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9727 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9728 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9729 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9730 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9731 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9732 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9733 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9734 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9735 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9736 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9737 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9738 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9739 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9822 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9823 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9824 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9825 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9826 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9827 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9828 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9829 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9830 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9831 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9832 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9833 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9834 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9835 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9836 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9837 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9920 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9921 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9922 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9923 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9924 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9925 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9926 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9927 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9928 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9929 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9930 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9931 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9932 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9933 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9934 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9935 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9152 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9154 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9156 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9158 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9160 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9162 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9164 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9166 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9168 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9250 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9251 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9252 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9253 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9254 1 1.0063722103956393e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9255 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9256 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9257 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9258 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9259 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9260 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9261 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9262 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9263 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9264 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9265 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9266 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9348 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9349 1 1.0063722103956379e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9350 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9351 1 1.0063722103956425e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9352 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9353 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9354 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9355 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9356 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9357 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9358 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9359 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9360 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9361 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9362 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9363 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9364 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9446 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9447 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9448 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9449 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9450 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9451 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9452 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9453 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9454 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9455 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9456 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9457 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9458 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9459 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9460 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9461 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9462 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9544 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9545 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9546 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9547 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9548 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9549 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9550 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9551 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9552 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9553 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9554 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9555 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9556 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9557 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9558 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9559 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9560 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9642 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9643 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9644 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9645 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9646 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9647 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9648 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9649 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9650 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9651 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9652 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9653 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9654 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9655 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9656 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9657 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9658 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9740 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9741 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9742 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9743 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9744 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9745 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9746 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9747 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9748 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9749 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9750 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9751 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9752 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9753 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9754 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9755 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9756 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9838 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9839 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9840 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9841 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9842 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9843 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9844 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9845 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9846 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9847 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9848 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9849 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9850 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9851 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9852 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9853 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9854 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9936 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9937 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9938 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9939 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9940 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9941 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9942 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9943 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9944 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9945 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9946 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9947 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9948 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9949 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9950 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9951 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9952 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9170 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9172 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9174 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9176 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9178 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9180 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9182 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9184 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 6.7000000000000004e-01 0.0000000000000000e+00 0 0 0 +9267 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9268 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9269 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9270 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9271 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9272 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9273 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9274 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9275 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9276 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9277 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9278 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9279 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9280 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9281 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9282 1 9.7257311157309152e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 6.9000000000000006e-01 0.0000000000000000e+00 0 0 0 +9283 1 7.1371621756056538e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 0.0000000000000000e+00 0 0 0 +9365 1 1.0063722103956425e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9366 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9367 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9368 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9369 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9370 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9371 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9372 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9373 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9374 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9375 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9376 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9377 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9378 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9379 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9380 1 9.7257311157309482e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 7.0999999999999996e-01 0.0000000000000000e+00 0 0 0 +9381 1 7.1371621756056788e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 0.0000000000000000e+00 0 0 0 +9463 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9464 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9465 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9466 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9467 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9468 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9469 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9470 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9471 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9472 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9473 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9474 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9475 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9476 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9477 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9478 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 7.2999999999999998e-01 0.0000000000000000e+00 0 0 0 +9479 1 7.1371621756056652e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 0.0000000000000000e+00 0 0 0 +9561 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9562 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9563 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9564 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9565 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9566 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9567 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9568 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9569 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9570 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9571 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9572 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9573 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9574 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9575 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9576 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 7.5000000000000000e-01 0.0000000000000000e+00 0 0 0 +9577 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 0.0000000000000000e+00 0 0 0 +9659 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9660 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9661 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9662 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9663 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9664 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9665 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9666 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9667 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9668 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9669 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9670 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9671 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9672 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9673 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9674 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 7.7000000000000002e-01 0.0000000000000000e+00 0 0 0 +9675 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 0.0000000000000000e+00 0 0 0 +9757 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9758 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9759 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9760 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9761 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9762 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9763 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9764 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9765 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9766 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9767 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9768 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9769 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9770 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9771 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9772 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 7.9000000000000004e-01 0.0000000000000000e+00 0 0 0 +9773 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 0.0000000000000000e+00 0 0 0 +9855 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9856 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9857 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9858 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9859 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9860 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9861 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9862 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9863 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9864 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9865 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9866 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9867 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9868 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9869 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9870 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 8.1000000000000005e-01 0.0000000000000000e+00 0 0 0 +9871 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 0.0000000000000000e+00 0 0 0 +9953 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9954 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9955 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9956 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9957 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9958 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9959 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9960 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9961 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9962 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9963 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9964 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9965 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9966 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9967 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +9968 1 9.7257311157309482e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 8.3000000000000007e-01 0.0000000000000000e+00 0 0 0 +9969 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 0.0000000000000000e+00 0 0 0 +598 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 8.3438600180012612e-01 0.0000000000000000e+00 0 0 0 +599 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 8.4145706961199151e-01 0.0000000000000000e+00 0 0 0 +600 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 8.3438600180012612e-01 0.0000000000000000e+00 0 0 0 +601 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 8.4852813742385702e-01 0.0000000000000000e+00 0 0 0 +602 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 8.5559920523572253e-01 0.0000000000000000e+00 0 0 0 +603 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 8.4852813742385702e-01 0.0000000000000000e+00 0 0 0 +604 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 8.6267027304758803e-01 0.0000000000000000e+00 0 0 0 +605 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 8.6974134085945343e-01 0.0000000000000000e+00 0 0 0 +606 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 8.6267027304758803e-01 0.0000000000000000e+00 0 0 0 +607 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 8.7681240867131893e-01 0.0000000000000000e+00 0 0 0 +608 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 8.8388347648318444e-01 0.0000000000000000e+00 0 0 0 +609 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 8.7681240867131893e-01 0.0000000000000000e+00 0 0 0 +610 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 8.9095454429504994e-01 0.0000000000000000e+00 0 0 0 +611 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 8.9802561210691534e-01 0.0000000000000000e+00 0 0 0 +612 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 8.9095454429504994e-01 0.0000000000000000e+00 0 0 0 +613 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 9.0509667991878084e-01 0.0000000000000000e+00 0 0 0 +614 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 9.1216774773064635e-01 0.0000000000000000e+00 0 0 0 +615 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 9.0509667991878084e-01 0.0000000000000000e+00 0 0 0 +616 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 9.1923881554251174e-01 0.0000000000000000e+00 0 0 0 +617 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 9.2630988335437725e-01 0.0000000000000000e+00 0 0 0 +618 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 9.1923881554251174e-01 0.0000000000000000e+00 0 0 0 +619 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 9.3338095116624276e-01 0.0000000000000000e+00 0 0 0 +620 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 9.4045201897810826e-01 0.0000000000000000e+00 0 0 0 +621 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 9.3338095116624276e-01 0.0000000000000000e+00 0 0 0 +622 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 9.4752308678997366e-01 0.0000000000000000e+00 0 0 0 +623 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 9.5459415460183916e-01 0.0000000000000000e+00 0 0 0 +624 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 9.4752308678997366e-01 0.0000000000000000e+00 0 0 0 +625 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 9.6166522241370467e-01 0.0000000000000000e+00 0 0 0 +626 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 9.6873629022557017e-01 0.0000000000000000e+00 0 0 0 +627 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 9.6166522241370467e-01 0.0000000000000000e+00 0 0 0 +628 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 9.7580735803743557e-01 0.0000000000000000e+00 0 0 0 +629 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 9.8287842584930107e-01 0.0000000000000000e+00 0 0 0 +630 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 9.7580735803743557e-01 0.0000000000000000e+00 0 0 0 +631 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 9.8994949366116658e-01 0.0000000000000000e+00 0 0 0 +632 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 9.9702056147303197e-01 0.0000000000000000e+00 0 0 0 +633 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 9.8994949366116658e-01 0.0000000000000000e+00 0 0 0 +9970 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9971 1 9.7257311157309539e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9972 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9973 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9974 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9975 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9976 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9977 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9978 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9979 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9980 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9981 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9982 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9983 1 1.0063722103956386e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10068 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10069 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10070 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10071 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10072 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10073 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10074 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10075 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10076 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10077 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10078 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10079 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10080 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10081 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10166 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10167 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10168 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10169 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10170 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10171 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10172 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10173 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10174 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10175 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10176 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10177 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10178 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10179 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10264 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10265 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10266 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10267 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10268 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10269 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10270 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10271 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10272 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10273 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10274 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10275 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10276 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10277 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10362 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10363 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10364 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10365 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10366 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10367 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10368 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10369 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10370 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10371 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10372 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10373 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10374 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10375 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10460 1 7.1371621756056845e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10461 1 9.7257311157309209e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10462 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10463 1 1.0063722103956354e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10464 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10465 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10466 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10467 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10468 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10469 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10470 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10471 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10472 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10473 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10558 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10559 1 9.7257311157309539e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10560 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10561 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10562 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10563 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10564 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10565 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10566 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10567 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10568 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10569 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10570 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10571 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10656 1 7.1371621756056550e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10657 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10658 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10659 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10660 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10661 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10662 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10663 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10664 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10665 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10666 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10667 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10668 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10669 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10755 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10757 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10759 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10761 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10763 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10765 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10767 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +9984 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9985 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9986 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9987 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9988 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9989 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9990 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9991 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9992 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9993 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9994 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9995 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9996 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9997 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +9998 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +9999 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10000 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10082 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10083 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10084 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10085 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10086 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10087 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10088 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10089 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10090 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10091 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10092 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10093 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10094 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10095 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10096 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10097 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10098 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10180 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10181 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10182 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10183 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10184 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10185 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10186 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10187 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10188 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10189 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10190 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10191 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10192 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10193 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10194 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10195 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10196 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10278 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10279 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10280 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10281 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10282 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10283 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10284 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10285 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10286 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10287 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10288 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10289 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10290 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10291 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10292 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10293 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10294 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10376 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10377 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10378 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10379 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10380 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10381 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10382 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10383 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10384 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10385 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10386 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10387 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10388 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10389 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10390 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10391 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10392 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10474 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10475 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10476 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10477 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10478 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10479 1 1.0063722103956352e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10480 1 1.0063722103956393e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10481 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10482 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10483 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10484 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10485 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10486 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10487 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10488 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10489 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10490 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10572 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10573 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10574 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10575 1 1.0063722103956389e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10576 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10577 1 1.0063722103956385e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10578 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10579 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10580 1 1.0063722103956351e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10581 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10582 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10583 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10584 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10585 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10586 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10587 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10588 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10670 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10671 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10672 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10673 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10674 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10675 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10676 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10677 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10678 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10679 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10680 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10681 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10682 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10683 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10684 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10685 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10686 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10769 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10771 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10773 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10775 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10777 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10779 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10781 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10783 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10001 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10002 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10003 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10004 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10005 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10006 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10007 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10008 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10009 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10010 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10011 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10012 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10013 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10014 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10015 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10016 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10017 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10099 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10100 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10101 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10102 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10103 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10104 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10105 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10106 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10107 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10108 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10109 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10110 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10111 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10112 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10113 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10114 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10115 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10197 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10198 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10199 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10200 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10201 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10202 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10203 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10204 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10205 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10206 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10207 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10208 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10209 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10210 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10211 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10212 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10213 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10295 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10296 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10297 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10298 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10299 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10300 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10301 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10302 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10303 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10304 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10305 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10306 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10307 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10308 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10309 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10310 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10311 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10393 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10394 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10395 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10396 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10397 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10398 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10399 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10400 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10401 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10402 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10403 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10404 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10405 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10406 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10407 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10408 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10409 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10491 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10492 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10493 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10494 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10495 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10496 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10497 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10498 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10499 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10500 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10501 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10502 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10503 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10504 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10505 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10506 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10507 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10589 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10590 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10591 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10592 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10593 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10594 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10595 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10596 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10597 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10598 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10599 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10600 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10601 1 1.0063722103956387e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10602 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10603 1 1.0063722103956401e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10604 1 1.0063722103956353e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10605 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10687 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10688 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10689 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10690 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10691 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10692 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10693 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10694 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10695 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10696 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10697 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10698 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10699 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10700 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10701 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10702 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10703 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10785 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10787 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10789 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10791 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10793 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10795 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10797 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10799 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10801 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10018 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10019 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10020 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10021 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10022 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10023 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10024 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10025 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10026 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10027 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10028 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10029 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10030 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10031 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10032 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10033 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10116 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10117 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10118 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10119 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10120 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10121 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10122 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10123 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10124 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10125 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10126 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10127 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10128 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10129 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10130 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10131 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10214 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10215 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10216 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10217 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10218 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10219 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10220 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10221 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10222 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10223 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10224 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10225 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10226 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10227 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10228 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10229 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10312 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10313 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10314 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10315 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10316 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10317 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10318 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10319 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10320 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10321 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10322 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10323 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10324 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10325 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10326 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10327 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10410 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10411 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10412 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10413 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10414 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10415 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10416 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10417 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10418 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10419 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10420 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10421 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10422 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10423 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10424 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10425 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10508 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10509 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10510 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10511 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10512 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10513 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10514 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10515 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10516 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10517 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10518 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10519 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10520 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10521 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10522 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10523 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10606 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10607 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10608 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10609 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10610 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10611 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10612 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10613 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10614 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10615 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10616 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10617 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10618 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10619 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10620 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10621 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10704 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10705 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10706 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10707 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10708 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10709 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10710 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10711 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10712 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10713 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10714 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10715 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10716 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10717 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10718 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10719 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10803 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10805 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10807 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10809 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10811 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10813 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10815 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10817 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10034 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10035 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10036 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10037 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10038 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10039 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10040 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10041 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10042 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10043 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10044 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10045 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10046 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10047 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10048 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10049 1 1.0063722103956393e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10050 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10132 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10133 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10134 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10135 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10136 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10137 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10138 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10139 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10140 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10141 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10142 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10143 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10144 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10145 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10146 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10147 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10148 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10230 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10231 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10232 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10233 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10234 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10235 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10236 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10237 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10238 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10239 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10240 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10241 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10242 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10243 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10244 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10245 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10246 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10328 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10329 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10330 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10331 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10332 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10333 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10334 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10335 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10336 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10337 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10338 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10339 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10340 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10341 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10342 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10343 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10344 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10426 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10427 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10428 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10429 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10430 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10431 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10432 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10433 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10434 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10435 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10436 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10437 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10438 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10439 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10440 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10441 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10442 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10524 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10525 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10526 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10527 1 1.0063722103956391e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10528 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10529 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10530 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10531 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10532 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10533 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10534 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10535 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10536 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10537 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10538 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10539 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10540 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10622 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10623 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10624 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10625 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10626 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10627 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10628 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10629 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10630 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10631 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10632 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10633 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10634 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10635 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10636 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10637 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10638 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10720 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10721 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10722 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10723 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10724 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10725 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10726 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10727 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10728 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10729 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10730 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10731 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10732 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10733 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10734 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10735 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10736 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10819 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10821 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10823 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10825 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10827 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10829 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10831 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10833 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10051 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10052 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10053 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10054 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10055 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10056 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10057 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10058 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10059 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10060 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10061 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10062 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10063 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10064 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10065 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10066 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 8.4999999999999998e-01 0.0000000000000000e+00 0 0 0 +10067 1 7.1371621756056811e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 0.0000000000000000e+00 0 0 0 +10149 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10150 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10151 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10152 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10153 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10154 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10155 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10156 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10157 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10158 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10159 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10160 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10161 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10162 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10163 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10164 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 8.7000000000000000e-01 0.0000000000000000e+00 0 0 0 +10165 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 0.0000000000000000e+00 0 0 0 +10247 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10248 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10249 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10250 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10251 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10252 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10253 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10254 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10255 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10256 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10257 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10258 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10259 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10260 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10261 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10262 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 8.9000000000000001e-01 0.0000000000000000e+00 0 0 0 +10263 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 0.0000000000000000e+00 0 0 0 +10345 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10346 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10347 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10348 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10349 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10350 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10351 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10352 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10353 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10354 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10355 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10356 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10357 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10358 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10359 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10360 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 9.1000000000000003e-01 0.0000000000000000e+00 0 0 0 +10361 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 0.0000000000000000e+00 0 0 0 +10443 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10444 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10445 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10446 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10447 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10448 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10449 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10450 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10451 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10452 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10453 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10454 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10455 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10456 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10457 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10458 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 9.3000000000000005e-01 0.0000000000000000e+00 0 0 0 +10459 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 0.0000000000000000e+00 0 0 0 +10541 1 1.0063722103956393e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10542 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10543 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10544 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10545 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10546 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10547 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10548 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10549 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10550 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10551 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10552 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10553 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10554 1 1.0063722103956394e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10555 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10556 1 9.7257311157309482e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 9.5000000000000007e-01 0.0000000000000000e+00 0 0 0 +10557 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 0.0000000000000000e+00 0 0 0 +10639 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10640 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10641 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10642 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10643 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10644 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10645 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10646 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10647 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10648 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10649 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10650 1 1.0063722103956392e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10651 1 1.0063722103956424e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10652 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10653 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10654 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 9.6999999999999997e-01 0.0000000000000000e+00 0 0 0 +10655 1 7.1371621756056811e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 0.0000000000000000e+00 0 0 0 +10737 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10738 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10739 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10740 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10741 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10742 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10743 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10744 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10745 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10746 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10747 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10748 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10749 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10750 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10751 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10752 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 9.8999999999999999e-01 0.0000000000000000e+00 0 0 0 +10753 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 0.0000000000000000e+00 0 0 0 +10835 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10837 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10839 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10841 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10843 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10845 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10847 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10849 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +10851 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +634 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.0040916292848976e+00 0.0000000000000000e+00 0 0 0 +635 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.0111626970967629e+00 0.0000000000000000e+00 0 0 0 +636 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.0040916292848976e+00 0.0000000000000000e+00 0 0 0 +637 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.0182337649086284e+00 0.0000000000000000e+00 0 0 0 +638 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.0253048327204939e+00 0.0000000000000000e+00 0 0 0 +639 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.0182337649086284e+00 0.0000000000000000e+00 0 0 0 +640 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.0323759005323594e+00 0.0000000000000000e+00 0 0 0 +641 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.0394469683442249e+00 0.0000000000000000e+00 0 0 0 +642 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.0323759005323594e+00 0.0000000000000000e+00 0 0 0 +643 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.0465180361560904e+00 0.0000000000000000e+00 0 0 0 +644 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.0535891039679559e+00 0.0000000000000000e+00 0 0 0 +645 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.0465180361560904e+00 0.0000000000000000e+00 0 0 0 +646 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.0606601717798212e+00 0.0000000000000000e+00 0 0 0 +647 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.0677312395916867e+00 0.0000000000000000e+00 0 0 0 +648 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.0606601717798212e+00 0.0000000000000000e+00 0 0 0 +649 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.0748023074035522e+00 0.0000000000000000e+00 0 0 0 +650 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.0818733752154177e+00 0.0000000000000000e+00 0 0 0 +651 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.0748023074035522e+00 0.0000000000000000e+00 0 0 0 +652 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.0889444430272832e+00 0.0000000000000000e+00 0 0 0 +653 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.0960155108391487e+00 0.0000000000000000e+00 0 0 0 +654 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.0889444430272832e+00 0.0000000000000000e+00 0 0 0 +655 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.1030865786510142e+00 0.0000000000000000e+00 0 0 0 +656 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.1101576464628797e+00 0.0000000000000000e+00 0 0 0 +657 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.1030865786510142e+00 0.0000000000000000e+00 0 0 0 +658 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.1172287142747450e+00 0.0000000000000000e+00 0 0 0 +659 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.1242997820866105e+00 0.0000000000000000e+00 0 0 0 +660 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.1172287142747450e+00 0.0000000000000000e+00 0 0 0 +661 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.1313708498984760e+00 0.0000000000000000e+00 0 0 0 +662 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.1384419177103415e+00 0.0000000000000000e+00 0 0 0 +663 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.1313708498984760e+00 0.0000000000000000e+00 0 0 0 +664 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.1455129855222070e+00 0.0000000000000000e+00 0 0 0 +665 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.1525840533340725e+00 0.0000000000000000e+00 0 0 0 +666 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.1455129855222070e+00 0.0000000000000000e+00 0 0 0 +667 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.1596551211459381e+00 0.0000000000000000e+00 0 0 0 +668 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.1667261889578033e+00 0.0000000000000000e+00 0 0 0 +669 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.1596551211459381e+00 0.0000000000000000e+00 0 0 0 +10754 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10756 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10758 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10760 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10762 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10764 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10766 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10852 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10853 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10854 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10855 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10856 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10857 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10858 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10859 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10860 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10861 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10862 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10863 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10864 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10865 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10950 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10951 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10952 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10953 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10954 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10955 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10956 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10957 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10958 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10959 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10960 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10961 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10962 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10963 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11048 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11049 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11050 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11051 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11052 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11053 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11054 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11055 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11056 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11057 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11058 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11059 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11060 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11061 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11146 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11147 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11148 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11149 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11150 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11151 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11152 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11153 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11154 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11155 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11156 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11157 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11158 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11159 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11244 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11245 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11246 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11247 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11248 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11249 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11250 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11251 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11252 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11253 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11254 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11255 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11256 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11257 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11342 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11343 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11344 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11345 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11346 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11347 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11348 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11349 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11350 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11351 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11352 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11353 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11354 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11355 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11440 1 7.1371621756057129e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11441 1 9.7257311157309334e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11442 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11443 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11444 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11445 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11446 1 1.0063722103956436e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11447 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11448 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11449 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11450 1 1.0063722103956432e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11451 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11452 1 1.0063722103956438e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11453 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11539 1 9.7257311157309994e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11541 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11543 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11545 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11547 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11549 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11551 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +10768 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10770 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10772 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10774 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10776 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10778 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10780 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10782 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10784 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10866 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10867 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10868 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10869 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10870 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10871 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10872 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10873 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10874 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10875 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10876 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10877 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10878 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10879 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10880 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10881 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10882 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10964 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10965 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10966 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10967 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10968 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10969 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10970 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10971 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10972 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10973 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10974 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10975 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10976 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10977 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10978 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10979 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10980 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11062 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11063 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11064 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11065 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11066 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11067 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11068 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11069 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11070 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11071 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11072 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11073 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11074 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11075 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11076 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11077 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11078 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11160 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11161 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11162 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11163 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11164 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11165 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11166 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11167 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11168 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11169 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11170 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11171 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11172 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11173 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11174 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11175 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11176 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11258 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11259 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11260 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11261 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11262 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11263 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11264 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11265 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11266 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11267 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11268 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11269 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11270 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11271 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11272 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11273 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11274 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11356 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11357 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11358 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11359 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11360 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11361 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11362 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11363 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11364 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11365 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11366 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11367 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11368 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11369 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11370 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11371 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11372 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11454 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11455 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11456 1 1.0063722103956434e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11457 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11458 1 1.0063722103956438e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11459 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11460 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11461 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11462 1 1.0063722103956432e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11463 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11464 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11465 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11466 1 1.0063722103956451e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11467 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11468 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11469 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11470 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11553 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11555 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11557 1 1.0063722103956430e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11559 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11561 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11563 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11565 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11567 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +10786 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10788 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10790 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10792 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10794 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10796 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10798 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10800 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10883 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10884 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10885 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10886 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10887 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10888 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10889 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10890 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10891 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10892 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10893 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10894 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10895 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10896 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10897 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10898 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10899 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10981 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10982 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10983 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10984 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10985 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10986 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10987 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10988 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10989 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10990 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10991 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10992 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10993 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10994 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10995 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +10996 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10997 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11079 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11080 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11081 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11082 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11083 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11084 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11085 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11086 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11087 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11088 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11089 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11090 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11091 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11092 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11093 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11094 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11095 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11177 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11178 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11179 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11180 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11181 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11182 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11183 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11184 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11185 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11186 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11187 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11188 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11189 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11190 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11191 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11192 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11193 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11275 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11276 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11277 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11278 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11279 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11280 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11281 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11282 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11283 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11284 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11285 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11286 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11287 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11288 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11289 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11290 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11291 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11373 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11374 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11375 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11376 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11377 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11378 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11379 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11380 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11381 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11382 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11383 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11384 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11385 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11386 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11387 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11388 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11389 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11471 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11472 1 1.0063722103956451e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11473 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11474 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11475 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11476 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11477 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11478 1 1.0063722103956451e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11479 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11480 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11481 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11482 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11483 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11484 1 1.0063722103956451e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11485 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11486 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11487 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11569 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11571 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11573 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11575 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11577 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11579 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11581 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11583 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11585 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +10802 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10804 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10806 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10808 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10810 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10812 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10814 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10816 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10900 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10901 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10902 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10903 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10904 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10905 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10906 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10907 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10908 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10909 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10910 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10911 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10912 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10913 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10914 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10915 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10998 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +10999 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11000 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11001 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11002 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11003 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11004 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11005 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11006 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11007 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11008 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11009 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11010 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11011 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11012 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11013 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11096 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11097 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11098 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11099 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11100 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11101 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11102 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11103 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11104 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11105 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11106 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11107 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11108 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11109 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11110 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11111 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11194 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11195 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11196 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11197 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11198 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11199 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11200 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11201 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11202 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11203 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11204 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11205 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11206 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11207 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11208 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11209 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11292 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11293 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11294 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11295 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11296 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11297 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11298 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11299 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11300 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11301 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11302 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11303 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11304 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11305 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11306 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11307 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11390 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11391 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11392 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11393 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11394 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11395 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11396 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11397 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11398 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11399 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11400 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11401 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11402 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11403 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11404 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11405 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11488 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11489 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11490 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11491 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11492 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11493 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11494 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11495 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11496 1 1.0063722103956442e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11497 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11498 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11499 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11500 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11501 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11502 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11503 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11587 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11589 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11591 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11593 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11595 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11597 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11599 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11601 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +10818 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10820 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10822 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10824 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10826 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10828 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10830 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10832 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10834 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10916 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10917 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10918 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10919 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10920 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10921 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10922 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10923 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10924 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10925 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10926 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10927 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10928 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10929 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10930 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10931 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10932 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +11014 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11015 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11016 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11017 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11018 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11019 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11020 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11021 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11022 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11023 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11024 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11025 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11026 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11027 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11028 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11029 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11030 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11112 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11113 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11114 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11115 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11116 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11117 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11118 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11119 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11120 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11121 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11122 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11123 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11124 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11125 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11126 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11127 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11128 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11210 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11211 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11212 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11213 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11214 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11215 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11216 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11217 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11218 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11219 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11220 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11221 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11222 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11223 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11224 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11225 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11226 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11308 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11309 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11310 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11311 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11312 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11313 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11314 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11315 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11316 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11317 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11318 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11319 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11320 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11321 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11322 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11323 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11324 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11406 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11407 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11408 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11409 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11410 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11411 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11412 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11413 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11414 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11415 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11416 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11417 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11418 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11419 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11420 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11421 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11422 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11504 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11505 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11506 1 1.0063722103956442e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11507 1 1.0063722103956404e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11508 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11509 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11510 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11511 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11512 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11513 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11514 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11515 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11516 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11517 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11518 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11519 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11520 1 1.0063722103956472e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11603 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11605 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11607 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11609 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11611 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11613 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11615 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11617 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +10836 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10838 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10840 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10842 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10844 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10846 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10848 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10850 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.0100000000000000e+00 0.0000000000000000e+00 0 0 0 +10933 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10934 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10935 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10936 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10937 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10938 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10939 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10940 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10941 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10942 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10943 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10944 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10945 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10946 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10947 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +10948 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.0300000000000000e+00 0.0000000000000000e+00 0 0 0 +10949 1 7.1371621756056538e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.0200000000000000e+00 0.0000000000000000e+00 0 0 0 +11031 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11032 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11033 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11034 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11035 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11036 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11037 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11038 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11039 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11040 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11041 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11042 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11043 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11044 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11045 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11046 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.0500000000000000e+00 0.0000000000000000e+00 0 0 0 +11047 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.0400000000000000e+00 0.0000000000000000e+00 0 0 0 +11129 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11130 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11131 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11132 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11133 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11134 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11135 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11136 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11137 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11138 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11139 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11140 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11141 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11142 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11143 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11144 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.0700000000000001e+00 0.0000000000000000e+00 0 0 0 +11145 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.0600000000000001e+00 0.0000000000000000e+00 0 0 0 +11227 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11228 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11229 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11230 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11231 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11232 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11233 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11234 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11235 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11236 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11237 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11238 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11239 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11240 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11241 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11242 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.0900000000000001e+00 0.0000000000000000e+00 0 0 0 +11243 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.0800000000000001e+00 0.0000000000000000e+00 0 0 0 +11325 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11326 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11327 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11328 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11329 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11330 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11331 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11332 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11333 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11334 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11335 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11336 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11337 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11338 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11339 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11340 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.1100000000000001e+00 0.0000000000000000e+00 0 0 0 +11341 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000001e+00 0.0000000000000000e+00 0 0 0 +11423 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11424 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11425 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11426 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11427 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11428 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11429 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11430 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11431 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11432 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11433 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11434 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11435 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11436 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11437 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11438 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.1300000000000001e+00 0.0000000000000000e+00 0 0 0 +11439 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.1200000000000001e+00 0.0000000000000000e+00 0 0 0 +11521 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11522 1 1.0063722103956442e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11523 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11524 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11525 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11526 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11527 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11528 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11529 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11530 1 1.0063722103956429e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11531 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11532 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11533 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11534 1 1.0063722103956442e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11535 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11536 1 9.7257311157309948e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.1500000000000001e+00 0.0000000000000000e+00 0 0 0 +11537 1 7.1371621756056754e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.1400000000000001e+00 0.0000000000000000e+00 0 0 0 +11619 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11621 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11623 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11625 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11627 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11629 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11631 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11633 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +11635 1 7.1371621756057107e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.1599999999999999e+00 0.0000000000000000e+00 0 0 0 +670 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.1737972567696688e+00 0.0000000000000000e+00 0 0 0 +671 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.1808683245815343e+00 0.0000000000000000e+00 0 0 0 +672 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.1737972567696688e+00 0.0000000000000000e+00 0 0 0 +673 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.1879393923933999e+00 0.0000000000000000e+00 0 0 0 +674 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.1950104602052654e+00 0.0000000000000000e+00 0 0 0 +675 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.1879393923933999e+00 0.0000000000000000e+00 0 0 0 +676 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.2020815280171309e+00 0.0000000000000000e+00 0 0 0 +677 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.2091525958289964e+00 0.0000000000000000e+00 0 0 0 +678 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.2020815280171309e+00 0.0000000000000000e+00 0 0 0 +679 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.2162236636408617e+00 0.0000000000000000e+00 0 0 0 +680 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.2232947314527272e+00 0.0000000000000000e+00 0 0 0 +681 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.2162236636408617e+00 0.0000000000000000e+00 0 0 0 +682 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.2303657992645927e+00 0.0000000000000000e+00 0 0 0 +683 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.2374368670764582e+00 0.0000000000000000e+00 0 0 0 +684 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.2303657992645927e+00 0.0000000000000000e+00 0 0 0 +685 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.2445079348883237e+00 0.0000000000000000e+00 0 0 0 +686 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.2515790027001892e+00 0.0000000000000000e+00 0 0 0 +687 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.2445079348883237e+00 0.0000000000000000e+00 0 0 0 +688 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.2586500705120547e+00 0.0000000000000000e+00 0 0 0 +689 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.2657211383239202e+00 0.0000000000000000e+00 0 0 0 +690 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.2586500705120547e+00 0.0000000000000000e+00 0 0 0 +691 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.2727922061357855e+00 0.0000000000000000e+00 0 0 0 +692 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.2798632739476510e+00 0.0000000000000000e+00 0 0 0 +693 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.2727922061357855e+00 0.0000000000000000e+00 0 0 0 +694 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.2869343417595165e+00 0.0000000000000000e+00 0 0 0 +695 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.2940054095713820e+00 0.0000000000000000e+00 0 0 0 +696 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.2869343417595165e+00 0.0000000000000000e+00 0 0 0 +697 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.3010764773832475e+00 0.0000000000000000e+00 0 0 0 +698 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.3081475451951130e+00 0.0000000000000000e+00 0 0 0 +699 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.3010764773832475e+00 0.0000000000000000e+00 0 0 0 +700 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.3152186130069785e+00 0.0000000000000000e+00 0 0 0 +701 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.3222896808188438e+00 0.0000000000000000e+00 0 0 0 +702 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.3152186130069785e+00 0.0000000000000000e+00 0 0 0 +703 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.3293607486307093e+00 0.0000000000000000e+00 0 0 0 +705 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.3293607486307093e+00 0.0000000000000000e+00 0 0 0 +11538 1 7.1371621756056788e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11540 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11542 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11544 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11546 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11548 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11550 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11636 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11637 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11638 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11639 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11640 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11641 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11642 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11643 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11644 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11645 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11646 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11647 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11648 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11649 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11734 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11735 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11736 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11737 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11738 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11739 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11740 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11741 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11742 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11743 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11744 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11745 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11746 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11747 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11832 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11833 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11834 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11835 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11836 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11837 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11838 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11839 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11840 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11841 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11842 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11843 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11844 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11845 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11930 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11931 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11932 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11933 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11934 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11935 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11936 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11937 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11938 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11939 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11940 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11941 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11942 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11943 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12028 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12029 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12030 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12031 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12032 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12033 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12034 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12035 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12036 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12037 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12038 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12039 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12040 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12041 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12126 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12127 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12128 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12129 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12130 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12131 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12132 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12133 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12134 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12135 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12136 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12137 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12138 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12139 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12224 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12225 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12226 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12227 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12228 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12229 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12230 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12231 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12232 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12233 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12234 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12235 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12236 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12237 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12322 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12323 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12324 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12325 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12326 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12327 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12328 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12329 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12330 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12331 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12332 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12333 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12334 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12335 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +11552 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11554 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11556 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11558 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11560 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11562 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11564 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11566 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11568 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11650 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11651 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11652 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11653 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11654 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11655 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11656 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11657 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11658 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11659 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11660 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11661 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11662 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11663 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11664 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11665 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11666 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11748 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11749 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11750 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11751 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11752 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11753 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11754 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11755 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11756 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11757 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11758 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11759 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11760 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11761 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11762 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11763 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11764 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11846 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11847 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11848 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11849 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11850 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11851 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11852 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11853 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11854 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11855 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11856 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11857 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11858 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11859 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11860 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11861 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11862 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11944 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11945 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11946 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11947 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11948 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11949 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11950 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11951 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11952 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11953 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11954 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11955 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11956 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11957 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11958 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11959 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11960 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12042 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12043 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12044 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12045 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12046 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12047 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12048 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12049 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12050 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12051 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12052 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12053 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12054 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12055 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12056 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12057 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12058 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12140 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12141 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12142 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12143 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12144 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12145 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12146 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12147 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12148 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12149 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12150 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12151 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12152 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12153 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12154 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12155 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12156 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12238 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12239 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12240 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12241 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12242 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12243 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12244 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12245 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12246 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12247 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12248 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12249 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12250 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12251 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12252 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12253 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12254 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12336 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12337 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12338 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12339 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12340 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12341 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12342 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12343 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12344 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12345 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12346 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12347 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12348 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12349 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12350 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12351 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12352 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +11570 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11572 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11574 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11576 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11578 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11580 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11582 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11584 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11667 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11668 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11669 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11670 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11671 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11672 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11673 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11674 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11675 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11676 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11677 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11678 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11679 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11680 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11681 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11682 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11683 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11765 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11766 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11767 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11768 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11769 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11770 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11771 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11772 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11773 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11774 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11775 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11776 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11777 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11778 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11779 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11780 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11781 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11863 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11864 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11865 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11866 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11867 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11868 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11869 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11870 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11871 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11872 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11873 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11874 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11875 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11876 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11877 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11878 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11879 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11961 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11962 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11963 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11964 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11965 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11966 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11967 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11968 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11969 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11970 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11971 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11972 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11973 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11974 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11975 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11976 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11977 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12059 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12060 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12061 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12062 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12063 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12064 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12065 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12066 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12067 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12068 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12069 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12070 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12071 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12072 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12073 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12074 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12075 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12157 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12158 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12159 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12160 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12161 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12162 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12163 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12164 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12165 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12166 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12167 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12168 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12169 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12170 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12171 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12172 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12173 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12255 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12256 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12257 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12258 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12259 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12260 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12261 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12262 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12263 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12264 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12265 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12266 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12267 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12268 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12269 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12270 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12271 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12353 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12354 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12355 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12356 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12357 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12358 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12359 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12360 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12361 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12362 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12363 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12364 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12365 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12366 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12367 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12368 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12369 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +11586 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11588 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11590 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11592 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11594 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11596 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11598 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11600 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11684 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11685 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11686 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11687 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11688 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11689 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11690 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11691 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11692 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11693 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11694 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11695 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11696 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11697 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11698 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11699 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11782 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11783 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11784 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11785 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11786 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11787 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11788 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11789 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11790 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11791 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11792 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11793 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11794 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11795 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11796 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11797 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11880 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11881 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11882 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11883 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11884 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11885 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11886 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11887 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11888 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11889 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11890 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11891 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11892 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11893 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11894 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11895 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11978 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11979 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11980 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11981 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11982 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11983 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11984 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11985 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11986 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11987 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11988 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11989 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11990 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11991 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11992 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11993 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12076 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12077 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12078 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12079 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12080 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12081 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12082 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12083 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12084 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12085 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12086 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12087 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12088 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12089 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12090 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12091 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12174 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12175 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12176 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12177 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12178 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12179 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12180 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12181 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12182 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12183 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12184 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12185 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12186 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12187 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12188 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12189 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12272 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12273 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12274 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12275 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12276 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12277 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12278 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12279 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12280 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12281 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12282 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12283 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12284 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12285 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12286 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12287 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12370 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12371 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12372 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12373 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12374 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12375 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12376 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12377 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12378 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12379 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12380 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12381 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12382 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12383 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12384 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12385 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +11602 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11604 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11606 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11608 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11610 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11612 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11614 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11616 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11618 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11700 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11701 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11702 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11703 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11704 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11705 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11706 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11707 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11708 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11709 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11710 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11711 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11712 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11713 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11714 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11715 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11716 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11798 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11799 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11800 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11801 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11802 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11803 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11804 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11805 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11806 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11807 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11808 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11809 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11810 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11811 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11812 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11813 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11814 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11896 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11897 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11898 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11899 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11900 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11901 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11902 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11903 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11904 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11905 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11906 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11907 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11908 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11909 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11910 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11911 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11912 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11994 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11995 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11996 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11997 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +11998 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +11999 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12000 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12001 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12002 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12003 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12004 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12005 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12006 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12007 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12008 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12009 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12010 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12092 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12093 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12094 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12095 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12096 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12097 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12098 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12099 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12100 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12101 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12102 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12103 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12104 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12105 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12106 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12107 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12108 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12190 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12191 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12192 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12193 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12194 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12195 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12196 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12197 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12198 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12199 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12200 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12201 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12202 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12203 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12204 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12205 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12206 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12288 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12289 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12290 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12291 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12292 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12293 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12294 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12295 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12296 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12297 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12298 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12299 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12300 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12301 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12302 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12303 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12304 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12386 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12387 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12388 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12389 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12390 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12391 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12392 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12393 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12394 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12395 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12396 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12397 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12398 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12399 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12400 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12401 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12402 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +11620 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11622 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11624 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11626 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11628 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11630 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11632 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11634 1 9.7257311157309277e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.1699999999999999e+00 0.0000000000000000e+00 0 0 0 +11717 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11718 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11719 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11720 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11721 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11722 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11723 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11724 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11725 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11726 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11727 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11728 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11729 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11730 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11731 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11732 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.1899999999999999e+00 0.0000000000000000e+00 0 0 0 +11733 1 7.1371621756056538e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.1799999999999999e+00 0.0000000000000000e+00 0 0 0 +11815 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11816 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11817 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11818 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11819 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11820 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11821 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11822 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11823 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11824 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11825 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11826 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11827 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11828 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11829 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11830 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.2100000000000000e+00 0.0000000000000000e+00 0 0 0 +11831 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e+00 0.0000000000000000e+00 0 0 0 +11913 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11914 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11915 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11916 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11917 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11918 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11919 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11920 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11921 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11922 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11923 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11924 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11925 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11926 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11927 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +11928 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.2300000000000000e+00 0.0000000000000000e+00 0 0 0 +11929 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.2200000000000000e+00 0.0000000000000000e+00 0 0 0 +12011 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12012 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12013 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12014 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12015 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12016 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12017 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12018 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12019 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12020 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12021 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12022 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12023 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12024 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12025 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12026 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.2500000000000000e+00 0.0000000000000000e+00 0 0 0 +12027 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.2400000000000000e+00 0.0000000000000000e+00 0 0 0 +12109 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12110 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12111 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12112 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12113 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12114 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12115 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12116 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12117 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12118 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12119 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12120 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12121 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12122 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12123 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12124 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.2700000000000000e+00 0.0000000000000000e+00 0 0 0 +12125 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.2600000000000000e+00 0.0000000000000000e+00 0 0 0 +12207 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12208 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12209 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12210 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12211 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12212 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12213 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12214 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12215 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12216 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12217 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12218 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12219 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12220 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12221 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12222 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.2900000000000000e+00 0.0000000000000000e+00 0 0 0 +12223 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.2800000000000000e+00 0.0000000000000000e+00 0 0 0 +12305 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12306 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12307 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12308 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12309 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12310 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12311 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12312 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12313 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12314 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12315 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12316 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12317 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12318 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12319 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12320 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.3100000000000001e+00 0.0000000000000000e+00 0 0 0 +12321 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e+00 0.0000000000000000e+00 0 0 0 +12403 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12404 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12405 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12406 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12407 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12408 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12409 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12410 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12411 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12412 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12413 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12414 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12415 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12416 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12417 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +12418 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.3300000000000001e+00 0.0000000000000000e+00 0 0 0 +12419 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.3200000000000001e+00 0.0000000000000000e+00 0 0 0 +704 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.3364318164425748e+00 0.0000000000000000e+00 0 0 0 +706 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.3435028842544403e+00 0.0000000000000000e+00 0 0 0 +707 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.3505739520663058e+00 0.0000000000000000e+00 0 0 0 +708 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.3435028842544403e+00 0.0000000000000000e+00 0 0 0 +709 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.3576450198781713e+00 0.0000000000000000e+00 0 0 0 +710 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.3647160876900368e+00 0.0000000000000000e+00 0 0 0 +711 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.3576450198781713e+00 0.0000000000000000e+00 0 0 0 +712 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.3717871555019021e+00 0.0000000000000000e+00 0 0 0 +713 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.3788582233137676e+00 0.0000000000000000e+00 0 0 0 +714 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.3717871555019021e+00 0.0000000000000000e+00 0 0 0 +715 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.3859292911256331e+00 0.0000000000000000e+00 0 0 0 +716 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.3930003589374986e+00 0.0000000000000000e+00 0 0 0 +717 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.3859292911256331e+00 0.0000000000000000e+00 0 0 0 +718 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.4000714267493641e+00 0.0000000000000000e+00 0 0 0 +719 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.4071424945612296e+00 0.0000000000000000e+00 0 0 0 +720 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.4000714267493641e+00 0.0000000000000000e+00 0 0 0 +721 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.4142135623730951e+00 0.0000000000000000e+00 0 0 0 +722 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.4212846301849607e+00 0.0000000000000000e+00 0 0 0 +723 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.4142135623730951e+00 0.0000000000000000e+00 0 0 0 +724 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.4283556979968259e+00 0.0000000000000000e+00 0 0 0 +725 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.4354267658086914e+00 0.0000000000000000e+00 0 0 0 +726 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.4283556979968259e+00 0.0000000000000000e+00 0 0 0 +727 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.4424978336205569e+00 0.0000000000000000e+00 0 0 0 +728 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.4495689014324225e+00 0.0000000000000000e+00 0 0 0 +729 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.4424978336205569e+00 0.0000000000000000e+00 0 0 0 +730 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.4566399692442880e+00 0.0000000000000000e+00 0 0 0 +731 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.4637110370561535e+00 0.0000000000000000e+00 0 0 0 +732 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.4566399692442880e+00 0.0000000000000000e+00 0 0 0 +733 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.4707821048680190e+00 0.0000000000000000e+00 0 0 0 +734 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.4778531726798843e+00 0.0000000000000000e+00 0 0 0 +735 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.4707821048680190e+00 0.0000000000000000e+00 0 0 0 +736 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.4849242404917498e+00 0.0000000000000000e+00 0 0 0 +737 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.4919953083036153e+00 0.0000000000000000e+00 0 0 0 +738 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.4849242404917498e+00 0.0000000000000000e+00 0 0 0 +739 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.4990663761154808e+00 0.0000000000000000e+00 0 0 0 +741 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.4990663761154808e+00 0.0000000000000000e+00 0 0 0 +12420 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12421 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12422 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12423 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12424 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12425 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12426 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12427 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12428 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12429 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12430 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12431 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12432 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12433 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12518 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12519 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12520 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12521 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12522 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12523 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12524 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12525 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12526 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12527 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12528 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12529 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12530 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12531 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12616 1 7.1371621756056800e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12617 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12618 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12619 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12620 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12621 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12622 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12623 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12624 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12625 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12626 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12627 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12628 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12629 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12714 1 7.1371621756057129e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12715 1 9.7257311157309994e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12716 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12717 1 1.0063722103956434e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12718 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12719 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12720 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12721 1 1.0063722103956434e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12722 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12723 1 1.0063722103956432e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12724 1 1.0063722103956430e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12725 1 1.0063722103956438e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12726 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12727 1 1.0063722103956432e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12812 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12813 1 9.7257311157309334e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12814 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12815 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12816 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12817 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12818 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12819 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12820 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12821 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12822 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12823 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12824 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12825 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12910 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12911 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12912 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12913 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12914 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12915 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12916 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12917 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12918 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12919 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12920 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12921 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12922 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12923 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +13008 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13009 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13010 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13011 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13012 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13013 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13014 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13015 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13016 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13017 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13018 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13019 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13020 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13021 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13106 1 7.1371621756056550e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13107 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13108 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13109 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13110 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13111 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13112 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13113 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13114 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13115 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13116 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13117 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13118 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13119 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13205 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13207 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13209 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13211 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13213 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13215 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13217 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +12434 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12435 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12436 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12437 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12438 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12439 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12440 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12441 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12442 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12443 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12444 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12445 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12446 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12447 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12448 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12449 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12450 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12532 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12533 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12534 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12535 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12536 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12537 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12538 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12539 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12540 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12541 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12542 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12543 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12544 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12545 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12546 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12547 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12548 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12630 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12631 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12632 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12633 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12634 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12635 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12636 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12637 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12638 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12639 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12640 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12641 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12642 1 1.0063722103956384e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12643 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12644 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12645 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12646 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12728 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12729 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12730 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12731 1 1.0063722103956438e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12732 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12733 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12734 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12735 1 1.0063722103956436e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12736 1 1.0063722103956430e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12737 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12738 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12739 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12740 1 1.0063722103956446e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12741 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12742 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12743 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12744 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12826 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12827 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12828 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12829 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12830 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12831 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12832 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12833 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12834 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12835 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12836 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12837 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12838 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12839 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12840 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12841 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12842 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12924 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12925 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12926 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12927 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12928 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12929 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12930 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12931 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12932 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12933 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12934 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12935 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12936 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12937 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12938 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12939 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12940 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +13022 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13023 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13024 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13025 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13026 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13027 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13028 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13029 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13030 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13031 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13032 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13033 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13034 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13035 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13036 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13037 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13038 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13120 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13121 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13122 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13123 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13124 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13125 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13126 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13127 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13128 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13129 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13130 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13131 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13132 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13133 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13134 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13135 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13136 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13219 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13221 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13223 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13225 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13227 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13229 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13231 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13233 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +12451 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12452 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12453 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12454 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12455 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12456 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12457 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12458 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12459 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12460 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12461 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12462 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12463 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12464 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12465 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12466 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12467 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12549 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12550 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12551 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12552 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12553 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12554 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12555 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12556 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12557 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12558 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12559 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12560 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12561 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12562 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12563 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12564 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12565 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12647 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12648 1 1.0063722103956384e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12649 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12650 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12651 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12652 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12653 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12654 1 1.0063722103956384e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12655 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12656 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12657 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12658 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12659 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12660 1 1.0063722103956384e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12661 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12662 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12663 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12745 1 1.0063722103956434e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12746 1 1.0063722103956447e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12747 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12748 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12749 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12750 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12751 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12752 1 1.0063722103956447e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12753 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12754 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12755 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12756 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12757 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12758 1 1.0063722103956447e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12759 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12760 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12761 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12843 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12844 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12845 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12846 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12847 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12848 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12849 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12850 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12851 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12852 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12853 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12854 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12855 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12856 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12857 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12858 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12859 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12941 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12942 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12943 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12944 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12945 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12946 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12947 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12948 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12949 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12950 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12951 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12952 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12953 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12954 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12955 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12956 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12957 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +13039 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13040 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13041 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13042 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13043 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13044 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13045 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13046 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13047 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13048 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13049 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13050 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13051 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13052 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13053 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13054 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13055 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13137 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13138 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13139 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13140 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13141 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13142 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13143 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13144 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13145 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13146 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13147 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13148 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13149 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13150 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13151 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13152 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13153 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13235 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13237 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13239 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13241 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13243 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13245 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13247 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13249 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13251 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +12468 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12469 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12470 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12471 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12472 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12473 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12474 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12475 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12476 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12477 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12478 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12479 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12480 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12481 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12482 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12483 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12566 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12567 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12568 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12569 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12570 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12571 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12572 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12573 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12574 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12575 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12576 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12577 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12578 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12579 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12580 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12581 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12664 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12665 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12666 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12667 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12668 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12669 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12670 1 1.0063722103956406e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12671 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12672 1 1.0063722103956374e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12673 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12674 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12675 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12676 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12677 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12678 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12679 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12762 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12763 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12764 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12765 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12766 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12767 1 1.0063722103956441e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12768 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12769 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12770 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12771 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12772 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12773 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12774 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12775 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12776 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12777 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12860 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12861 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12862 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12863 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12864 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12865 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12866 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12867 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12868 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12869 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12870 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12871 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12872 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12873 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12874 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12875 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12958 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12959 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12960 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12961 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12962 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12963 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12964 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12965 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12966 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12967 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12968 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12969 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12970 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12971 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12972 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12973 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +13056 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13057 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13058 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13059 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13060 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13061 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13062 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13063 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13064 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13065 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13066 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13067 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13068 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13069 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13070 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13071 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13154 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13155 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13156 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13157 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13158 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13159 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13160 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13161 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13162 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13163 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13164 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13165 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13166 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13167 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13168 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13169 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13253 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13255 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13257 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13259 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13261 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13263 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13265 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13267 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +12484 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12485 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12486 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12487 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12488 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12489 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12490 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12491 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12492 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12493 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12494 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12495 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12496 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12497 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12498 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12499 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12500 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12582 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12583 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12584 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12585 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12586 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12587 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12588 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12589 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12590 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12591 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12592 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12593 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12594 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12595 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12596 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12597 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12598 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12680 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12681 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12682 1 1.0063722103956374e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12683 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12684 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12685 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12686 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12687 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12688 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12689 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12690 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12691 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12692 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12693 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12694 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12695 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12696 1 1.0063722103956406e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12778 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12779 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12780 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12781 1 1.0063722103956472e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12782 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12783 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12784 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12785 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12786 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12787 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12788 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12789 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12790 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12791 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12792 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12793 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12794 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12876 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12877 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12878 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12879 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12880 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12881 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12882 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12883 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12884 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12885 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12886 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12887 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12888 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12889 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12890 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12891 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12892 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12974 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12975 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12976 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12977 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12978 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12979 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12980 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12981 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12982 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12983 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12984 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12985 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12986 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12987 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12988 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12989 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12990 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +13072 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13073 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13074 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13075 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13076 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13077 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13078 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13079 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13080 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13081 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13082 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13083 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13084 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13085 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13086 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13087 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13088 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13170 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13171 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13172 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13173 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13174 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13175 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13176 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13177 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13178 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13179 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13180 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13181 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13182 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13183 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13184 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13185 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13186 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13269 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13271 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13273 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13275 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13277 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13279 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13281 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13283 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +12501 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12502 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12503 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12504 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12505 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12506 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12507 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12508 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12509 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12510 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12511 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12512 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12513 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12514 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12515 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12516 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.3500000000000001e+00 0.0000000000000000e+00 0 0 0 +12517 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.3400000000000001e+00 0.0000000000000000e+00 0 0 0 +12599 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12600 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12601 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12602 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12603 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12604 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12605 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12606 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12607 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12608 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12609 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12610 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12611 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12612 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12613 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12614 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.3700000000000001e+00 0.0000000000000000e+00 0 0 0 +12615 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.3600000000000001e+00 0.0000000000000000e+00 0 0 0 +12697 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12698 1 1.0063722103956374e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12699 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12700 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12701 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12702 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12703 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12704 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12705 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12706 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12707 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12708 1 1.0063722103956406e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12709 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12710 1 1.0063722103956374e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12711 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12712 1 9.7257311157309277e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.3900000000000001e+00 0.0000000000000000e+00 0 0 0 +12713 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.3800000000000001e+00 0.0000000000000000e+00 0 0 0 +12795 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12796 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12797 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12798 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12799 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12800 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12801 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12802 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12803 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12804 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12805 1 1.0063722103956441e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12806 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12807 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12808 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12809 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12810 1 9.7257311157309960e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.4099999999999999e+00 0.0000000000000000e+00 0 0 0 +12811 1 7.1371621756057095e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e+00 0.0000000000000000e+00 0 0 0 +12893 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12894 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12895 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12896 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12897 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12898 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12899 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12900 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12901 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12902 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12903 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12904 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12905 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12906 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12907 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12908 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.4299999999999999e+00 0.0000000000000000e+00 0 0 0 +12909 1 7.1371621756056766e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.4199999999999999e+00 0.0000000000000000e+00 0 0 0 +12991 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12992 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12993 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12994 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12995 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12996 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12997 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +12998 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +12999 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +13000 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +13001 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +13002 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +13003 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +13004 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +13005 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +13006 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.4500000000000000e+00 0.0000000000000000e+00 0 0 0 +13007 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.4399999999999999e+00 0.0000000000000000e+00 0 0 0 +13089 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13090 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13091 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13092 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13093 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13094 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13095 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13096 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13097 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13098 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13099 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13100 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13101 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13102 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13103 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13104 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.4700000000000000e+00 0.0000000000000000e+00 0 0 0 +13105 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.4600000000000000e+00 0.0000000000000000e+00 0 0 0 +13187 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13188 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13189 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13190 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13191 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13192 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13193 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13194 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13195 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13196 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13197 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13198 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13199 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13200 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13201 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13202 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.4900000000000000e+00 0.0000000000000000e+00 0 0 0 +13203 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.4800000000000000e+00 0.0000000000000000e+00 0 0 0 +13285 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13287 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13289 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13291 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13293 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13295 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13297 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13299 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +13301 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.5000000000000000e+00 0.0000000000000000e+00 0 0 0 +740 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.5061374439273463e+00 0.0000000000000000e+00 0 0 0 +742 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.5132085117392118e+00 0.0000000000000000e+00 0 0 0 +743 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.5202795795510773e+00 0.0000000000000000e+00 0 0 0 +744 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.5132085117392118e+00 0.0000000000000000e+00 0 0 0 +745 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.5273506473629426e+00 0.0000000000000000e+00 0 0 0 +746 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.5344217151748081e+00 0.0000000000000000e+00 0 0 0 +747 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.5273506473629426e+00 0.0000000000000000e+00 0 0 0 +748 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.5414927829866736e+00 0.0000000000000000e+00 0 0 0 +749 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.5485638507985391e+00 0.0000000000000000e+00 0 0 0 +750 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.5414927829866736e+00 0.0000000000000000e+00 0 0 0 +751 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.5556349186104046e+00 0.0000000000000000e+00 0 0 0 +752 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.5627059864222701e+00 0.0000000000000000e+00 0 0 0 +753 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.5556349186104046e+00 0.0000000000000000e+00 0 0 0 +754 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.5697770542341356e+00 0.0000000000000000e+00 0 0 0 +755 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.5768481220460011e+00 0.0000000000000000e+00 0 0 0 +756 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.5697770542341356e+00 0.0000000000000000e+00 0 0 0 +757 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.5839191898578664e+00 0.0000000000000000e+00 0 0 0 +758 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.5909902576697319e+00 0.0000000000000000e+00 0 0 0 +759 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.5839191898578664e+00 0.0000000000000000e+00 0 0 0 +760 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.5980613254815974e+00 0.0000000000000000e+00 0 0 0 +761 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.6051323932934629e+00 0.0000000000000000e+00 0 0 0 +762 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.5980613254815974e+00 0.0000000000000000e+00 0 0 0 +763 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.6122034611053284e+00 0.0000000000000000e+00 0 0 0 +764 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.6192745289171939e+00 0.0000000000000000e+00 0 0 0 +765 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.6122034611053284e+00 0.0000000000000000e+00 0 0 0 +766 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.6263455967290594e+00 0.0000000000000000e+00 0 0 0 +767 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.6334166645409247e+00 0.0000000000000000e+00 0 0 0 +768 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.6263455967290594e+00 0.0000000000000000e+00 0 0 0 +769 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.6404877323527902e+00 0.0000000000000000e+00 0 0 0 +770 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.6475588001646557e+00 0.0000000000000000e+00 0 0 0 +771 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.6404877323527902e+00 0.0000000000000000e+00 0 0 0 +772 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.6546298679765212e+00 0.0000000000000000e+00 0 0 0 +773 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.6617009357883867e+00 0.0000000000000000e+00 0 0 0 +774 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.6546298679765212e+00 0.0000000000000000e+00 0 0 0 +13204 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13206 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13208 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13210 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13212 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13214 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13216 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13302 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13303 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13304 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13305 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13306 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13307 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13308 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13309 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13310 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13311 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13312 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13313 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13314 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13315 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13400 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13401 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13402 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13403 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13404 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13405 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13406 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13407 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13408 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13409 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13410 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13411 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13412 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13413 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13498 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13499 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13500 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13501 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13502 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13503 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13504 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13505 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13506 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13507 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13508 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13509 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13510 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13511 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13596 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13597 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13598 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13599 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13600 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13601 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13602 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13603 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13604 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13605 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13606 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13607 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13608 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13609 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13694 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13695 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13696 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13697 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13698 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13699 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13700 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13701 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13702 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13703 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13704 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13705 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13706 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13707 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13792 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13793 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13794 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13795 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13796 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13797 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13798 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13799 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13800 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13801 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13802 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13803 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13804 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13805 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13890 1 7.1371621756056800e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13891 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13892 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13893 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13894 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13895 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13896 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13897 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13898 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13899 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13900 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13901 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13902 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13903 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13989 1 9.7257311157309994e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +13991 1 1.0063722103956434e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +13993 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +13995 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +13997 1 1.0063722103956432e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +13999 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14001 1 1.0063722103956430e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +13218 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13220 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13222 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13224 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13226 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13228 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13230 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13232 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13234 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13316 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13317 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13318 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13319 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13320 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13321 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13322 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13323 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13324 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13325 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13326 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13327 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13328 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13329 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13330 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13331 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13332 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13414 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13415 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13416 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13417 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13418 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13419 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13420 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13421 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13422 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13423 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13424 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13425 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13426 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13427 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13428 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13429 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13430 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13512 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13513 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13514 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13515 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13516 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13517 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13518 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13519 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13520 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13521 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13522 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13523 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13524 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13525 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13526 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13527 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13528 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13610 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13611 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13612 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13613 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13614 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13615 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13616 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13617 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13618 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13619 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13620 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13621 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13622 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13623 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13624 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13625 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13626 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13708 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13709 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13710 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13711 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13712 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13713 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13714 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13715 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13716 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13717 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13718 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13719 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13720 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13721 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13722 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13723 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13724 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13806 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13807 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13808 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13809 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13810 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13811 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13812 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13813 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13814 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13815 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13816 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13817 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13818 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13819 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13820 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13821 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13822 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13904 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13905 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13906 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13907 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13908 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13909 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13910 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13911 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13912 1 1.0063722103956363e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13913 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13914 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13915 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13916 1 1.0063722103956384e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13917 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13918 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13919 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13920 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +14003 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14005 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14007 1 1.0063722103956432e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14009 1 1.0063722103956436e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14011 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14013 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14015 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14017 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +13236 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13238 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13240 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13242 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13244 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13246 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13248 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13250 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13333 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13334 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13335 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13336 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13337 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13338 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13339 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13340 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13341 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13342 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13343 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13344 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13345 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13346 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13347 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13348 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13349 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13431 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13432 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13433 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13434 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13435 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13436 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13437 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13438 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13439 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13440 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13441 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13442 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13443 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13444 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13445 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13446 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13447 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13529 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13530 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13531 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13532 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13533 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13534 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13535 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13536 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13537 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13538 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13539 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13540 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13541 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13542 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13543 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13544 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13545 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13627 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13628 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13629 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13630 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13631 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13632 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13633 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13634 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13635 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13636 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13637 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13638 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13639 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13640 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13641 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13642 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13643 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13725 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13726 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13727 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13728 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13729 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13730 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13731 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13732 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13733 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13734 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13735 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13736 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13737 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13738 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13739 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13740 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13741 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13823 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13824 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13825 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13826 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13827 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13828 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13829 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13830 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13831 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13832 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13833 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13834 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13835 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13836 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13837 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13838 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13839 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13921 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13922 1 1.0063722103956384e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13923 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13924 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13925 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13926 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13927 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13928 1 1.0063722103956384e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13929 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13930 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13931 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13932 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13933 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13934 1 1.0063722103956384e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13935 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13936 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13937 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +14019 1 1.0063722103956432e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14021 1 1.0063722103956451e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14023 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14025 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14027 1 1.0063722103956451e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14029 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14031 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14033 1 1.0063722103956451e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14035 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +13252 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13254 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13256 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13258 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13260 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13262 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13264 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13266 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13350 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13351 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13352 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13353 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13354 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13355 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13356 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13357 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13358 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13359 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13360 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13361 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13362 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13363 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13364 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13365 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13448 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13449 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13450 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13451 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13452 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13453 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13454 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13455 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13456 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13457 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13458 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13459 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13460 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13461 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13462 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13463 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13546 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13547 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13548 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13549 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13550 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13551 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13552 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13553 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13554 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13555 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13556 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13557 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13558 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13559 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13560 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13561 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13644 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13645 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13646 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13647 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13648 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13649 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13650 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13651 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13652 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13653 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13654 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13655 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13656 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13657 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13658 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13659 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13742 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13743 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13744 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13745 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13746 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13747 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13748 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13749 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13750 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13751 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13752 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13753 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13754 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13755 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13756 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13757 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13840 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13841 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13842 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13843 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13844 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13845 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13846 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13847 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13848 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13849 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13850 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13851 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13852 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13853 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13854 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13855 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13938 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13939 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13940 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13941 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13942 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13943 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13944 1 1.0063722103956408e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13945 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13946 1 1.0063722103956374e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13947 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13948 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13949 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13950 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13951 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13952 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13953 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +14037 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14039 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14041 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14043 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14045 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14047 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14049 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14051 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +13268 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13270 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13272 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13274 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13276 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13278 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13280 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13282 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13284 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13366 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13367 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13368 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13369 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13370 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13371 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13372 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13373 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13374 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13375 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13376 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13377 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13378 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13379 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13380 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13381 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13382 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13464 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13465 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13466 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13467 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13468 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13469 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13470 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13471 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13472 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13473 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13474 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13475 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13476 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13477 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13478 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13479 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13480 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13562 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13563 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13564 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13565 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13566 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13567 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13568 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13569 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13570 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13571 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13572 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13573 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13574 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13575 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13576 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13577 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13578 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13660 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13661 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13662 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13663 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13664 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13665 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13666 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13667 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13668 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13669 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13670 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13671 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13672 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13673 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13674 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13675 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13676 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13758 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13759 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13760 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13761 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13762 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13763 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13764 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13765 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13766 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13767 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13768 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13769 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13770 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13771 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13772 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13773 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13774 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13856 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13857 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13858 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13859 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13860 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13861 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13862 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13863 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13864 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13865 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13866 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13867 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13868 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13869 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13870 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13871 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13872 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13954 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13955 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13956 1 1.0063722103956374e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13957 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13958 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13959 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13960 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13961 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13962 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13963 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13964 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13965 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13966 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13967 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13968 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13969 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13970 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +14053 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14055 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14057 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14059 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14061 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14063 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14065 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14067 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +13286 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13288 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13290 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13292 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13294 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13296 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13298 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13300 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.5100000000000000e+00 0.0000000000000000e+00 0 0 0 +13383 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13384 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13385 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13386 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13387 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13388 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13389 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13390 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13391 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13392 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13393 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13394 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13395 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13396 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13397 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13398 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.5300000000000000e+00 0.0000000000000000e+00 0 0 0 +13399 1 7.1371621756056538e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.5200000000000000e+00 0.0000000000000000e+00 0 0 0 +13481 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13482 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13483 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13484 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13485 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13486 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13487 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13488 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13489 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13490 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13491 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13492 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13493 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13494 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13495 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13496 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.5500000000000000e+00 0.0000000000000000e+00 0 0 0 +13497 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.5400000000000000e+00 0.0000000000000000e+00 0 0 0 +13579 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13580 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13581 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13582 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13583 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13584 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13585 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13586 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13587 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13588 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13589 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13590 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13591 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13592 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13593 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13594 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.5700000000000001e+00 0.0000000000000000e+00 0 0 0 +13595 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.5600000000000001e+00 0.0000000000000000e+00 0 0 0 +13677 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13678 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13679 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13680 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13681 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13682 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13683 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13684 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13685 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13686 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13687 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13688 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13689 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13690 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13691 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13692 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.5900000000000001e+00 0.0000000000000000e+00 0 0 0 +13693 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.5800000000000001e+00 0.0000000000000000e+00 0 0 0 +13775 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13776 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13777 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13778 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13779 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13780 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13781 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13782 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13783 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13784 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13785 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13786 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13787 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13788 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13789 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13790 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.6100000000000001e+00 0.0000000000000000e+00 0 0 0 +13791 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000001e+00 0.0000000000000000e+00 0 0 0 +13873 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13874 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13875 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13876 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13877 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13878 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13879 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13880 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13881 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13882 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13883 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13884 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13885 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13886 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13887 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13888 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.6300000000000001e+00 0.0000000000000000e+00 0 0 0 +13889 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.6200000000000001e+00 0.0000000000000000e+00 0 0 0 +13971 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13972 1 1.0063722103956374e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13973 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13974 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13975 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13976 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13977 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13978 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13979 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13980 1 1.0063722103956361e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13981 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13982 1 1.0063722103956408e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13983 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13984 1 1.0063722103956374e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13985 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +13986 1 9.7257311157309277e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.6500000000000001e+00 0.0000000000000000e+00 0 0 0 +13987 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.6400000000000001e+00 0.0000000000000000e+00 0 0 0 +14069 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14071 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14073 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14075 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14077 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14079 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14081 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14083 1 1.0063722103956427e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +14085 1 7.1371621756057095e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.6600000000000001e+00 0.0000000000000000e+00 0 0 0 +775 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.6687720036002522e+00 0.0000000000000000e+00 0 0 0 +776 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.6758430714121177e+00 0.0000000000000000e+00 0 0 0 +777 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.6687720036002522e+00 0.0000000000000000e+00 0 0 0 +778 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.6829141392239830e+00 0.0000000000000000e+00 0 0 0 +779 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.6899852070358485e+00 0.0000000000000000e+00 0 0 0 +780 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.6829141392239830e+00 0.0000000000000000e+00 0 0 0 +781 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.6970562748477140e+00 0.0000000000000000e+00 0 0 0 +782 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.7041273426595795e+00 0.0000000000000000e+00 0 0 0 +783 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.6970562748477140e+00 0.0000000000000000e+00 0 0 0 +784 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.7111984104714451e+00 0.0000000000000000e+00 0 0 0 +785 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.7182694782833106e+00 0.0000000000000000e+00 0 0 0 +786 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.7111984104714451e+00 0.0000000000000000e+00 0 0 0 +787 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.7253405460951761e+00 0.0000000000000000e+00 0 0 0 +788 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.7324116139070416e+00 0.0000000000000000e+00 0 0 0 +789 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.7253405460951761e+00 0.0000000000000000e+00 0 0 0 +790 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.7394826817189069e+00 0.0000000000000000e+00 0 0 0 +791 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.7465537495307724e+00 0.0000000000000000e+00 0 0 0 +792 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.7394826817189069e+00 0.0000000000000000e+00 0 0 0 +793 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.7536248173426379e+00 0.0000000000000000e+00 0 0 0 +794 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.7606958851545034e+00 0.0000000000000000e+00 0 0 0 +795 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.7536248173426379e+00 0.0000000000000000e+00 0 0 0 +796 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.7677669529663689e+00 0.0000000000000000e+00 0 0 0 +797 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.7748380207782344e+00 0.0000000000000000e+00 0 0 0 +798 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.7677669529663689e+00 0.0000000000000000e+00 0 0 0 +799 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.7819090885900999e+00 0.0000000000000000e+00 0 0 0 +800 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.7889801564019652e+00 0.0000000000000000e+00 0 0 0 +801 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.7819090885900999e+00 0.0000000000000000e+00 0 0 0 +802 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.7960512242138307e+00 0.0000000000000000e+00 0 0 0 +803 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.8031222920256962e+00 0.0000000000000000e+00 0 0 0 +804 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.7960512242138307e+00 0.0000000000000000e+00 0 0 0 +805 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.8101933598375617e+00 0.0000000000000000e+00 0 0 0 +806 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.8172644276494272e+00 0.0000000000000000e+00 0 0 0 +807 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.8101933598375617e+00 0.0000000000000000e+00 0 0 0 +808 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.8243354954612927e+00 0.0000000000000000e+00 0 0 0 +809 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.8314065632731582e+00 0.0000000000000000e+00 0 0 0 +810 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.8243354954612927e+00 0.0000000000000000e+00 0 0 0 +13988 1 7.1371621756057129e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +13990 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +13992 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +13994 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +13996 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +13998 1 1.0063722103956430e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14000 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14086 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14087 1 9.7257311157309334e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14088 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14089 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14090 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14091 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14092 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14093 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14094 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14095 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14096 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14097 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14098 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14099 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14184 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14185 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14186 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14187 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14188 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14189 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14190 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14191 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14192 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14193 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14194 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14195 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14196 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14197 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14282 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14283 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14284 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14285 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14286 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14287 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14288 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14289 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14290 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14291 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14292 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14293 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14294 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14295 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14380 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14381 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14382 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14383 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14384 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14385 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14386 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14387 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14388 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14389 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14390 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14391 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14392 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14393 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14478 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14479 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14480 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14481 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14482 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14483 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14484 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14485 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14486 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14487 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14488 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14489 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14490 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14491 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14576 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14577 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14578 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14579 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14580 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14581 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14582 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14583 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14584 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14585 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14586 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14587 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14588 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14589 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14674 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14675 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14676 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14677 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14678 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14679 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14680 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14681 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14682 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14683 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14684 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14685 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14686 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14687 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14772 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14773 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14774 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14775 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14776 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14777 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14778 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14779 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14780 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14781 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14782 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14783 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14784 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14785 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14002 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14004 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14006 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14008 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14010 1 1.0063722103956430e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14012 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14014 1 1.0063722103956446e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14016 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14018 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14100 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14101 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14102 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14103 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14104 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14105 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14106 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14107 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14108 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14109 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14110 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14111 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14112 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14113 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14114 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14115 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14116 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14198 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14199 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14200 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14201 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14202 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14203 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14204 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14205 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14206 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14207 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14208 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14209 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14210 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14211 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14212 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14213 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14214 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14296 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14297 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14298 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14299 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14300 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14301 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14302 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14303 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14304 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14305 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14306 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14307 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14308 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14309 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14310 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14311 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14312 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14394 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14395 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14396 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14397 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14398 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14399 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14400 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14401 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14402 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14403 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14404 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14405 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14406 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14407 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14408 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14409 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14410 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14492 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14493 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14494 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14495 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14496 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14497 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14498 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14499 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14500 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14501 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14502 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14503 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14504 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14505 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14506 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14507 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14508 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14590 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14591 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14592 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14593 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14594 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14595 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14596 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14597 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14598 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14599 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14600 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14601 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14602 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14603 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14604 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14605 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14606 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14688 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14689 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14690 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14691 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14692 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14693 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14694 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14695 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14696 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14697 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14698 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14699 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14700 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14701 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14702 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14703 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14704 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14786 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14787 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14788 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14789 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14790 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14791 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14792 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14793 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14794 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14795 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14796 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14797 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14798 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14799 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14800 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14801 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14802 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14020 1 1.0063722103956447e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14022 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14024 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14026 1 1.0063722103956447e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14028 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14030 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14032 1 1.0063722103956447e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14034 1 1.0063722103956430e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14117 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14118 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14119 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14120 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14121 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14122 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14123 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14124 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14125 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14126 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14127 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14128 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14129 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14130 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14131 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14132 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14133 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14215 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14216 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14217 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14218 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14219 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14220 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14221 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14222 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14223 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14224 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14225 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14226 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14227 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14228 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14229 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14230 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14231 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14313 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14314 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14315 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14316 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14317 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14318 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14319 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14320 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14321 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14322 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14323 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14324 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14325 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14326 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14327 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14328 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14329 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14411 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14412 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14413 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14414 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14415 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14416 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14417 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14418 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14419 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14420 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14421 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14422 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14423 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14424 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14425 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14426 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14427 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14509 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14510 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14511 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14512 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14513 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14514 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14515 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14516 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14517 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14518 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14519 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14520 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14521 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14522 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14523 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14524 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14525 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14607 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14608 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14609 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14610 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14611 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14612 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14613 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14614 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14615 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14616 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14617 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14618 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14619 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14620 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14621 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14622 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14623 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14705 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14706 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14707 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14708 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14709 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14710 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14711 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14712 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14713 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14714 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14715 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14716 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14717 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14718 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14719 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14720 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14721 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14803 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14804 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14805 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14806 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14807 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14808 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14809 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14810 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14811 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14812 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14813 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14814 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14815 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14816 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14817 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14818 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14819 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14036 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14038 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14040 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14042 1 1.0063722103956469e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14044 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14046 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14048 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14050 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14134 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14135 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14136 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14137 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14138 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14139 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14140 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14141 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14142 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14143 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14144 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14145 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14146 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14147 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14148 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14149 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14232 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14233 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14234 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14235 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14236 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14237 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14238 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14239 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14240 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14241 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14242 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14243 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14244 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14245 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14246 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14247 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14330 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14331 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14332 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14333 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14334 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14335 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14336 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14337 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14338 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14339 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14340 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14341 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14342 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14343 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14344 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14345 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14428 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14429 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14430 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14431 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14432 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14433 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14434 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14435 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14436 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14437 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14438 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14439 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14440 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14441 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14442 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14443 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14526 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14527 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14528 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14529 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14530 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14531 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14532 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14533 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14534 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14535 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14536 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14537 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14538 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14539 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14540 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14541 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14624 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14625 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14626 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14627 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14628 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14629 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14630 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14631 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14632 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14633 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14634 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14635 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14636 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14637 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14638 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14639 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14722 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14723 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14724 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14725 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14726 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14727 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14728 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14729 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14730 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14731 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14732 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14733 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14734 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14735 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14736 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14737 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14820 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14821 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14822 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14823 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14824 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14825 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14826 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14827 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14828 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14829 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14830 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14831 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14832 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14833 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14834 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14835 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14052 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14054 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14056 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14058 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14060 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14062 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14064 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14066 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14068 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14150 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14151 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14152 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14153 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14154 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14155 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14156 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14157 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14158 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14159 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14160 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14161 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14162 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14163 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14164 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14165 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14166 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14248 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14249 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14250 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14251 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14252 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14253 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14254 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14255 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14256 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14257 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14258 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14259 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14260 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14261 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14262 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14263 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14264 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14346 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14347 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14348 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14349 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14350 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14351 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14352 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14353 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14354 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14355 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14356 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14357 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14358 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14359 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14360 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14361 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14362 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14444 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14445 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14446 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14447 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14448 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14449 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14450 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14451 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14452 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14453 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14454 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14455 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14456 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14457 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14458 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14459 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14460 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14542 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14543 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14544 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14545 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14546 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14547 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14548 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14549 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14550 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14551 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14552 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14553 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14554 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14555 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14556 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14557 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14558 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14640 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14641 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14642 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14643 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14644 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14645 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14646 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14647 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14648 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14649 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14650 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14651 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14652 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14653 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14654 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14655 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14656 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14738 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14739 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14740 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14741 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14742 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14743 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14744 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14745 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14746 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14747 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14748 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14749 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14750 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14751 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14752 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14753 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14754 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14836 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14837 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14838 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14839 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14840 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14841 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14842 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14843 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14844 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14845 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14846 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14847 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14848 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14849 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14850 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14851 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14852 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14070 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14072 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14074 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14076 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14078 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14080 1 1.0063722103956469e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14082 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14084 1 9.7257311157309937e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.6699999999999999e+00 0.0000000000000000e+00 0 0 0 +14167 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14168 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14169 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14170 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14171 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14172 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14173 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14174 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14175 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14176 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14177 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14178 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14179 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14180 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14181 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14182 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.6899999999999999e+00 0.0000000000000000e+00 0 0 0 +14183 1 7.1371621756056766e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.6799999999999999e+00 0.0000000000000000e+00 0 0 0 +14265 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14266 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14267 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14268 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14269 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14270 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14271 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14272 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14273 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14274 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14275 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14276 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14277 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14278 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14279 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14280 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.7100000000000000e+00 0.0000000000000000e+00 0 0 0 +14281 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000000e+00 0.0000000000000000e+00 0 0 0 +14363 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14364 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14365 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14366 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14367 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14368 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14369 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14370 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14371 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14372 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14373 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14374 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14375 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14376 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14377 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14378 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.7300000000000000e+00 0.0000000000000000e+00 0 0 0 +14379 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.7200000000000000e+00 0.0000000000000000e+00 0 0 0 +14461 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14462 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14463 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14464 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14465 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14466 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14467 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14468 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14469 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14470 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14471 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14472 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14473 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14474 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14475 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14476 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.7500000000000000e+00 0.0000000000000000e+00 0 0 0 +14477 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.7400000000000000e+00 0.0000000000000000e+00 0 0 0 +14559 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14560 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14561 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14562 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14563 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14564 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14565 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14566 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14567 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14568 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14569 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14570 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14571 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14572 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14573 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14574 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.7700000000000000e+00 0.0000000000000000e+00 0 0 0 +14575 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.7600000000000000e+00 0.0000000000000000e+00 0 0 0 +14657 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14658 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14659 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14660 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14661 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14662 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14663 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14664 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14665 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14666 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14667 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14668 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14669 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14670 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14671 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14672 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.7900000000000000e+00 0.0000000000000000e+00 0 0 0 +14673 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.7800000000000000e+00 0.0000000000000000e+00 0 0 0 +14755 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14756 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14757 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14758 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14759 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14760 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14761 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14762 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14763 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14764 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14765 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14766 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14767 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14768 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14769 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14770 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.8100000000000001e+00 0.0000000000000000e+00 0 0 0 +14771 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.8000000000000000e+00 0.0000000000000000e+00 0 0 0 +14853 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14854 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14855 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14856 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14857 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14858 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14859 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14860 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14861 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14862 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14863 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14864 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14865 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14866 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14867 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +14868 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.8300000000000001e+00 0.0000000000000000e+00 0 0 0 +14869 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.8200000000000001e+00 0.0000000000000000e+00 0 0 0 +811 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.8384776310850235e+00 0.0000000000000000e+00 0 0 0 +812 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.8455486988968890e+00 0.0000000000000000e+00 0 0 0 +813 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.8384776310850235e+00 0.0000000000000000e+00 0 0 0 +814 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.8526197667087545e+00 0.0000000000000000e+00 0 0 0 +815 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.8596908345206200e+00 0.0000000000000000e+00 0 0 0 +816 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.8526197667087545e+00 0.0000000000000000e+00 0 0 0 +817 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.8667619023324855e+00 0.0000000000000000e+00 0 0 0 +818 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.8738329701443510e+00 0.0000000000000000e+00 0 0 0 +819 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.8667619023324855e+00 0.0000000000000000e+00 0 0 0 +820 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.8809040379562165e+00 0.0000000000000000e+00 0 0 0 +821 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.8879751057680818e+00 0.0000000000000000e+00 0 0 0 +822 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.8809040379562165e+00 0.0000000000000000e+00 0 0 0 +823 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.8950461735799473e+00 0.0000000000000000e+00 0 0 0 +824 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.9021172413918128e+00 0.0000000000000000e+00 0 0 0 +825 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.8950461735799473e+00 0.0000000000000000e+00 0 0 0 +826 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.9091883092036783e+00 0.0000000000000000e+00 0 0 0 +827 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.9162593770155438e+00 0.0000000000000000e+00 0 0 0 +828 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.9091883092036783e+00 0.0000000000000000e+00 0 0 0 +829 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.9233304448274093e+00 0.0000000000000000e+00 0 0 0 +830 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.9304015126392748e+00 0.0000000000000000e+00 0 0 0 +831 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.9233304448274093e+00 0.0000000000000000e+00 0 0 0 +832 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.9374725804511403e+00 0.0000000000000000e+00 0 0 0 +833 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.9445436482630056e+00 0.0000000000000000e+00 0 0 0 +834 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.9374725804511403e+00 0.0000000000000000e+00 0 0 0 +835 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.9516147160748711e+00 0.0000000000000000e+00 0 0 0 +836 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.9586857838867366e+00 0.0000000000000000e+00 0 0 0 +837 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.9516147160748711e+00 0.0000000000000000e+00 0 0 0 +838 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.9657568516986021e+00 0.0000000000000000e+00 0 0 0 +839 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.9728279195104677e+00 0.0000000000000000e+00 0 0 0 +840 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.9657568516986021e+00 0.0000000000000000e+00 0 0 0 +841 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.9798989873223332e+00 0.0000000000000000e+00 0 0 0 +842 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 1.9869700551341987e+00 0.0000000000000000e+00 0 0 0 +843 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.9798989873223332e+00 0.0000000000000000e+00 0 0 0 +844 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1.9940411229460639e+00 0.0000000000000000e+00 0 0 0 +846 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 1.9940411229460639e+00 0.0000000000000000e+00 0 0 0 +14870 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14871 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14872 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14873 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14874 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14875 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14876 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14877 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14878 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14879 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14880 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14881 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14882 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14883 1 1.0063722103956341e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14968 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14969 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14970 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14971 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14972 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14973 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14974 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14975 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14976 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14977 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14978 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14979 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14980 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14981 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15066 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15067 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15068 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15069 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15070 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15071 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15072 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15073 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15074 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15075 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15076 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15077 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15078 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15079 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15164 1 7.1371621756057129e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15165 1 9.7257311157309334e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15166 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15167 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15168 1 1.0063722103956436e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15169 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15170 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15171 1 1.0063722103956368e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15172 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15173 1 1.0063722103956366e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15174 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15175 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15176 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15177 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15262 1 7.1371621756056788e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15263 1 9.7257311157309994e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15264 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15265 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15266 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15267 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15268 1 1.0063722103956369e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15269 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15270 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15271 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15272 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15273 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15274 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15275 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15360 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15361 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15362 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15363 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15364 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15365 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15366 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15367 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15368 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15369 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15370 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15371 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15372 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15373 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15458 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15459 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15460 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15461 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15462 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15463 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15464 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15465 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15466 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15467 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15468 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15469 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15470 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15471 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15556 1 6.7997102479675050e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-02 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15557 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15558 1 9.7257311157309130e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000003e-02 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15559 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15560 1 9.7257311157309130e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-02 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15561 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15562 1 9.7257311157309130e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.9999999999999997e-02 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15563 1 1.0063722103956344e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15564 1 9.7257311157309152e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.1000000000000000e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15565 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15566 1 9.7257311157309084e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.3000000000000000e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15567 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15568 1 9.7257311157309141e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.4999999999999999e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15569 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15654 1 6.7997102479675050e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000001e-02 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15655 1 7.1371621756056572e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-02 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15656 1 7.1371621756056595e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000002e-02 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15657 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000001e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15658 1 7.1371621756056561e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.2000000000000000e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15659 1 7.1371621756056595e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.4000000000000001e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15660 1 7.1371621756056572e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.6000000000000000e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +14884 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14885 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14886 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14887 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14888 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14889 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14890 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14891 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14892 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14893 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14894 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14895 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14896 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14897 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14898 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14899 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14900 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14982 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14983 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14984 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14985 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14986 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14987 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14988 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14989 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14990 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14991 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14992 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14993 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14994 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14995 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14996 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +14997 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +14998 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15080 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15081 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15082 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15083 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15084 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15085 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15086 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15087 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15088 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15089 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15090 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15091 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15092 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15093 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15094 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15095 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15096 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15178 1 1.0063722103956438e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15179 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15180 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15181 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15182 1 1.0063722103956439e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15183 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15184 1 1.0063722103956438e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15185 1 1.0063722103956370e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15186 1 1.0063722103956430e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15187 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15188 1 1.0063722103956436e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15189 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15190 1 1.0063722103956451e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15191 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15192 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15193 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15194 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15276 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15277 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15278 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15279 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15280 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15281 1 1.0063722103956430e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15282 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15283 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15284 1 1.0063722103956362e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15285 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15286 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15287 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15288 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15289 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15290 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15291 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15292 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15374 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15375 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15376 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15377 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15378 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15379 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15380 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15381 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15382 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15383 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15384 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15385 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15386 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15387 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15388 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15389 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15390 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15472 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15473 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15474 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15475 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15476 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15477 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15478 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15479 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15480 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15481 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15482 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15483 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15484 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15485 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15486 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15487 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15488 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15570 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.7000000000000001e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15571 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15572 1 9.7257311157309096e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000000e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15573 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15574 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.0999999999999999e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15575 1 1.0063722103956339e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15576 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.3000000000000001e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15577 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15578 1 9.7257311157309073e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.5000000000000000e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15579 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15580 1 9.7257311157309107e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.7000000000000002e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15581 1 1.0063722103956355e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15582 1 9.7257311157309266e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.8999999999999998e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15583 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15584 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.1000000000000000e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15585 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15586 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.3000000000000002e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15661 1 7.1371621756056607e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.7999999999999999e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15662 1 7.1371621756056595e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000001e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15663 1 7.1371621756056572e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.2000000000000000e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15664 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.3999999999999999e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15665 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.6000000000000001e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15666 1 7.1371621756056652e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.8000000000000003e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15667 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 2.9999999999999999e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15668 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.2000000000000001e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +14901 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14902 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14903 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14904 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14905 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14906 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14907 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14908 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14909 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14910 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14911 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14912 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14913 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14914 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14915 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14916 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14917 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14999 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15000 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15001 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15002 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15003 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15004 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15005 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15006 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15007 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15008 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15009 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15010 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15011 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15012 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15013 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15014 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15015 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15097 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15098 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15099 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15100 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15101 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15102 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15103 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15104 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15105 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15106 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15107 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15108 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15109 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15110 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15111 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15112 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15113 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15195 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15196 1 1.0063722103956450e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15197 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15198 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15199 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15200 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15201 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15202 1 1.0063722103956450e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15203 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15204 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15205 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15206 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15207 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15208 1 1.0063722103956450e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15209 1 1.0063722103956383e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15210 1 1.0063722103956435e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15211 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15293 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15294 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15295 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15296 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15297 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15298 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15299 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15300 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15301 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15302 1 1.0063722103956367e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15303 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15304 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15305 1 1.0063722103956433e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15306 1 1.0063722103956381e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15307 1 1.0063722103956449e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15308 1 1.0063722103956364e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15309 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15391 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15392 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15393 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15394 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15395 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15396 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15397 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15398 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15399 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15400 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15401 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15402 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15403 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15404 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15405 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15406 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15407 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15489 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15490 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15491 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15492 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15493 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15494 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15495 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15496 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15497 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15498 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15499 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15500 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15501 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15502 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15503 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15504 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15505 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15587 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15588 1 9.7257311157309266e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.5000000000000003e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15589 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15590 1 9.7257311157309096e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.7000000000000000e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15591 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15592 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.9000000000000001e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15593 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15594 1 9.7257311157309266e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.1000000000000003e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15595 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15596 1 9.7257311157309096e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.2999999999999999e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15597 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15598 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.5000000000000001e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15599 1 1.0063722103956342e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15600 1 9.7257311157309266e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.7000000000000003e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15601 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15602 1 9.7257311157309096e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.8999999999999999e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15603 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15669 1 7.1371621756056572e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.4000000000000002e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15670 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.5999999999999999e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15671 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 3.8000000000000000e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15672 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.0000000000000002e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15673 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.1999999999999998e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15674 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.4000000000000000e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15675 1 7.1371621756056584e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.6000000000000002e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15676 1 7.1371621756056675e+02 0.0000000000000000e+00 1.0000000000000000e+00 4.7999999999999998e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15677 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +14918 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14919 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14920 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14921 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14922 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14923 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14924 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14925 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14926 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14927 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14928 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14929 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14930 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14931 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14932 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14933 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +15016 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15017 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15018 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15019 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15020 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15021 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15022 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15023 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15024 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15025 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15026 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15027 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15028 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15029 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15030 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15031 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15114 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15115 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15116 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15117 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15118 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15119 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15120 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15121 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15122 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15123 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15124 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15125 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15126 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15127 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15128 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15129 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15212 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15213 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15214 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15215 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15216 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15217 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15218 1 1.0063722103956475e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15219 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15220 1 1.0063722103956442e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15221 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15222 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15223 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15224 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15225 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15226 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15227 1 1.0063722103956358e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15310 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15311 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15312 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15313 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15314 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15315 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15316 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15317 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15318 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15319 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15320 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15321 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15322 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15323 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15324 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15325 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15408 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15409 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15410 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15411 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15412 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15413 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15414 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15415 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15416 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15417 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15418 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15419 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15420 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15421 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15422 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15423 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15506 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15507 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15508 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15509 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15510 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15511 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15512 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15513 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15514 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15515 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15516 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15517 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15518 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15519 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15520 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15521 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15604 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.1000000000000001e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15605 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15606 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.3000000000000003e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15607 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15608 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.5000000000000004e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15609 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15610 1 9.7257311157309505e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.7000000000000006e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15611 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15612 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.8999999999999997e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15613 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15614 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.0999999999999999e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15615 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15616 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.3000000000000000e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15617 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15618 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.5000000000000002e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15619 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15678 1 7.1371621756056538e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.2000000000000002e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15679 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.4000000000000004e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15680 1 7.1371621756056641e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.6000000000000005e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15681 1 7.1371621756056811e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.7999999999999996e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15682 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 5.9999999999999998e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15683 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.2000000000000000e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15684 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.4000000000000001e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15685 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.6000000000000003e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +14934 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14935 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14936 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14937 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14938 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14939 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14940 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14941 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14942 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14943 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14944 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14945 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14946 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14947 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14948 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14949 1 1.0063722103956347e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14950 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +15032 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15033 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15034 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15035 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15036 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15037 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15038 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15039 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15040 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15041 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15042 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15043 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15044 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15045 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15046 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15047 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15048 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15130 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15131 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15132 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15133 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15134 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15135 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15136 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15137 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15138 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15139 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15140 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15141 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15142 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15143 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15144 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15145 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15146 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15228 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15229 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15230 1 1.0063722103956441e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15231 1 1.0063722103956404e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15232 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15233 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15234 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15235 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15236 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15237 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15238 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15239 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15240 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15241 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15242 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15243 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15244 1 1.0063722103956474e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15326 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15327 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15328 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15329 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15330 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15331 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15332 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15333 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15334 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15335 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15336 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15337 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15338 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15339 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15340 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15341 1 1.0063722103956438e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15342 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15424 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15425 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15426 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15427 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15428 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15429 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15430 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15431 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15432 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15433 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15434 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15435 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15436 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15437 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15438 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15439 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15440 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15522 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15523 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15524 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15525 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15526 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15527 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15528 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15529 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15530 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15531 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15532 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15533 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15534 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15535 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15536 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15537 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15538 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15620 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.7000000000000004e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15621 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15622 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.9000000000000006e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15623 1 1.0063722103956378e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15624 1 9.7257311157309482e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.0999999999999996e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15625 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15626 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.2999999999999998e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15627 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15628 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.5000000000000000e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15629 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15630 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.7000000000000002e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15631 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15632 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.9000000000000004e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15633 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15634 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.1000000000000005e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15635 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15636 1 9.7257311157309482e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.3000000000000007e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15686 1 7.1371621756056538e+02 0.0000000000000000e+00 1.0000000000000000e+00 6.8000000000000005e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15687 1 7.1371621756056800e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.0000000000000007e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15688 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.1999999999999997e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15689 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.3999999999999999e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15690 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.6000000000000001e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15691 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 7.8000000000000003e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15692 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.0000000000000004e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15693 1 7.1371621756056629e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.2000000000000006e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +14951 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14952 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14953 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14954 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14955 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14956 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14957 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14958 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14959 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14960 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14961 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14962 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14963 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14964 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14965 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +14966 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.8500000000000001e+00 0.0000000000000000e+00 0 0 0 +14967 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.8400000000000001e+00 0.0000000000000000e+00 0 0 0 +15049 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15050 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15051 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15052 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15053 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15054 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15055 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15056 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15057 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15058 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15059 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15060 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15061 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15062 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15063 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15064 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.8700000000000001e+00 0.0000000000000000e+00 0 0 0 +15065 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.8600000000000001e+00 0.0000000000000000e+00 0 0 0 +15147 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15148 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15149 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15150 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15151 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15152 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15153 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15154 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15155 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15156 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15157 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15158 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15159 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15160 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15161 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15162 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.8900000000000001e+00 0.0000000000000000e+00 0 0 0 +15163 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.8800000000000001e+00 0.0000000000000000e+00 0 0 0 +15245 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15246 1 1.0063722103956442e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15247 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15248 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15249 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15250 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15251 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15252 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15253 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15254 1 1.0063722103956428e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15255 1 1.0063722103956372e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15256 1 1.0063722103956475e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15257 1 1.0063722103956405e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15258 1 1.0063722103956442e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15259 1 1.0063722103956359e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15260 1 9.7257311157309960e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.9100000000000001e+00 0.0000000000000000e+00 0 0 0 +15261 1 7.1371621756056754e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.9000000000000001e+00 0.0000000000000000e+00 0 0 0 +15343 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15344 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15345 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15346 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15347 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15348 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15349 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15350 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15351 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15352 1 1.0063722103956360e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15353 1 1.0063722103956437e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15354 1 1.0063722103956403e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15355 1 1.0063722103956471e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15356 1 1.0063722103956371e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15357 1 1.0063722103956426e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15358 1 9.7257311157309277e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.9299999999999999e+00 0.0000000000000000e+00 0 0 0 +15359 1 7.1371621756057107e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.9199999999999999e+00 0.0000000000000000e+00 0 0 0 +15441 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15442 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15443 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15444 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15445 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15446 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15447 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15448 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15449 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15450 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15451 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15452 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15453 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15454 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15455 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15456 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.9500000000000000e+00 0.0000000000000000e+00 0 0 0 +15457 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.9399999999999999e+00 0.0000000000000000e+00 0 0 0 +15539 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15540 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15541 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15542 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15543 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15544 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15545 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15546 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15547 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15548 1 1.0063722103956337e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15549 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15550 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15551 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15552 1 1.0063722103956349e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15553 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15554 1 9.7257311157309027e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.9700000000000000e+00 0.0000000000000000e+00 0 0 0 +15555 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.9600000000000000e+00 0.0000000000000000e+00 0 0 0 +15637 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15638 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.4999999999999998e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15639 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15640 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.7000000000000000e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15641 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15642 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.9000000000000001e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15643 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15644 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.1000000000000003e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15645 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15646 1 9.7257311157309050e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.3000000000000005e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15647 1 1.0063722103956346e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15648 1 9.7257311157309505e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.5000000000000007e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15649 1 1.0063722103956380e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15650 1 9.7257311157309164e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.6999999999999997e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15651 1 1.0063722103956335e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15652 1 9.3882791880927527e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.8999999999999999e-01 1.9900000000000000e+00 0.0000000000000000e+00 0 0 0 +15653 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 1.9800000000000000e+00 0.0000000000000000e+00 0 0 0 +15694 1 7.1371621756056811e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.3999999999999997e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15695 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.5999999999999999e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15696 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 8.8000000000000000e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15697 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.0000000000000002e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15698 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.2000000000000004e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15699 1 7.1371621756056641e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.4000000000000006e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15700 1 7.1371621756056811e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.5999999999999996e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15701 1 7.1371621756056516e+02 0.0000000000000000e+00 1.0000000000000000e+00 9.7999999999999998e-01 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +15702 1 5.5054257779048748e+02 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 2.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +845 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.0011121907579295e+00 0.0000000000000000e+00 0 0 0 +847 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.0081832585697952e+00 0.0000000000000000e+00 0 0 0 +848 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.0152543263816605e+00 0.0000000000000000e+00 0 0 0 +849 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.0081832585697952e+00 0.0000000000000000e+00 0 0 0 +850 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.0223253941935257e+00 0.0000000000000000e+00 0 0 0 +851 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.0293964620053915e+00 0.0000000000000000e+00 0 0 0 +852 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.0223253941935257e+00 0.0000000000000000e+00 0 0 0 +853 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.0364675298172568e+00 0.0000000000000000e+00 0 0 0 +854 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.0435385976291225e+00 0.0000000000000000e+00 0 0 0 +855 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.0364675298172568e+00 0.0000000000000000e+00 0 0 0 +856 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.0506096654409878e+00 0.0000000000000000e+00 0 0 0 +857 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.0576807332528535e+00 0.0000000000000000e+00 0 0 0 +858 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.0506096654409878e+00 0.0000000000000000e+00 0 0 0 +859 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.0647518010647188e+00 0.0000000000000000e+00 0 0 0 +860 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.0718228688765841e+00 0.0000000000000000e+00 0 0 0 +861 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.0647518010647188e+00 0.0000000000000000e+00 0 0 0 +862 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.0788939366884498e+00 0.0000000000000000e+00 0 0 0 +863 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.0859650045003151e+00 0.0000000000000000e+00 0 0 0 +864 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.0788939366884498e+00 0.0000000000000000e+00 0 0 0 +865 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.0930360723121808e+00 0.0000000000000000e+00 0 0 0 +866 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.1001071401240461e+00 0.0000000000000000e+00 0 0 0 +867 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.0930360723121808e+00 0.0000000000000000e+00 0 0 0 +868 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.1071782079359118e+00 0.0000000000000000e+00 0 0 0 +869 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.1142492757477771e+00 0.0000000000000000e+00 0 0 0 +870 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.1071782079359118e+00 0.0000000000000000e+00 0 0 0 +871 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.1213203435596424e+00 0.0000000000000000e+00 0 0 0 +872 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.1283914113715081e+00 0.0000000000000000e+00 0 0 0 +873 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.1213203435596424e+00 0.0000000000000000e+00 0 0 0 +874 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.1354624791833734e+00 0.0000000000000000e+00 0 0 0 +875 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.1425335469952391e+00 0.0000000000000000e+00 0 0 0 +876 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.1354624791833734e+00 0.0000000000000000e+00 0 0 0 +877 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.1496046148071044e+00 0.0000000000000000e+00 0 0 0 +878 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.1566756826189701e+00 0.0000000000000000e+00 0 0 0 +879 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.1496046148071044e+00 0.0000000000000000e+00 0 0 0 +880 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.1637467504308354e+00 0.0000000000000000e+00 0 0 0 +882 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.1637467504308354e+00 0.0000000000000000e+00 0 0 0 +881 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.1708178182427011e+00 0.0000000000000000e+00 0 0 0 +883 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.1778888860545664e+00 0.0000000000000000e+00 0 0 0 +884 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.1849599538664317e+00 0.0000000000000000e+00 0 0 0 +885 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.1778888860545664e+00 0.0000000000000000e+00 0 0 0 +886 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.1920310216782974e+00 0.0000000000000000e+00 0 0 0 +887 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.1991020894901627e+00 0.0000000000000000e+00 0 0 0 +888 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.1920310216782974e+00 0.0000000000000000e+00 0 0 0 +889 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.2061731573020285e+00 0.0000000000000000e+00 0 0 0 +890 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.2132442251138937e+00 0.0000000000000000e+00 0 0 0 +891 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.2061731573020285e+00 0.0000000000000000e+00 0 0 0 +892 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.2203152929257595e+00 0.0000000000000000e+00 0 0 0 +893 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.2273863607376247e+00 0.0000000000000000e+00 0 0 0 +894 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.2203152929257595e+00 0.0000000000000000e+00 0 0 0 +895 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.2344574285494900e+00 0.0000000000000000e+00 0 0 0 +896 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.2415284963613558e+00 0.0000000000000000e+00 0 0 0 +897 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.2344574285494900e+00 0.0000000000000000e+00 0 0 0 +898 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.2485995641732210e+00 0.0000000000000000e+00 0 0 0 +899 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.2556706319850868e+00 0.0000000000000000e+00 0 0 0 +900 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.2485995641732210e+00 0.0000000000000000e+00 0 0 0 +901 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.2627416997969521e+00 0.0000000000000000e+00 0 0 0 +902 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.2698127676088178e+00 0.0000000000000000e+00 0 0 0 +903 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.2627416997969521e+00 0.0000000000000000e+00 0 0 0 +904 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.2768838354206831e+00 0.0000000000000000e+00 0 0 0 +905 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.2839549032325484e+00 0.0000000000000000e+00 0 0 0 +906 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.2768838354206831e+00 0.0000000000000000e+00 0 0 0 +907 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.2910259710444141e+00 0.0000000000000000e+00 0 0 0 +908 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.2980970388562794e+00 0.0000000000000000e+00 0 0 0 +909 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.2910259710444141e+00 0.0000000000000000e+00 0 0 0 +910 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.3051681066681451e+00 0.0000000000000000e+00 0 0 0 +911 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.3122391744800104e+00 0.0000000000000000e+00 0 0 0 +912 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.3051681066681451e+00 0.0000000000000000e+00 0 0 0 +913 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.3193102422918761e+00 0.0000000000000000e+00 0 0 0 +914 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.3263813101037414e+00 0.0000000000000000e+00 0 0 0 +915 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.3193102422918761e+00 0.0000000000000000e+00 0 0 0 +916 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.3334523779156067e+00 0.0000000000000000e+00 0 0 0 +918 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.3334523779156067e+00 0.0000000000000000e+00 0 0 0 +917 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.3405234457274724e+00 0.0000000000000000e+00 0 0 0 +919 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.3475945135393377e+00 0.0000000000000000e+00 0 0 0 +920 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.3546655813512034e+00 0.0000000000000000e+00 0 0 0 +921 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.3475945135393377e+00 0.0000000000000000e+00 0 0 0 +922 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.3617366491630687e+00 0.0000000000000000e+00 0 0 0 +923 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.3688077169749344e+00 0.0000000000000000e+00 0 0 0 +924 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.3617366491630687e+00 0.0000000000000000e+00 0 0 0 +925 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.3758787847867997e+00 0.0000000000000000e+00 0 0 0 +926 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.3829498525986650e+00 0.0000000000000000e+00 0 0 0 +927 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.3758787847867997e+00 0.0000000000000000e+00 0 0 0 +928 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.3900209204105307e+00 0.0000000000000000e+00 0 0 0 +929 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.3970919882223960e+00 0.0000000000000000e+00 0 0 0 +930 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.3900209204105307e+00 0.0000000000000000e+00 0 0 0 +931 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.4041630560342617e+00 0.0000000000000000e+00 0 0 0 +932 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.4112341238461270e+00 0.0000000000000000e+00 0 0 0 +933 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.4041630560342617e+00 0.0000000000000000e+00 0 0 0 +934 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.4183051916579927e+00 0.0000000000000000e+00 0 0 0 +935 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.4253762594698580e+00 0.0000000000000000e+00 0 0 0 +936 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.4183051916579927e+00 0.0000000000000000e+00 0 0 0 +937 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.4324473272817233e+00 0.0000000000000000e+00 0 0 0 +938 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.4395183950935890e+00 0.0000000000000000e+00 0 0 0 +939 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.4324473272817233e+00 0.0000000000000000e+00 0 0 0 +940 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.4465894629054543e+00 0.0000000000000000e+00 0 0 0 +941 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.4536605307173200e+00 0.0000000000000000e+00 0 0 0 +942 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.4465894629054543e+00 0.0000000000000000e+00 0 0 0 +943 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.4607315985291853e+00 0.0000000000000000e+00 0 0 0 +944 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.4678026663410511e+00 0.0000000000000000e+00 0 0 0 +945 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.4607315985291853e+00 0.0000000000000000e+00 0 0 0 +946 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.4748737341529163e+00 0.0000000000000000e+00 0 0 0 +947 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.4819448019647821e+00 0.0000000000000000e+00 0 0 0 +948 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.4748737341529163e+00 0.0000000000000000e+00 0 0 0 +949 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.4890158697766473e+00 0.0000000000000000e+00 0 0 0 +950 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.4960869375885126e+00 0.0000000000000000e+00 0 0 0 +951 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.4890158697766473e+00 0.0000000000000000e+00 0 0 0 +952 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.5031580054003784e+00 0.0000000000000000e+00 0 0 0 +953 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.5102290732122436e+00 0.0000000000000000e+00 0 0 0 +954 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.5031580054003784e+00 0.0000000000000000e+00 0 0 0 +955 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.5173001410241094e+00 0.0000000000000000e+00 0 0 0 +956 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.5243712088359747e+00 0.0000000000000000e+00 0 0 0 +957 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.5173001410241094e+00 0.0000000000000000e+00 0 0 0 +958 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.5314422766478404e+00 0.0000000000000000e+00 0 0 0 +959 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.5385133444597057e+00 0.0000000000000000e+00 0 0 0 +960 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.5314422766478404e+00 0.0000000000000000e+00 0 0 0 +961 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.5455844122715710e+00 0.0000000000000000e+00 0 0 0 +962 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.5526554800834367e+00 0.0000000000000000e+00 0 0 0 +963 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.5455844122715710e+00 0.0000000000000000e+00 0 0 0 +964 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.5597265478953020e+00 0.0000000000000000e+00 0 0 0 +965 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.5667976157071677e+00 0.0000000000000000e+00 0 0 0 +966 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.5597265478953020e+00 0.0000000000000000e+00 0 0 0 +967 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.5738686835190330e+00 0.0000000000000000e+00 0 0 0 +968 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.5809397513308987e+00 0.0000000000000000e+00 0 0 0 +969 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.5738686835190330e+00 0.0000000000000000e+00 0 0 0 +970 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.5880108191427640e+00 0.0000000000000000e+00 0 0 0 +971 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.5950818869546293e+00 0.0000000000000000e+00 0 0 0 +972 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.5880108191427640e+00 0.0000000000000000e+00 0 0 0 +973 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.6021529547664950e+00 0.0000000000000000e+00 0 0 0 +974 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.6092240225783603e+00 0.0000000000000000e+00 0 0 0 +975 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.6021529547664950e+00 0.0000000000000000e+00 0 0 0 +976 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.6162950903902260e+00 0.0000000000000000e+00 0 0 0 +977 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.6233661582020913e+00 0.0000000000000000e+00 0 0 0 +978 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.6162950903902260e+00 0.0000000000000000e+00 0 0 0 +979 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.6304372260139570e+00 0.0000000000000000e+00 0 0 0 +980 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.6375082938258223e+00 0.0000000000000000e+00 0 0 0 +981 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.6304372260139570e+00 0.0000000000000000e+00 0 0 0 +982 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.6445793616376876e+00 0.0000000000000000e+00 0 0 0 +983 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.6516504294495533e+00 0.0000000000000000e+00 0 0 0 +984 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.6445793616376876e+00 0.0000000000000000e+00 0 0 0 +985 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.6587214972614186e+00 0.0000000000000000e+00 0 0 0 +986 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.6657925650732843e+00 0.0000000000000000e+00 0 0 0 +987 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.6587214972614186e+00 0.0000000000000000e+00 0 0 0 +988 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.6728636328851496e+00 0.0000000000000000e+00 0 0 0 +989 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.6799347006970153e+00 0.0000000000000000e+00 0 0 0 +990 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.6728636328851496e+00 0.0000000000000000e+00 0 0 0 +991 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.6870057685088806e+00 0.0000000000000000e+00 0 0 0 +992 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.6940768363207459e+00 0.0000000000000000e+00 0 0 0 +993 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.6870057685088806e+00 0.0000000000000000e+00 0 0 0 +994 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.7011479041326116e+00 0.0000000000000000e+00 0 0 0 +995 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.7082189719444769e+00 0.0000000000000000e+00 0 0 0 +996 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.7011479041326116e+00 0.0000000000000000e+00 0 0 0 +997 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.7152900397563426e+00 0.0000000000000000e+00 0 0 0 +998 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.7223611075682079e+00 0.0000000000000000e+00 0 0 0 +999 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.7152900397563426e+00 0.0000000000000000e+00 0 0 0 +1000 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.7294321753800737e+00 0.0000000000000000e+00 0 0 0 +1001 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.7365032431919389e+00 0.0000000000000000e+00 0 0 0 +1002 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.7294321753800737e+00 0.0000000000000000e+00 0 0 0 +1003 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.7435743110038042e+00 0.0000000000000000e+00 0 0 0 +1004 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.7506453788156700e+00 0.0000000000000000e+00 0 0 0 +1005 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.7435743110038042e+00 0.0000000000000000e+00 0 0 0 +1006 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.7577164466275352e+00 0.0000000000000000e+00 0 0 0 +1007 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.7647875144394010e+00 0.0000000000000000e+00 0 0 0 +1008 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.7577164466275352e+00 0.0000000000000000e+00 0 0 0 +1009 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.7718585822512662e+00 0.0000000000000000e+00 0 0 0 +1010 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.7789296500631320e+00 0.0000000000000000e+00 0 0 0 +1011 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.7718585822512662e+00 0.0000000000000000e+00 0 0 0 +1012 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.7860007178749973e+00 0.0000000000000000e+00 0 0 0 +1013 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.7930717856868625e+00 0.0000000000000000e+00 0 0 0 +1014 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.7860007178749973e+00 0.0000000000000000e+00 0 0 0 +1015 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.8001428534987283e+00 0.0000000000000000e+00 0 0 0 +1016 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.8072139213105936e+00 0.0000000000000000e+00 0 0 0 +1017 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.8001428534987283e+00 0.0000000000000000e+00 0 0 0 +1018 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.8142849891224593e+00 0.0000000000000000e+00 0 0 0 +1019 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.8213560569343246e+00 0.0000000000000000e+00 0 0 0 +1020 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.8142849891224593e+00 0.0000000000000000e+00 0 0 0 +1021 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.8284271247461903e+00 0.0000000000000000e+00 0 0 0 +1023 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.8284271247461903e+00 0.0000000000000000e+00 0 0 0 +1022 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.8354981925580556e+00 0.0000000000000000e+00 0 0 0 +1024 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.8425692603699213e+00 0.0000000000000000e+00 0 0 0 +1025 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.8496403281817866e+00 0.0000000000000000e+00 0 0 0 +1026 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.8425692603699213e+00 0.0000000000000000e+00 0 0 0 +1027 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.8567113959936519e+00 0.0000000000000000e+00 0 0 0 +1028 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.8637824638055176e+00 0.0000000000000000e+00 0 0 0 +1029 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.8567113959936519e+00 0.0000000000000000e+00 0 0 0 +1030 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.8708535316173829e+00 0.0000000000000000e+00 0 0 0 +1031 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.8779245994292486e+00 0.0000000000000000e+00 0 0 0 +1032 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.8708535316173829e+00 0.0000000000000000e+00 0 0 0 +1033 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.8849956672411139e+00 0.0000000000000000e+00 0 0 0 +1034 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.8920667350529796e+00 0.0000000000000000e+00 0 0 0 +1035 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.8849956672411139e+00 0.0000000000000000e+00 0 0 0 +1036 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.8991378028648449e+00 0.0000000000000000e+00 0 0 0 +1037 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.9062088706767102e+00 0.0000000000000000e+00 0 0 0 +1038 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.8991378028648449e+00 0.0000000000000000e+00 0 0 0 +1039 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.9132799384885759e+00 0.0000000000000000e+00 0 0 0 +1040 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.9203510063004412e+00 0.0000000000000000e+00 0 0 0 +1041 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.9132799384885759e+00 0.0000000000000000e+00 0 0 0 +1042 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.9274220741123069e+00 0.0000000000000000e+00 0 0 0 +1043 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.9344931419241722e+00 0.0000000000000000e+00 0 0 0 +1044 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.9274220741123069e+00 0.0000000000000000e+00 0 0 0 +1045 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.9415642097360379e+00 0.0000000000000000e+00 0 0 0 +1046 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.9486352775479032e+00 0.0000000000000000e+00 0 0 0 +1047 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.9415642097360379e+00 0.0000000000000000e+00 0 0 0 +1048 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.9557063453597685e+00 0.0000000000000000e+00 0 0 0 +1049 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.9627774131716342e+00 0.0000000000000000e+00 0 0 0 +1050 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.9557063453597685e+00 0.0000000000000000e+00 0 0 0 +1051 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.9698484809834995e+00 0.0000000000000000e+00 0 0 0 +1052 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.9769195487953652e+00 0.0000000000000000e+00 0 0 0 +1053 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.9698484809834995e+00 0.0000000000000000e+00 0 0 0 +1054 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.9839906166072305e+00 0.0000000000000000e+00 0 0 0 +1055 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 2.9910616844190963e+00 0.0000000000000000e+00 0 0 0 +1056 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.9839906166072305e+00 0.0000000000000000e+00 0 0 0 +1057 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 2.9981327522309615e+00 0.0000000000000000e+00 0 0 0 +1059 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 2.9981327522309615e+00 0.0000000000000000e+00 0 0 0 +1058 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.0052038200428268e+00 0.0000000000000000e+00 0 0 0 +1060 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.0122748878546926e+00 0.0000000000000000e+00 0 0 0 +1061 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.0193459556665578e+00 0.0000000000000000e+00 0 0 0 +1062 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.0122748878546926e+00 0.0000000000000000e+00 0 0 0 +1063 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.0264170234784236e+00 0.0000000000000000e+00 0 0 0 +1064 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.0334880912902888e+00 0.0000000000000000e+00 0 0 0 +1065 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.0264170234784236e+00 0.0000000000000000e+00 0 0 0 +1066 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.0405591591021546e+00 0.0000000000000000e+00 0 0 0 +1067 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.0476302269140199e+00 0.0000000000000000e+00 0 0 0 +1068 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.0405591591021546e+00 0.0000000000000000e+00 0 0 0 +1069 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.0547012947258851e+00 0.0000000000000000e+00 0 0 0 +1070 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.0617723625377509e+00 0.0000000000000000e+00 0 0 0 +1071 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.0547012947258851e+00 0.0000000000000000e+00 0 0 0 +1072 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.0688434303496162e+00 0.0000000000000000e+00 0 0 0 +1073 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.0759144981614819e+00 0.0000000000000000e+00 0 0 0 +1074 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.0688434303496162e+00 0.0000000000000000e+00 0 0 0 +1075 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.0829855659733472e+00 0.0000000000000000e+00 0 0 0 +1076 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.0900566337852129e+00 0.0000000000000000e+00 0 0 0 +1077 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.0829855659733472e+00 0.0000000000000000e+00 0 0 0 +1078 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.0971277015970782e+00 0.0000000000000000e+00 0 0 0 +1079 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.1041987694089435e+00 0.0000000000000000e+00 0 0 0 +1080 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.0971277015970782e+00 0.0000000000000000e+00 0 0 0 +1081 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.1112698372208092e+00 0.0000000000000000e+00 0 0 0 +1082 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.1183409050326745e+00 0.0000000000000000e+00 0 0 0 +1083 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.1112698372208092e+00 0.0000000000000000e+00 0 0 0 +1084 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.1254119728445402e+00 0.0000000000000000e+00 0 0 0 +1085 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.1324830406564055e+00 0.0000000000000000e+00 0 0 0 +1086 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.1254119728445402e+00 0.0000000000000000e+00 0 0 0 +1087 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.1395541084682712e+00 0.0000000000000000e+00 0 0 0 +1088 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.1466251762801365e+00 0.0000000000000000e+00 0 0 0 +1089 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.1395541084682712e+00 0.0000000000000000e+00 0 0 0 +1090 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.1536962440920022e+00 0.0000000000000000e+00 0 0 0 +1091 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.1607673119038675e+00 0.0000000000000000e+00 0 0 0 +1092 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.1536962440920022e+00 0.0000000000000000e+00 0 0 0 +1093 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.1678383797157328e+00 0.0000000000000000e+00 0 0 0 +1094 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.1749094475275985e+00 0.0000000000000000e+00 0 0 0 +1095 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.1678383797157328e+00 0.0000000000000000e+00 0 0 0 +1096 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.1819805153394638e+00 0.0000000000000000e+00 0 0 0 +1097 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.1890515831513295e+00 0.0000000000000000e+00 0 0 0 +1098 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.1819805153394638e+00 0.0000000000000000e+00 0 0 0 +1099 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.1961226509631948e+00 0.0000000000000000e+00 0 0 0 +1100 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.2031937187750605e+00 0.0000000000000000e+00 0 0 0 +1101 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.1961226509631948e+00 0.0000000000000000e+00 0 0 0 +1102 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.2102647865869258e+00 0.0000000000000000e+00 0 0 0 +1103 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.2173358543987911e+00 0.0000000000000000e+00 0 0 0 +1104 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.2102647865869258e+00 0.0000000000000000e+00 0 0 0 +1105 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.2244069222106568e+00 0.0000000000000000e+00 0 0 0 +1106 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.2314779900225221e+00 0.0000000000000000e+00 0 0 0 +1107 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.2244069222106568e+00 0.0000000000000000e+00 0 0 0 +1108 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.2385490578343878e+00 0.0000000000000000e+00 0 0 0 +1109 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.2456201256462531e+00 0.0000000000000000e+00 0 0 0 +1110 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.2385490578343878e+00 0.0000000000000000e+00 0 0 0 +1111 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.2526911934581189e+00 0.0000000000000000e+00 0 0 0 +1112 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.2597622612699841e+00 0.0000000000000000e+00 0 0 0 +1113 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.2526911934581189e+00 0.0000000000000000e+00 0 0 0 +1114 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.2668333290818494e+00 0.0000000000000000e+00 0 0 0 +1115 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.2739043968937152e+00 0.0000000000000000e+00 0 0 0 +1116 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.2668333290818494e+00 0.0000000000000000e+00 0 0 0 +1117 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.2809754647055804e+00 0.0000000000000000e+00 0 0 0 +1118 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.2880465325174462e+00 0.0000000000000000e+00 0 0 0 +1119 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.2809754647055804e+00 0.0000000000000000e+00 0 0 0 +1120 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.2951176003293114e+00 0.0000000000000000e+00 0 0 0 +1121 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.3021886681411772e+00 0.0000000000000000e+00 0 0 0 +1122 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.2951176003293114e+00 0.0000000000000000e+00 0 0 0 +1123 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.3092597359530425e+00 0.0000000000000000e+00 0 0 0 +1124 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.3163308037649077e+00 0.0000000000000000e+00 0 0 0 +1125 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.3092597359530425e+00 0.0000000000000000e+00 0 0 0 +1126 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.3234018715767735e+00 0.0000000000000000e+00 0 0 0 +1127 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.3304729393886388e+00 0.0000000000000000e+00 0 0 0 +1128 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.3234018715767735e+00 0.0000000000000000e+00 0 0 0 +1129 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.3375440072005045e+00 0.0000000000000000e+00 0 0 0 +1130 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.3446150750123698e+00 0.0000000000000000e+00 0 0 0 +1131 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.3375440072005045e+00 0.0000000000000000e+00 0 0 0 +1132 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.3516861428242355e+00 0.0000000000000000e+00 0 0 0 +1133 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.3587572106361008e+00 0.0000000000000000e+00 0 0 0 +1134 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.3516861428242355e+00 0.0000000000000000e+00 0 0 0 +1135 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.3658282784479661e+00 0.0000000000000000e+00 0 0 0 +1136 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.3728993462598318e+00 0.0000000000000000e+00 0 0 0 +1137 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.3658282784479661e+00 0.0000000000000000e+00 0 0 0 +1138 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.3799704140716971e+00 0.0000000000000000e+00 0 0 0 +1139 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.3870414818835628e+00 0.0000000000000000e+00 0 0 0 +1140 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.3799704140716971e+00 0.0000000000000000e+00 0 0 0 +1141 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.3941125496954281e+00 0.0000000000000000e+00 0 0 0 +1142 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.4011836175072938e+00 0.0000000000000000e+00 0 0 0 +1143 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.3941125496954281e+00 0.0000000000000000e+00 0 0 0 +1144 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.4082546853191591e+00 0.0000000000000000e+00 0 0 0 +1145 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.4153257531310244e+00 0.0000000000000000e+00 0 0 0 +1146 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.4082546853191591e+00 0.0000000000000000e+00 0 0 0 +1147 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.4223968209428901e+00 0.0000000000000000e+00 0 0 0 +1148 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.4294678887547554e+00 0.0000000000000000e+00 0 0 0 +1149 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.4223968209428901e+00 0.0000000000000000e+00 0 0 0 +1150 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.4365389565666211e+00 0.0000000000000000e+00 0 0 0 +1151 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.4436100243784864e+00 0.0000000000000000e+00 0 0 0 +1152 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.4365389565666211e+00 0.0000000000000000e+00 0 0 0 +1153 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.4506810921903521e+00 0.0000000000000000e+00 0 0 0 +1154 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.4577521600022174e+00 0.0000000000000000e+00 0 0 0 +1155 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.4506810921903521e+00 0.0000000000000000e+00 0 0 0 +1156 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.4648232278140831e+00 0.0000000000000000e+00 0 0 0 +1157 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.4718942956259484e+00 0.0000000000000000e+00 0 0 0 +1158 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.4648232278140831e+00 0.0000000000000000e+00 0 0 0 +1159 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.4789653634378137e+00 0.0000000000000000e+00 0 0 0 +1160 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.4860364312496794e+00 0.0000000000000000e+00 0 0 0 +1161 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.4789653634378137e+00 0.0000000000000000e+00 0 0 0 +1162 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.4931074990615447e+00 0.0000000000000000e+00 0 0 0 +1163 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.5001785668734104e+00 0.0000000000000000e+00 0 0 0 +1164 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.4931074990615447e+00 0.0000000000000000e+00 0 0 0 +1165 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.5072496346852757e+00 0.0000000000000000e+00 0 0 0 +1166 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.5143207024971415e+00 0.0000000000000000e+00 0 0 0 +1167 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.5072496346852757e+00 0.0000000000000000e+00 0 0 0 +1168 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.5213917703090067e+00 0.0000000000000000e+00 0 0 0 +1169 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.5284628381208720e+00 0.0000000000000000e+00 0 0 0 +1170 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.5213917703090067e+00 0.0000000000000000e+00 0 0 0 +1171 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.5355339059327378e+00 0.0000000000000000e+00 0 0 0 +1172 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.5426049737446030e+00 0.0000000000000000e+00 0 0 0 +1173 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.5355339059327378e+00 0.0000000000000000e+00 0 0 0 +1174 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.5496760415564688e+00 0.0000000000000000e+00 0 0 0 +1175 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.5567471093683340e+00 0.0000000000000000e+00 0 0 0 +1176 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.5496760415564688e+00 0.0000000000000000e+00 0 0 0 +1177 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.5638181771801998e+00 0.0000000000000000e+00 0 0 0 +1178 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.5708892449920651e+00 0.0000000000000000e+00 0 0 0 +1179 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.5638181771801998e+00 0.0000000000000000e+00 0 0 0 +1180 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.5779603128039303e+00 0.0000000000000000e+00 0 0 0 +1181 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.5850313806157961e+00 0.0000000000000000e+00 0 0 0 +1182 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.5779603128039303e+00 0.0000000000000000e+00 0 0 0 +1183 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.5921024484276614e+00 0.0000000000000000e+00 0 0 0 +1184 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.5991735162395271e+00 0.0000000000000000e+00 0 0 0 +1185 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.5921024484276614e+00 0.0000000000000000e+00 0 0 0 +1186 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.6062445840513924e+00 0.0000000000000000e+00 0 0 0 +1187 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.6133156518632581e+00 0.0000000000000000e+00 0 0 0 +1188 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.6062445840513924e+00 0.0000000000000000e+00 0 0 0 +1189 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.6203867196751234e+00 0.0000000000000000e+00 0 0 0 +1190 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.6274577874869887e+00 0.0000000000000000e+00 0 0 0 +1191 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.6203867196751234e+00 0.0000000000000000e+00 0 0 0 +1192 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.6345288552988544e+00 0.0000000000000000e+00 0 0 0 +1193 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.6415999231107197e+00 0.0000000000000000e+00 0 0 0 +1194 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.6345288552988544e+00 0.0000000000000000e+00 0 0 0 +1195 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.6486709909225854e+00 0.0000000000000000e+00 0 0 0 +1196 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.6557420587344507e+00 0.0000000000000000e+00 0 0 0 +1197 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.6486709909225854e+00 0.0000000000000000e+00 0 0 0 +1198 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.6628131265463164e+00 0.0000000000000000e+00 0 0 0 +1200 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.6628131265463164e+00 0.0000000000000000e+00 0 0 0 +1199 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.6698841943581817e+00 0.0000000000000000e+00 0 0 0 +1201 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.6769552621700470e+00 0.0000000000000000e+00 0 0 0 +1202 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.6840263299819127e+00 0.0000000000000000e+00 0 0 0 +1203 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.6769552621700470e+00 0.0000000000000000e+00 0 0 0 +1204 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.6910973977937780e+00 0.0000000000000000e+00 0 0 0 +1205 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.6981684656056437e+00 0.0000000000000000e+00 0 0 0 +1206 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.6910973977937780e+00 0.0000000000000000e+00 0 0 0 +1207 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.7052395334175090e+00 0.0000000000000000e+00 0 0 0 +1208 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.7123106012293747e+00 0.0000000000000000e+00 0 0 0 +1209 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.7052395334175090e+00 0.0000000000000000e+00 0 0 0 +1210 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.7193816690412400e+00 0.0000000000000000e+00 0 0 0 +1211 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.7264527368531053e+00 0.0000000000000000e+00 0 0 0 +1212 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.7193816690412400e+00 0.0000000000000000e+00 0 0 0 +1213 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.7335238046649710e+00 0.0000000000000000e+00 0 0 0 +1214 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.7405948724768363e+00 0.0000000000000000e+00 0 0 0 +1215 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.7335238046649710e+00 0.0000000000000000e+00 0 0 0 +1216 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.7476659402887020e+00 0.0000000000000000e+00 0 0 0 +1217 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.7547370081005673e+00 0.0000000000000000e+00 0 0 0 +1218 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.7476659402887020e+00 0.0000000000000000e+00 0 0 0 +1219 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.7618080759124330e+00 0.0000000000000000e+00 0 0 0 +1220 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.7688791437242983e+00 0.0000000000000000e+00 0 0 0 +1221 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.7618080759124330e+00 0.0000000000000000e+00 0 0 0 +1222 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.7759502115361636e+00 0.0000000000000000e+00 0 0 0 +1223 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.7830212793480293e+00 0.0000000000000000e+00 0 0 0 +1224 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.7759502115361636e+00 0.0000000000000000e+00 0 0 0 +1225 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.7900923471598946e+00 0.0000000000000000e+00 0 0 0 +1226 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.7971634149717604e+00 0.0000000000000000e+00 0 0 0 +1227 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.7900923471598946e+00 0.0000000000000000e+00 0 0 0 +1228 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.8042344827836256e+00 0.0000000000000000e+00 0 0 0 +1229 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.8113055505954914e+00 0.0000000000000000e+00 0 0 0 +1230 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.8042344827836256e+00 0.0000000000000000e+00 0 0 0 +1231 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.8183766184073566e+00 0.0000000000000000e+00 0 0 0 +1232 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.8254476862192224e+00 0.0000000000000000e+00 0 0 0 +1233 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.8183766184073566e+00 0.0000000000000000e+00 0 0 0 +1234 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.8325187540310877e+00 0.0000000000000000e+00 0 0 0 +1236 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.8325187540310877e+00 0.0000000000000000e+00 0 0 0 +1235 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.8395898218429529e+00 0.0000000000000000e+00 0 0 0 +1237 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.8466608896548187e+00 0.0000000000000000e+00 0 0 0 +1238 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.8537319574666840e+00 0.0000000000000000e+00 0 0 0 +1239 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.8466608896548187e+00 0.0000000000000000e+00 0 0 0 +1240 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.8608030252785497e+00 0.0000000000000000e+00 0 0 0 +1241 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.8678740930904150e+00 0.0000000000000000e+00 0 0 0 +1242 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.8608030252785497e+00 0.0000000000000000e+00 0 0 0 +1243 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.8749451609022807e+00 0.0000000000000000e+00 0 0 0 +1244 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.8820162287141460e+00 0.0000000000000000e+00 0 0 0 +1245 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.8749451609022807e+00 0.0000000000000000e+00 0 0 0 +1246 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.8890872965260113e+00 0.0000000000000000e+00 0 0 0 +1247 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.8961583643378770e+00 0.0000000000000000e+00 0 0 0 +1248 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.8890872965260113e+00 0.0000000000000000e+00 0 0 0 +1249 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.9032294321497423e+00 0.0000000000000000e+00 0 0 0 +1250 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.9103004999616080e+00 0.0000000000000000e+00 0 0 0 +1251 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.9032294321497423e+00 0.0000000000000000e+00 0 0 0 +1252 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.9173715677734733e+00 0.0000000000000000e+00 0 0 0 +1253 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.9244426355853390e+00 0.0000000000000000e+00 0 0 0 +1254 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.9173715677734733e+00 0.0000000000000000e+00 0 0 0 +1255 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.9315137033972043e+00 0.0000000000000000e+00 0 0 0 +1256 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.9385847712090696e+00 0.0000000000000000e+00 0 0 0 +1257 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.9315137033972043e+00 0.0000000000000000e+00 0 0 0 +1258 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.9456558390209353e+00 0.0000000000000000e+00 0 0 0 +1259 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.9527269068328006e+00 0.0000000000000000e+00 0 0 0 +1260 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.9456558390209353e+00 0.0000000000000000e+00 0 0 0 +1261 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.9597979746446663e+00 0.0000000000000000e+00 0 0 0 +1262 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.9668690424565316e+00 0.0000000000000000e+00 0 0 0 +1263 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.9597979746446663e+00 0.0000000000000000e+00 0 0 0 +1264 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.9739401102683973e+00 0.0000000000000000e+00 0 0 0 +1265 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.9810111780802626e+00 0.0000000000000000e+00 0 0 0 +1266 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.9739401102683973e+00 0.0000000000000000e+00 0 0 0 +1267 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 3.9880822458921279e+00 0.0000000000000000e+00 0 0 0 +1268 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 3.9951533137039936e+00 0.0000000000000000e+00 0 0 0 +1269 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 3.9880822458921279e+00 0.0000000000000000e+00 0 0 0 +1270 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.0022243815158589e+00 0.0000000000000000e+00 0 0 0 +1271 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.0092954493277242e+00 0.0000000000000000e+00 0 0 0 +1272 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.0022243815158589e+00 0.0000000000000000e+00 0 0 0 +1273 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.0163665171395904e+00 0.0000000000000000e+00 0 0 0 +1274 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.0234375849514556e+00 0.0000000000000000e+00 0 0 0 +1275 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.0163665171395904e+00 0.0000000000000000e+00 0 0 0 +1276 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.0305086527633209e+00 0.0000000000000000e+00 0 0 0 +1277 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.0375797205751862e+00 0.0000000000000000e+00 0 0 0 +1278 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.0305086527633209e+00 0.0000000000000000e+00 0 0 0 +1279 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.0446507883870515e+00 0.0000000000000000e+00 0 0 0 +1280 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.0517218561989177e+00 0.0000000000000000e+00 0 0 0 +1281 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.0446507883870515e+00 0.0000000000000000e+00 0 0 0 +1282 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.0587929240107830e+00 0.0000000000000000e+00 0 0 0 +1283 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.0658639918226482e+00 0.0000000000000000e+00 0 0 0 +1284 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.0587929240107830e+00 0.0000000000000000e+00 0 0 0 +1285 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.0729350596345135e+00 0.0000000000000000e+00 0 0 0 +1286 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.0800061274463797e+00 0.0000000000000000e+00 0 0 0 +1287 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.0729350596345135e+00 0.0000000000000000e+00 0 0 0 +1288 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.0870771952582450e+00 0.0000000000000000e+00 0 0 0 +1289 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.0941482630701103e+00 0.0000000000000000e+00 0 0 0 +1290 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.0870771952582450e+00 0.0000000000000000e+00 0 0 0 +1291 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.1012193308819755e+00 0.0000000000000000e+00 0 0 0 +1292 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.1082903986938408e+00 0.0000000000000000e+00 0 0 0 +1293 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.1012193308819755e+00 0.0000000000000000e+00 0 0 0 +1294 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.1153614665057070e+00 0.0000000000000000e+00 0 0 0 +1295 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.1224325343175723e+00 0.0000000000000000e+00 0 0 0 +1296 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.1153614665057070e+00 0.0000000000000000e+00 0 0 0 +1297 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.1295036021294376e+00 0.0000000000000000e+00 0 0 0 +1298 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.1365746699413029e+00 0.0000000000000000e+00 0 0 0 +1299 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.1295036021294376e+00 0.0000000000000000e+00 0 0 0 +1300 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.1436457377531681e+00 0.0000000000000000e+00 0 0 0 +1301 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.1507168055650343e+00 0.0000000000000000e+00 0 0 0 +1302 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.1436457377531681e+00 0.0000000000000000e+00 0 0 0 +1303 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.1577878733768996e+00 0.0000000000000000e+00 0 0 0 +1304 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.1648589411887649e+00 0.0000000000000000e+00 0 0 0 +1305 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.1577878733768996e+00 0.0000000000000000e+00 0 0 0 +1306 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.1719300090006302e+00 0.0000000000000000e+00 0 0 0 +1307 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.1790010768124963e+00 0.0000000000000000e+00 0 0 0 +1308 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.1719300090006302e+00 0.0000000000000000e+00 0 0 0 +1309 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.1860721446243616e+00 0.0000000000000000e+00 0 0 0 +1310 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.1931432124362269e+00 0.0000000000000000e+00 0 0 0 +1311 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.1860721446243616e+00 0.0000000000000000e+00 0 0 0 +1312 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.2002142802480922e+00 0.0000000000000000e+00 0 0 0 +1313 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.2072853480599575e+00 0.0000000000000000e+00 0 0 0 +1314 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.2002142802480922e+00 0.0000000000000000e+00 0 0 0 +1315 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.2143564158718236e+00 0.0000000000000000e+00 0 0 0 +1316 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.2214274836836889e+00 0.0000000000000000e+00 0 0 0 +1317 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.2143564158718236e+00 0.0000000000000000e+00 0 0 0 +1318 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.2284985514955542e+00 0.0000000000000000e+00 0 0 0 +1319 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.2355696193074195e+00 0.0000000000000000e+00 0 0 0 +1320 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.2284985514955542e+00 0.0000000000000000e+00 0 0 0 +1321 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.2426406871192848e+00 0.0000000000000000e+00 0 0 0 +1322 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.2497117549311509e+00 0.0000000000000000e+00 0 0 0 +1323 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.2426406871192848e+00 0.0000000000000000e+00 0 0 0 +1324 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.2567828227430162e+00 0.0000000000000000e+00 0 0 0 +1325 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.2638538905548815e+00 0.0000000000000000e+00 0 0 0 +1326 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.2567828227430162e+00 0.0000000000000000e+00 0 0 0 +1327 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.2709249583667468e+00 0.0000000000000000e+00 0 0 0 +1328 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.2779960261786130e+00 0.0000000000000000e+00 0 0 0 +1329 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.2709249583667468e+00 0.0000000000000000e+00 0 0 0 +1330 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.2850670939904782e+00 0.0000000000000000e+00 0 0 0 +1331 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.2921381618023435e+00 0.0000000000000000e+00 0 0 0 +1332 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.2850670939904782e+00 0.0000000000000000e+00 0 0 0 +1333 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.2992092296142088e+00 0.0000000000000000e+00 0 0 0 +1334 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.3062802974260741e+00 0.0000000000000000e+00 0 0 0 +1335 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.2992092296142088e+00 0.0000000000000000e+00 0 0 0 +1336 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.3133513652379403e+00 0.0000000000000000e+00 0 0 0 +1337 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.3204224330498056e+00 0.0000000000000000e+00 0 0 0 +1338 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.3133513652379403e+00 0.0000000000000000e+00 0 0 0 +1339 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.3274935008616708e+00 0.0000000000000000e+00 0 0 0 +1341 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.3274935008616708e+00 0.0000000000000000e+00 0 0 0 +1340 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.3345645686735361e+00 0.0000000000000000e+00 0 0 0 +1342 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.3416356364854023e+00 0.0000000000000000e+00 0 0 0 +1343 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.3487067042972676e+00 0.0000000000000000e+00 0 0 0 +1344 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.3416356364854023e+00 0.0000000000000000e+00 0 0 0 +1345 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.3557777721091329e+00 0.0000000000000000e+00 0 0 0 +1346 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.3628488399209981e+00 0.0000000000000000e+00 0 0 0 +1347 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.3557777721091329e+00 0.0000000000000000e+00 0 0 0 +1348 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.3699199077328634e+00 0.0000000000000000e+00 0 0 0 +1349 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.3769909755447296e+00 0.0000000000000000e+00 0 0 0 +1350 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.3699199077328634e+00 0.0000000000000000e+00 0 0 0 +1351 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.3840620433565949e+00 0.0000000000000000e+00 0 0 0 +1352 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.3911331111684602e+00 0.0000000000000000e+00 0 0 0 +1353 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.3840620433565949e+00 0.0000000000000000e+00 0 0 0 +1354 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.3982041789803255e+00 0.0000000000000000e+00 0 0 0 +1355 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.4052752467921907e+00 0.0000000000000000e+00 0 0 0 +1356 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.3982041789803255e+00 0.0000000000000000e+00 0 0 0 +1357 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.4123463146040569e+00 0.0000000000000000e+00 0 0 0 +1358 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.4194173824159222e+00 0.0000000000000000e+00 0 0 0 +1359 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.4123463146040569e+00 0.0000000000000000e+00 0 0 0 +1360 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.4264884502277875e+00 0.0000000000000000e+00 0 0 0 +1361 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.4335595180396528e+00 0.0000000000000000e+00 0 0 0 +1362 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.4264884502277875e+00 0.0000000000000000e+00 0 0 0 +1363 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.4406305858515189e+00 0.0000000000000000e+00 0 0 0 +1364 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.4477016536633842e+00 0.0000000000000000e+00 0 0 0 +1365 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.4406305858515189e+00 0.0000000000000000e+00 0 0 0 +1366 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.4547727214752495e+00 0.0000000000000000e+00 0 0 0 +1367 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.4618437892871148e+00 0.0000000000000000e+00 0 0 0 +1368 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.4547727214752495e+00 0.0000000000000000e+00 0 0 0 +1369 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.4689148570989801e+00 0.0000000000000000e+00 0 0 0 +1370 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.4759859249108462e+00 0.0000000000000000e+00 0 0 0 +1371 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.4689148570989801e+00 0.0000000000000000e+00 0 0 0 +1372 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.4830569927227115e+00 0.0000000000000000e+00 0 0 0 +1373 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.4901280605345768e+00 0.0000000000000000e+00 0 0 0 +1374 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.4830569927227115e+00 0.0000000000000000e+00 0 0 0 +1375 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.4971991283464421e+00 0.0000000000000000e+00 0 0 0 +1377 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.4971991283464421e+00 0.0000000000000000e+00 0 0 0 +1376 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.5042701961583074e+00 0.0000000000000000e+00 0 0 0 +1378 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.5113412639701735e+00 0.0000000000000000e+00 0 0 0 +1379 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.5184123317820388e+00 0.0000000000000000e+00 0 0 0 +1380 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.5113412639701735e+00 0.0000000000000000e+00 0 0 0 +1381 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.5254833995939041e+00 0.0000000000000000e+00 0 0 0 +1382 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.5325544674057694e+00 0.0000000000000000e+00 0 0 0 +1383 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.5254833995939041e+00 0.0000000000000000e+00 0 0 0 +1384 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.5396255352176356e+00 0.0000000000000000e+00 0 0 0 +1385 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.5466966030295008e+00 0.0000000000000000e+00 0 0 0 +1386 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.5396255352176356e+00 0.0000000000000000e+00 0 0 0 +1387 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.5537676708413661e+00 0.0000000000000000e+00 0 0 0 +1388 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.5608387386532314e+00 0.0000000000000000e+00 0 0 0 +1389 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.5537676708413661e+00 0.0000000000000000e+00 0 0 0 +1390 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.5679098064650967e+00 0.0000000000000000e+00 0 0 0 +1391 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.5749808742769629e+00 0.0000000000000000e+00 0 0 0 +1392 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.5679098064650967e+00 0.0000000000000000e+00 0 0 0 +1393 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.5820519420888282e+00 0.0000000000000000e+00 0 0 0 +1394 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.5891230099006934e+00 0.0000000000000000e+00 0 0 0 +1395 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.5820519420888282e+00 0.0000000000000000e+00 0 0 0 +1396 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.5961940777125587e+00 0.0000000000000000e+00 0 0 0 +1397 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.6032651455244240e+00 0.0000000000000000e+00 0 0 0 +1398 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.5961940777125587e+00 0.0000000000000000e+00 0 0 0 +1399 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.6103362133362902e+00 0.0000000000000000e+00 0 0 0 +1400 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.6174072811481555e+00 0.0000000000000000e+00 0 0 0 +1401 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.6103362133362902e+00 0.0000000000000000e+00 0 0 0 +1402 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.6244783489600207e+00 0.0000000000000000e+00 0 0 0 +1403 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.6315494167718860e+00 0.0000000000000000e+00 0 0 0 +1404 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.6244783489600207e+00 0.0000000000000000e+00 0 0 0 +1405 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.6386204845837522e+00 0.0000000000000000e+00 0 0 0 +1406 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.6456915523956175e+00 0.0000000000000000e+00 0 0 0 +1407 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.6386204845837522e+00 0.0000000000000000e+00 0 0 0 +1408 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.6527626202074828e+00 0.0000000000000000e+00 0 0 0 +1409 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.6598336880193481e+00 0.0000000000000000e+00 0 0 0 +1410 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.6527626202074828e+00 0.0000000000000000e+00 0 0 0 +1411 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.6669047558312133e+00 0.0000000000000000e+00 0 0 0 +1413 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.6669047558312133e+00 0.0000000000000000e+00 0 0 0 +1412 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.6739758236430795e+00 0.0000000000000000e+00 0 0 0 +1414 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.6810468914549448e+00 0.0000000000000000e+00 0 0 0 +1415 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.6881179592668101e+00 0.0000000000000000e+00 0 0 0 +1416 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.6810468914549448e+00 0.0000000000000000e+00 0 0 0 +1417 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.6951890270786754e+00 0.0000000000000000e+00 0 0 0 +1418 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.7022600948905415e+00 0.0000000000000000e+00 0 0 0 +1419 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.6951890270786754e+00 0.0000000000000000e+00 0 0 0 +1420 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.7093311627024068e+00 0.0000000000000000e+00 0 0 0 +1421 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.7164022305142721e+00 0.0000000000000000e+00 0 0 0 +1422 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.7093311627024068e+00 0.0000000000000000e+00 0 0 0 +1423 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.7234732983261374e+00 0.0000000000000000e+00 0 0 0 +1424 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.7305443661380027e+00 0.0000000000000000e+00 0 0 0 +1425 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.7234732983261374e+00 0.0000000000000000e+00 0 0 0 +1426 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.7376154339498688e+00 0.0000000000000000e+00 0 0 0 +1427 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.7446865017617341e+00 0.0000000000000000e+00 0 0 0 +1428 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.7376154339498688e+00 0.0000000000000000e+00 0 0 0 +1429 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.7517575695735994e+00 0.0000000000000000e+00 0 0 0 +1430 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.7588286373854647e+00 0.0000000000000000e+00 0 0 0 +1431 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.7517575695735994e+00 0.0000000000000000e+00 0 0 0 +1432 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.7658997051973300e+00 0.0000000000000000e+00 0 0 0 +1433 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.7729707730091961e+00 0.0000000000000000e+00 0 0 0 +1434 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.7658997051973300e+00 0.0000000000000000e+00 0 0 0 +1435 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.7800418408210614e+00 0.0000000000000000e+00 0 0 0 +1436 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.7871129086329267e+00 0.0000000000000000e+00 0 0 0 +1437 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.7800418408210614e+00 0.0000000000000000e+00 0 0 0 +1438 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.7941839764447920e+00 0.0000000000000000e+00 0 0 0 +1439 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.8012550442566582e+00 0.0000000000000000e+00 0 0 0 +1440 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.7941839764447920e+00 0.0000000000000000e+00 0 0 0 +1441 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.8083261120685235e+00 0.0000000000000000e+00 0 0 0 +1442 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.8153971798803887e+00 0.0000000000000000e+00 0 0 0 +1443 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.8083261120685235e+00 0.0000000000000000e+00 0 0 0 +1444 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.8224682476922540e+00 0.0000000000000000e+00 0 0 0 +1445 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.8295393155041193e+00 0.0000000000000000e+00 0 0 0 +1446 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.8224682476922540e+00 0.0000000000000000e+00 0 0 0 +1447 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.8366103833159855e+00 0.0000000000000000e+00 0 0 0 +1448 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.8436814511278508e+00 0.0000000000000000e+00 0 0 0 +1449 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.8366103833159855e+00 0.0000000000000000e+00 0 0 0 +1450 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.8507525189397160e+00 0.0000000000000000e+00 0 0 0 +1451 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.8578235867515813e+00 0.0000000000000000e+00 0 0 0 +1452 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.8507525189397160e+00 0.0000000000000000e+00 0 0 0 +1453 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.8648946545634466e+00 0.0000000000000000e+00 0 0 0 +1454 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.8719657223753128e+00 0.0000000000000000e+00 0 0 0 +1455 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.8648946545634466e+00 0.0000000000000000e+00 0 0 0 +1456 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.8790367901871781e+00 0.0000000000000000e+00 0 0 0 +1457 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.8861078579990433e+00 0.0000000000000000e+00 0 0 0 +1458 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.8790367901871781e+00 0.0000000000000000e+00 0 0 0 +1459 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.8931789258109086e+00 0.0000000000000000e+00 0 0 0 +1460 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.9002499936227748e+00 0.0000000000000000e+00 0 0 0 +1461 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.8931789258109086e+00 0.0000000000000000e+00 0 0 0 +1462 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.9073210614346401e+00 0.0000000000000000e+00 0 0 0 +1463 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.9143921292465054e+00 0.0000000000000000e+00 0 0 0 +1464 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.9073210614346401e+00 0.0000000000000000e+00 0 0 0 +1465 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.9214631970583707e+00 0.0000000000000000e+00 0 0 0 +1466 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.9285342648702359e+00 0.0000000000000000e+00 0 0 0 +1467 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.9214631970583707e+00 0.0000000000000000e+00 0 0 0 +1468 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.9356053326821021e+00 0.0000000000000000e+00 0 0 0 +1469 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.9426764004939674e+00 0.0000000000000000e+00 0 0 0 +1470 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.9356053326821021e+00 0.0000000000000000e+00 0 0 0 +1471 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.9497474683058327e+00 0.0000000000000000e+00 0 0 0 +1472 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.9568185361176980e+00 0.0000000000000000e+00 0 0 0 +1473 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.9497474683058327e+00 0.0000000000000000e+00 0 0 0 +1474 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.9638896039295641e+00 0.0000000000000000e+00 0 0 0 +1475 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.9709606717414294e+00 0.0000000000000000e+00 0 0 0 +1476 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.9638896039295641e+00 0.0000000000000000e+00 0 0 0 +1477 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.9780317395532947e+00 0.0000000000000000e+00 0 0 0 +1478 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.9851028073651600e+00 0.0000000000000000e+00 0 0 0 +1479 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.9780317395532947e+00 0.0000000000000000e+00 0 0 0 +1480 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 4.9921738751770253e+00 0.0000000000000000e+00 0 0 0 +1481 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 4.9992449429888914e+00 0.0000000000000000e+00 0 0 0 +1482 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 4.9921738751770253e+00 0.0000000000000000e+00 0 0 0 +1483 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.0063160108007567e+00 0.0000000000000000e+00 0 0 0 +1484 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.0133870786126220e+00 0.0000000000000000e+00 0 0 0 +1485 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.0063160108007567e+00 0.0000000000000000e+00 0 0 0 +1486 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.0204581464244873e+00 0.0000000000000000e+00 0 0 0 +1487 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.0275292142363526e+00 0.0000000000000000e+00 0 0 0 +1488 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.0204581464244873e+00 0.0000000000000000e+00 0 0 0 +1489 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.0346002820482187e+00 0.0000000000000000e+00 0 0 0 +1490 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.0416713498600840e+00 0.0000000000000000e+00 0 0 0 +1491 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.0346002820482187e+00 0.0000000000000000e+00 0 0 0 +1492 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.0487424176719493e+00 0.0000000000000000e+00 0 0 0 +1493 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.0558134854838146e+00 0.0000000000000000e+00 0 0 0 +1494 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.0487424176719493e+00 0.0000000000000000e+00 0 0 0 +1495 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.0628845532956808e+00 0.0000000000000000e+00 0 0 0 +1496 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.0699556211075461e+00 0.0000000000000000e+00 0 0 0 +1497 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.0628845532956808e+00 0.0000000000000000e+00 0 0 0 +1498 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.0770266889194113e+00 0.0000000000000000e+00 0 0 0 +1499 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.0840977567312766e+00 0.0000000000000000e+00 0 0 0 +1500 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.0770266889194113e+00 0.0000000000000000e+00 0 0 0 +1501 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.0911688245431419e+00 0.0000000000000000e+00 0 0 0 +1502 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.0982398923550081e+00 0.0000000000000000e+00 0 0 0 +1503 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.0911688245431419e+00 0.0000000000000000e+00 0 0 0 +1504 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.1053109601668734e+00 0.0000000000000000e+00 0 0 0 +1505 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.1123820279787386e+00 0.0000000000000000e+00 0 0 0 +1506 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.1053109601668734e+00 0.0000000000000000e+00 0 0 0 +1507 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.1194530957906039e+00 0.0000000000000000e+00 0 0 0 +1508 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.1265241636024692e+00 0.0000000000000000e+00 0 0 0 +1509 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.1194530957906039e+00 0.0000000000000000e+00 0 0 0 +1510 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.1335952314143354e+00 0.0000000000000000e+00 0 0 0 +1511 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.1406662992262007e+00 0.0000000000000000e+00 0 0 0 +1512 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.1335952314143354e+00 0.0000000000000000e+00 0 0 0 +1513 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.1477373670380659e+00 0.0000000000000000e+00 0 0 0 +1514 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.1548084348499312e+00 0.0000000000000000e+00 0 0 0 +1515 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.1477373670380659e+00 0.0000000000000000e+00 0 0 0 +1516 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.1618795026617974e+00 0.0000000000000000e+00 0 0 0 +1518 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.1618795026617974e+00 0.0000000000000000e+00 0 0 0 +1517 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.1689505704736627e+00 0.0000000000000000e+00 0 0 0 +1519 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.1760216382855280e+00 0.0000000000000000e+00 0 0 0 +1520 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.1830927060973933e+00 0.0000000000000000e+00 0 0 0 +1521 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.1760216382855280e+00 0.0000000000000000e+00 0 0 0 +1522 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.1901637739092585e+00 0.0000000000000000e+00 0 0 0 +1523 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.1972348417211247e+00 0.0000000000000000e+00 0 0 0 +1524 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.1901637739092585e+00 0.0000000000000000e+00 0 0 0 +1525 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.2043059095329900e+00 0.0000000000000000e+00 0 0 0 +1526 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.2113769773448553e+00 0.0000000000000000e+00 0 0 0 +1527 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.2043059095329900e+00 0.0000000000000000e+00 0 0 0 +1528 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.2184480451567206e+00 0.0000000000000000e+00 0 0 0 +1529 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.2255191129685858e+00 0.0000000000000000e+00 0 0 0 +1530 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.2184480451567206e+00 0.0000000000000000e+00 0 0 0 +1531 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.2325901807804520e+00 0.0000000000000000e+00 0 0 0 +1532 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.2396612485923173e+00 0.0000000000000000e+00 0 0 0 +1533 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.2325901807804520e+00 0.0000000000000000e+00 0 0 0 +1534 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.2467323164041826e+00 0.0000000000000000e+00 0 0 0 +1535 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.2538033842160479e+00 0.0000000000000000e+00 0 0 0 +1536 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.2467323164041826e+00 0.0000000000000000e+00 0 0 0 +1537 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.2608744520279140e+00 0.0000000000000000e+00 0 0 0 +1538 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.2679455198397793e+00 0.0000000000000000e+00 0 0 0 +1539 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.2608744520279140e+00 0.0000000000000000e+00 0 0 0 +1540 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.2750165876516446e+00 0.0000000000000000e+00 0 0 0 +1541 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.2820876554635099e+00 0.0000000000000000e+00 0 0 0 +1542 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.2750165876516446e+00 0.0000000000000000e+00 0 0 0 +1543 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.2891587232753752e+00 0.0000000000000000e+00 0 0 0 +1544 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.2962297910872413e+00 0.0000000000000000e+00 0 0 0 +1545 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.2891587232753752e+00 0.0000000000000000e+00 0 0 0 +1546 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.3033008588991066e+00 0.0000000000000000e+00 0 0 0 +1547 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.3103719267109719e+00 0.0000000000000000e+00 0 0 0 +1548 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.3033008588991066e+00 0.0000000000000000e+00 0 0 0 +1549 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.3174429945228372e+00 0.0000000000000000e+00 0 0 0 +1550 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.3245140623347034e+00 0.0000000000000000e+00 0 0 0 +1551 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.3174429945228372e+00 0.0000000000000000e+00 0 0 0 +1552 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.3315851301465687e+00 0.0000000000000000e+00 0 0 0 +1554 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.3315851301465687e+00 0.0000000000000000e+00 0 0 0 +1553 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.3386561979584339e+00 0.0000000000000000e+00 0 0 0 +1555 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.3457272657702992e+00 0.0000000000000000e+00 0 0 0 +1556 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.3527983335821645e+00 0.0000000000000000e+00 0 0 0 +1557 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.3457272657702992e+00 0.0000000000000000e+00 0 0 0 +1558 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.3598694013940307e+00 0.0000000000000000e+00 0 0 0 +1559 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.3669404692058960e+00 0.0000000000000000e+00 0 0 0 +1560 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.3598694013940307e+00 0.0000000000000000e+00 0 0 0 +1561 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.3740115370177612e+00 0.0000000000000000e+00 0 0 0 +1562 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.3810826048296265e+00 0.0000000000000000e+00 0 0 0 +1563 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.3740115370177612e+00 0.0000000000000000e+00 0 0 0 +1564 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.3881536726414918e+00 0.0000000000000000e+00 0 0 0 +1565 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.3952247404533580e+00 0.0000000000000000e+00 0 0 0 +1566 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.3881536726414918e+00 0.0000000000000000e+00 0 0 0 +1567 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.4022958082652233e+00 0.0000000000000000e+00 0 0 0 +1568 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.4093668760770885e+00 0.0000000000000000e+00 0 0 0 +1569 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.4022958082652233e+00 0.0000000000000000e+00 0 0 0 +1570 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.4164379438889538e+00 0.0000000000000000e+00 0 0 0 +1571 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.4235090117008200e+00 0.0000000000000000e+00 0 0 0 +1572 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.4164379438889538e+00 0.0000000000000000e+00 0 0 0 +1573 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.4305800795126853e+00 0.0000000000000000e+00 0 0 0 +1574 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.4376511473245506e+00 0.0000000000000000e+00 0 0 0 +1575 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.4305800795126853e+00 0.0000000000000000e+00 0 0 0 +1576 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.4447222151364159e+00 0.0000000000000000e+00 0 0 0 +1577 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.4517932829482811e+00 0.0000000000000000e+00 0 0 0 +1578 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.4447222151364159e+00 0.0000000000000000e+00 0 0 0 +1579 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.4588643507601473e+00 0.0000000000000000e+00 0 0 0 +1580 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.4659354185720126e+00 0.0000000000000000e+00 0 0 0 +1581 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.4588643507601473e+00 0.0000000000000000e+00 0 0 0 +1582 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.4730064863838779e+00 0.0000000000000000e+00 0 0 0 +1583 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.4800775541957432e+00 0.0000000000000000e+00 0 0 0 +1584 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.4730064863838779e+00 0.0000000000000000e+00 0 0 0 +1585 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.4871486220076084e+00 0.0000000000000000e+00 0 0 0 +1586 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.4942196898194746e+00 0.0000000000000000e+00 0 0 0 +1587 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.4871486220076084e+00 0.0000000000000000e+00 0 0 0 +1588 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.5012907576313399e+00 0.0000000000000000e+00 0 0 0 +1589 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.5083618254432052e+00 0.0000000000000000e+00 0 0 0 +1590 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.5012907576313399e+00 0.0000000000000000e+00 0 0 0 +1591 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.5154328932550705e+00 0.0000000000000000e+00 0 0 0 +1592 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.5225039610669366e+00 0.0000000000000000e+00 0 0 0 +1593 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.5154328932550705e+00 0.0000000000000000e+00 0 0 0 +1594 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.5295750288788019e+00 0.0000000000000000e+00 0 0 0 +1595 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.5366460966906672e+00 0.0000000000000000e+00 0 0 0 +1596 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.5295750288788019e+00 0.0000000000000000e+00 0 0 0 +1597 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.5437171645025325e+00 0.0000000000000000e+00 0 0 0 +1598 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.5507882323143978e+00 0.0000000000000000e+00 0 0 0 +1599 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.5437171645025325e+00 0.0000000000000000e+00 0 0 0 +1600 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.5578593001262639e+00 0.0000000000000000e+00 0 0 0 +1601 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.5649303679381292e+00 0.0000000000000000e+00 0 0 0 +1602 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.5578593001262639e+00 0.0000000000000000e+00 0 0 0 +1603 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.5720014357499945e+00 0.0000000000000000e+00 0 0 0 +1604 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.5790725035618598e+00 0.0000000000000000e+00 0 0 0 +1605 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.5720014357499945e+00 0.0000000000000000e+00 0 0 0 +1606 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.5861435713737251e+00 0.0000000000000000e+00 0 0 0 +1607 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.5932146391855913e+00 0.0000000000000000e+00 0 0 0 +1608 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.5861435713737251e+00 0.0000000000000000e+00 0 0 0 +1609 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.6002857069974565e+00 0.0000000000000000e+00 0 0 0 +1610 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.6073567748093218e+00 0.0000000000000000e+00 0 0 0 +1611 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.6002857069974565e+00 0.0000000000000000e+00 0 0 0 +1612 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.6144278426211871e+00 0.0000000000000000e+00 0 0 0 +1613 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.6214989104330533e+00 0.0000000000000000e+00 0 0 0 +1614 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.6144278426211871e+00 0.0000000000000000e+00 0 0 0 +1615 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.6285699782449186e+00 0.0000000000000000e+00 0 0 0 +1616 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.6356410460567838e+00 0.0000000000000000e+00 0 0 0 +1617 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.6285699782449186e+00 0.0000000000000000e+00 0 0 0 +1618 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.6427121138686491e+00 0.0000000000000000e+00 0 0 0 +1619 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.6497831816805144e+00 0.0000000000000000e+00 0 0 0 +1620 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.6427121138686491e+00 0.0000000000000000e+00 0 0 0 +1621 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.6568542494923806e+00 0.0000000000000000e+00 0 0 0 +1622 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.6639253173042459e+00 0.0000000000000000e+00 0 0 0 +1623 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.6568542494923806e+00 0.0000000000000000e+00 0 0 0 +1624 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.6709963851161111e+00 0.0000000000000000e+00 0 0 0 +1625 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.6780674529279764e+00 0.0000000000000000e+00 0 0 0 +1626 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.6709963851161111e+00 0.0000000000000000e+00 0 0 0 +1627 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.6851385207398426e+00 0.0000000000000000e+00 0 0 0 +1628 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.6922095885517079e+00 0.0000000000000000e+00 0 0 0 +1629 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.6851385207398426e+00 0.0000000000000000e+00 0 0 0 +1630 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.6992806563635732e+00 0.0000000000000000e+00 0 0 0 +1631 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.7063517241754385e+00 0.0000000000000000e+00 0 0 0 +1632 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.6992806563635732e+00 0.0000000000000000e+00 0 0 0 +1633 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.7134227919873037e+00 0.0000000000000000e+00 0 0 0 +1634 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.7204938597991699e+00 0.0000000000000000e+00 0 0 0 +1635 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.7134227919873037e+00 0.0000000000000000e+00 0 0 0 +1636 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.7275649276110352e+00 0.0000000000000000e+00 0 0 0 +1637 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.7346359954229005e+00 0.0000000000000000e+00 0 0 0 +1638 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.7275649276110352e+00 0.0000000000000000e+00 0 0 0 +1639 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.7417070632347658e+00 0.0000000000000000e+00 0 0 0 +1640 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.7487781310466310e+00 0.0000000000000000e+00 0 0 0 +1641 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.7417070632347658e+00 0.0000000000000000e+00 0 0 0 +1642 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.7558491988584972e+00 0.0000000000000000e+00 0 0 0 +1643 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.7629202666703625e+00 0.0000000000000000e+00 0 0 0 +1644 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.7558491988584972e+00 0.0000000000000000e+00 0 0 0 +1645 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.7699913344822278e+00 0.0000000000000000e+00 0 0 0 +1646 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.7770624022940931e+00 0.0000000000000000e+00 0 0 0 +1647 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.7699913344822278e+00 0.0000000000000000e+00 0 0 0 +1648 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.7841334701059592e+00 0.0000000000000000e+00 0 0 0 +1649 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.7912045379178245e+00 0.0000000000000000e+00 0 0 0 +1650 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.7841334701059592e+00 0.0000000000000000e+00 0 0 0 +1651 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.7982756057296898e+00 0.0000000000000000e+00 0 0 0 +1652 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.8053466735415551e+00 0.0000000000000000e+00 0 0 0 +1653 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.7982756057296898e+00 0.0000000000000000e+00 0 0 0 +1654 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.8124177413534204e+00 0.0000000000000000e+00 0 0 0 +1655 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.8194888091652865e+00 0.0000000000000000e+00 0 0 0 +1656 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.8124177413534204e+00 0.0000000000000000e+00 0 0 0 +1657 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.8265598769771518e+00 0.0000000000000000e+00 0 0 0 +1658 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.8336309447890171e+00 0.0000000000000000e+00 0 0 0 +1659 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.8265598769771518e+00 0.0000000000000000e+00 0 0 0 +1660 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.8407020126008824e+00 0.0000000000000000e+00 0 0 0 +1661 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.8477730804127477e+00 0.0000000000000000e+00 0 0 0 +1662 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.8407020126008824e+00 0.0000000000000000e+00 0 0 0 +1663 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.8548441482246139e+00 0.0000000000000000e+00 0 0 0 +1664 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.8619152160364791e+00 0.0000000000000000e+00 0 0 0 +1665 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.8548441482246139e+00 0.0000000000000000e+00 0 0 0 +1666 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.8689862838483444e+00 0.0000000000000000e+00 0 0 0 +1667 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.8760573516602097e+00 0.0000000000000000e+00 0 0 0 +1668 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.8689862838483444e+00 0.0000000000000000e+00 0 0 0 +1669 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.8831284194720759e+00 0.0000000000000000e+00 0 0 0 +1670 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.8901994872839412e+00 0.0000000000000000e+00 0 0 0 +1671 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.8831284194720759e+00 0.0000000000000000e+00 0 0 0 +1672 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.8972705550958064e+00 0.0000000000000000e+00 0 0 0 +1673 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.9043416229076717e+00 0.0000000000000000e+00 0 0 0 +1674 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.8972705550958064e+00 0.0000000000000000e+00 0 0 0 +1675 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.9114126907195370e+00 0.0000000000000000e+00 0 0 0 +1676 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.9184837585314032e+00 0.0000000000000000e+00 0 0 0 +1677 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.9114126907195370e+00 0.0000000000000000e+00 0 0 0 +1678 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.9255548263432685e+00 0.0000000000000000e+00 0 0 0 +1679 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.9326258941551338e+00 0.0000000000000000e+00 0 0 0 +1680 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.9255548263432685e+00 0.0000000000000000e+00 0 0 0 +1681 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.9396969619669990e+00 0.0000000000000000e+00 0 0 0 +1682 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.9467680297788652e+00 0.0000000000000000e+00 0 0 0 +1683 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.9396969619669990e+00 0.0000000000000000e+00 0 0 0 +1684 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.9538390975907305e+00 0.0000000000000000e+00 0 0 0 +1685 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.9609101654025958e+00 0.0000000000000000e+00 0 0 0 +1686 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.9538390975907305e+00 0.0000000000000000e+00 0 0 0 +1687 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.9679812332144611e+00 0.0000000000000000e+00 0 0 0 +1688 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.9750523010263263e+00 0.0000000000000000e+00 0 0 0 +1689 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.9679812332144611e+00 0.0000000000000000e+00 0 0 0 +1690 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.9821233688381925e+00 0.0000000000000000e+00 0 0 0 +1691 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 5.9891944366500578e+00 0.0000000000000000e+00 0 0 0 +1692 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.9821233688381925e+00 0.0000000000000000e+00 0 0 0 +1693 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 5.9962655044619231e+00 0.0000000000000000e+00 0 0 0 +1695 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 5.9962655044619231e+00 0.0000000000000000e+00 0 0 0 +1694 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.0033365722737884e+00 0.0000000000000000e+00 0 0 0 +1696 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.0104076400856536e+00 0.0000000000000000e+00 0 0 0 +1697 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.0174787078975198e+00 0.0000000000000000e+00 0 0 0 +1698 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.0104076400856536e+00 0.0000000000000000e+00 0 0 0 +1699 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.0245497757093851e+00 0.0000000000000000e+00 0 0 0 +1700 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.0316208435212504e+00 0.0000000000000000e+00 0 0 0 +1701 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.0245497757093851e+00 0.0000000000000000e+00 0 0 0 +1702 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.0386919113331157e+00 0.0000000000000000e+00 0 0 0 +1703 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.0457629791449818e+00 0.0000000000000000e+00 0 0 0 +1704 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.0386919113331157e+00 0.0000000000000000e+00 0 0 0 +1705 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.0528340469568471e+00 0.0000000000000000e+00 0 0 0 +1706 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.0599051147687124e+00 0.0000000000000000e+00 0 0 0 +1707 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.0528340469568471e+00 0.0000000000000000e+00 0 0 0 +1708 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.0669761825805777e+00 0.0000000000000000e+00 0 0 0 +1709 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.0740472503924430e+00 0.0000000000000000e+00 0 0 0 +1710 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.0669761825805777e+00 0.0000000000000000e+00 0 0 0 +1711 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.0811183182043091e+00 0.0000000000000000e+00 0 0 0 +1712 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.0881893860161744e+00 0.0000000000000000e+00 0 0 0 +1713 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.0811183182043091e+00 0.0000000000000000e+00 0 0 0 +1714 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.0952604538280397e+00 0.0000000000000000e+00 0 0 0 +1715 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.1023315216399050e+00 0.0000000000000000e+00 0 0 0 +1716 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.0952604538280397e+00 0.0000000000000000e+00 0 0 0 +1717 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.1094025894517703e+00 0.0000000000000000e+00 0 0 0 +1718 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.1164736572636365e+00 0.0000000000000000e+00 0 0 0 +1719 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.1094025894517703e+00 0.0000000000000000e+00 0 0 0 +1720 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.1235447250755017e+00 0.0000000000000000e+00 0 0 0 +1721 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.1306157928873670e+00 0.0000000000000000e+00 0 0 0 +1722 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.1235447250755017e+00 0.0000000000000000e+00 0 0 0 +1723 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.1376868606992323e+00 0.0000000000000000e+00 0 0 0 +1724 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.1447579285110985e+00 0.0000000000000000e+00 0 0 0 +1725 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.1376868606992323e+00 0.0000000000000000e+00 0 0 0 +1726 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.1518289963229638e+00 0.0000000000000000e+00 0 0 0 +1727 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.1589000641348290e+00 0.0000000000000000e+00 0 0 0 +1728 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.1518289963229638e+00 0.0000000000000000e+00 0 0 0 +1729 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.1659711319466943e+00 0.0000000000000000e+00 0 0 0 +1731 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.1659711319466943e+00 0.0000000000000000e+00 0 0 0 +1730 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.1730421997585596e+00 0.0000000000000000e+00 0 0 0 +1732 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.1801132675704258e+00 0.0000000000000000e+00 0 0 0 +1733 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.1871843353822911e+00 0.0000000000000000e+00 0 0 0 +1734 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.1801132675704258e+00 0.0000000000000000e+00 0 0 0 +1735 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.1942554031941564e+00 0.0000000000000000e+00 0 0 0 +1736 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.2013264710060216e+00 0.0000000000000000e+00 0 0 0 +1737 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.1942554031941564e+00 0.0000000000000000e+00 0 0 0 +1738 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.2083975388178869e+00 0.0000000000000000e+00 0 0 0 +1739 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.2154686066297531e+00 0.0000000000000000e+00 0 0 0 +1740 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.2083975388178869e+00 0.0000000000000000e+00 0 0 0 +1741 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.2225396744416184e+00 0.0000000000000000e+00 0 0 0 +1742 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.2296107422534837e+00 0.0000000000000000e+00 0 0 0 +1743 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.2225396744416184e+00 0.0000000000000000e+00 0 0 0 +1744 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.2366818100653489e+00 0.0000000000000000e+00 0 0 0 +1745 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.2437528778772151e+00 0.0000000000000000e+00 0 0 0 +1746 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.2366818100653489e+00 0.0000000000000000e+00 0 0 0 +1747 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.2508239456890804e+00 0.0000000000000000e+00 0 0 0 +1748 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.2578950135009457e+00 0.0000000000000000e+00 0 0 0 +1749 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.2508239456890804e+00 0.0000000000000000e+00 0 0 0 +1750 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.2649660813128110e+00 0.0000000000000000e+00 0 0 0 +1751 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.2720371491246762e+00 0.0000000000000000e+00 0 0 0 +1752 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.2649660813128110e+00 0.0000000000000000e+00 0 0 0 +1753 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.2791082169365424e+00 0.0000000000000000e+00 0 0 0 +1754 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.2861792847484077e+00 0.0000000000000000e+00 0 0 0 +1755 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.2791082169365424e+00 0.0000000000000000e+00 0 0 0 +1756 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.2932503525602730e+00 0.0000000000000000e+00 0 0 0 +1757 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.3003214203721383e+00 0.0000000000000000e+00 0 0 0 +1758 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.2932503525602730e+00 0.0000000000000000e+00 0 0 0 +1759 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.3073924881840044e+00 0.0000000000000000e+00 0 0 0 +1760 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.3144635559958697e+00 0.0000000000000000e+00 0 0 0 +1761 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.3073924881840044e+00 0.0000000000000000e+00 0 0 0 +1762 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.3215346238077350e+00 0.0000000000000000e+00 0 0 0 +1763 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.3286056916196003e+00 0.0000000000000000e+00 0 0 0 +1764 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.3215346238077350e+00 0.0000000000000000e+00 0 0 0 +1765 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.3356767594314656e+00 0.0000000000000000e+00 0 0 0 +1766 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.3427478272433317e+00 0.0000000000000000e+00 0 0 0 +1767 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.3356767594314656e+00 0.0000000000000000e+00 0 0 0 +1768 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.3498188950551970e+00 0.0000000000000000e+00 0 0 0 +1769 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.3568899628670623e+00 0.0000000000000000e+00 0 0 0 +1770 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.3498188950551970e+00 0.0000000000000000e+00 0 0 0 +1771 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.3639610306789276e+00 0.0000000000000000e+00 0 0 0 +1772 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.3710320984907929e+00 0.0000000000000000e+00 0 0 0 +1773 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.3639610306789276e+00 0.0000000000000000e+00 0 0 0 +1774 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.3781031663026591e+00 0.0000000000000000e+00 0 0 0 +1775 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.3851742341145243e+00 0.0000000000000000e+00 0 0 0 +1776 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.3781031663026591e+00 0.0000000000000000e+00 0 0 0 +1777 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.3922453019263896e+00 0.0000000000000000e+00 0 0 0 +1778 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.3993163697382549e+00 0.0000000000000000e+00 0 0 0 +1779 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.3922453019263896e+00 0.0000000000000000e+00 0 0 0 +1780 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.4063874375501211e+00 0.0000000000000000e+00 0 0 0 +1781 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.4134585053619864e+00 0.0000000000000000e+00 0 0 0 +1782 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.4063874375501211e+00 0.0000000000000000e+00 0 0 0 +1783 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.4205295731738516e+00 0.0000000000000000e+00 0 0 0 +1784 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.4276006409857169e+00 0.0000000000000000e+00 0 0 0 +1785 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.4205295731738516e+00 0.0000000000000000e+00 0 0 0 +1786 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.4346717087975822e+00 0.0000000000000000e+00 0 0 0 +1787 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.4417427766094484e+00 0.0000000000000000e+00 0 0 0 +1788 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.4346717087975822e+00 0.0000000000000000e+00 0 0 0 +1789 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.4488138444213137e+00 0.0000000000000000e+00 0 0 0 +1790 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.4558849122331790e+00 0.0000000000000000e+00 0 0 0 +1791 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.4488138444213137e+00 0.0000000000000000e+00 0 0 0 +1792 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.4629559800450442e+00 0.0000000000000000e+00 0 0 0 +1793 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.4700270478569095e+00 0.0000000000000000e+00 0 0 0 +1794 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.4629559800450442e+00 0.0000000000000000e+00 0 0 0 +1795 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.4770981156687757e+00 0.0000000000000000e+00 0 0 0 +1796 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.4841691834806410e+00 0.0000000000000000e+00 0 0 0 +1797 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.4770981156687757e+00 0.0000000000000000e+00 0 0 0 +1798 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.4912402512925063e+00 0.0000000000000000e+00 0 0 0 +1799 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.4983113191043715e+00 0.0000000000000000e+00 0 0 0 +1800 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.4912402512925063e+00 0.0000000000000000e+00 0 0 0 +1801 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.5053823869162377e+00 0.0000000000000000e+00 0 0 0 +1802 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.5124534547281030e+00 0.0000000000000000e+00 0 0 0 +1803 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.5053823869162377e+00 0.0000000000000000e+00 0 0 0 +1804 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.5195245225399683e+00 0.0000000000000000e+00 0 0 0 +1805 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.5265955903518336e+00 0.0000000000000000e+00 0 0 0 +1806 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.5195245225399683e+00 0.0000000000000000e+00 0 0 0 +1807 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.5336666581636988e+00 0.0000000000000000e+00 0 0 0 +1808 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.5407377259755650e+00 0.0000000000000000e+00 0 0 0 +1809 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.5336666581636988e+00 0.0000000000000000e+00 0 0 0 +1810 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.5478087937874303e+00 0.0000000000000000e+00 0 0 0 +1811 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.5548798615992956e+00 0.0000000000000000e+00 0 0 0 +1812 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.5478087937874303e+00 0.0000000000000000e+00 0 0 0 +1813 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.5619509294111609e+00 0.0000000000000000e+00 0 0 0 +1814 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.5690219972230262e+00 0.0000000000000000e+00 0 0 0 +1815 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.5619509294111609e+00 0.0000000000000000e+00 0 0 0 +1816 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.5760930650348923e+00 0.0000000000000000e+00 0 0 0 +1817 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.5831641328467576e+00 0.0000000000000000e+00 0 0 0 +1818 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.5760930650348923e+00 0.0000000000000000e+00 0 0 0 +1819 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.5902352006586229e+00 0.0000000000000000e+00 0 0 0 +1820 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.5973062684704882e+00 0.0000000000000000e+00 0 0 0 +1821 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.5902352006586229e+00 0.0000000000000000e+00 0 0 0 +1822 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.6043773362823543e+00 0.0000000000000000e+00 0 0 0 +1823 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.6114484040942196e+00 0.0000000000000000e+00 0 0 0 +1824 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.6043773362823543e+00 0.0000000000000000e+00 0 0 0 +1825 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.6185194719060849e+00 0.0000000000000000e+00 0 0 0 +1826 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.6255905397179502e+00 0.0000000000000000e+00 0 0 0 +1827 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.6185194719060849e+00 0.0000000000000000e+00 0 0 0 +1828 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.6326616075298155e+00 0.0000000000000000e+00 0 0 0 +1829 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.6397326753416817e+00 0.0000000000000000e+00 0 0 0 +1830 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.6326616075298155e+00 0.0000000000000000e+00 0 0 0 +1831 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.6468037431535469e+00 0.0000000000000000e+00 0 0 0 +1832 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.6538748109654122e+00 0.0000000000000000e+00 0 0 0 +1833 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.6468037431535469e+00 0.0000000000000000e+00 0 0 0 +1834 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.6609458787772775e+00 0.0000000000000000e+00 0 0 0 +1836 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.6609458787772775e+00 0.0000000000000000e+00 0 0 0 +1835 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.6680169465891437e+00 0.0000000000000000e+00 0 0 0 +1837 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.6750880144010090e+00 0.0000000000000000e+00 0 0 0 +1838 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.6821590822128742e+00 0.0000000000000000e+00 0 0 0 +1839 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.6750880144010090e+00 0.0000000000000000e+00 0 0 0 +1840 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.6892301500247395e+00 0.0000000000000000e+00 0 0 0 +1841 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.6963012178366048e+00 0.0000000000000000e+00 0 0 0 +1842 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.6892301500247395e+00 0.0000000000000000e+00 0 0 0 +1843 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.7033722856484710e+00 0.0000000000000000e+00 0 0 0 +1844 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.7104433534603363e+00 0.0000000000000000e+00 0 0 0 +1845 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.7033722856484710e+00 0.0000000000000000e+00 0 0 0 +1846 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.7175144212722016e+00 0.0000000000000000e+00 0 0 0 +1847 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.7245854890840668e+00 0.0000000000000000e+00 0 0 0 +1848 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.7175144212722016e+00 0.0000000000000000e+00 0 0 0 +1849 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.7316565568959321e+00 0.0000000000000000e+00 0 0 0 +1850 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.7387276247077983e+00 0.0000000000000000e+00 0 0 0 +1851 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.7316565568959321e+00 0.0000000000000000e+00 0 0 0 +1852 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.7457986925196636e+00 0.0000000000000000e+00 0 0 0 +1853 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.7528697603315289e+00 0.0000000000000000e+00 0 0 0 +1854 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.7457986925196636e+00 0.0000000000000000e+00 0 0 0 +1855 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.7599408281433941e+00 0.0000000000000000e+00 0 0 0 +1856 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.7670118959552603e+00 0.0000000000000000e+00 0 0 0 +1857 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.7599408281433941e+00 0.0000000000000000e+00 0 0 0 +1858 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.7740829637671256e+00 0.0000000000000000e+00 0 0 0 +1859 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.7811540315789909e+00 0.0000000000000000e+00 0 0 0 +1860 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.7740829637671256e+00 0.0000000000000000e+00 0 0 0 +1861 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.7882250993908562e+00 0.0000000000000000e+00 0 0 0 +1862 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.7952961672027214e+00 0.0000000000000000e+00 0 0 0 +1863 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.7882250993908562e+00 0.0000000000000000e+00 0 0 0 +1864 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.8023672350145876e+00 0.0000000000000000e+00 0 0 0 +1865 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.8094383028264529e+00 0.0000000000000000e+00 0 0 0 +1866 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.8023672350145876e+00 0.0000000000000000e+00 0 0 0 +1867 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.8165093706383182e+00 0.0000000000000000e+00 0 0 0 +1868 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.8235804384501835e+00 0.0000000000000000e+00 0 0 0 +1869 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.8165093706383182e+00 0.0000000000000000e+00 0 0 0 +1870 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.8306515062620488e+00 0.0000000000000000e+00 0 0 0 +1872 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.8306515062620488e+00 0.0000000000000000e+00 0 0 0 +1871 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.8377225740739149e+00 0.0000000000000000e+00 0 0 0 +1873 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.8447936418857802e+00 0.0000000000000000e+00 0 0 0 +1874 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.8518647096976455e+00 0.0000000000000000e+00 0 0 0 +1875 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.8447936418857802e+00 0.0000000000000000e+00 0 0 0 +1876 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.8589357775095108e+00 0.0000000000000000e+00 0 0 0 +1877 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.8660068453213770e+00 0.0000000000000000e+00 0 0 0 +1878 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.8589357775095108e+00 0.0000000000000000e+00 0 0 0 +1879 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.8730779131332422e+00 0.0000000000000000e+00 0 0 0 +1880 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.8801489809451075e+00 0.0000000000000000e+00 0 0 0 +1881 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.8730779131332422e+00 0.0000000000000000e+00 0 0 0 +1882 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.8872200487569728e+00 0.0000000000000000e+00 0 0 0 +1883 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.8942911165688381e+00 0.0000000000000000e+00 0 0 0 +1884 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.8872200487569728e+00 0.0000000000000000e+00 0 0 0 +1885 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.9013621843807043e+00 0.0000000000000000e+00 0 0 0 +1886 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.9084332521925695e+00 0.0000000000000000e+00 0 0 0 +1887 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.9013621843807043e+00 0.0000000000000000e+00 0 0 0 +1888 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.9155043200044348e+00 0.0000000000000000e+00 0 0 0 +1889 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.9225753878163001e+00 0.0000000000000000e+00 0 0 0 +1890 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.9155043200044348e+00 0.0000000000000000e+00 0 0 0 +1891 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.9296464556281663e+00 0.0000000000000000e+00 0 0 0 +1892 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.9367175234400316e+00 0.0000000000000000e+00 0 0 0 +1893 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.9296464556281663e+00 0.0000000000000000e+00 0 0 0 +1894 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.9437885912518968e+00 0.0000000000000000e+00 0 0 0 +1895 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.9508596590637621e+00 0.0000000000000000e+00 0 0 0 +1896 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.9437885912518968e+00 0.0000000000000000e+00 0 0 0 +1897 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.9579307268756274e+00 0.0000000000000000e+00 0 0 0 +1898 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.9650017946874936e+00 0.0000000000000000e+00 0 0 0 +1899 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.9579307268756274e+00 0.0000000000000000e+00 0 0 0 +1900 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.9720728624993589e+00 0.0000000000000000e+00 0 0 0 +1901 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.9791439303112242e+00 0.0000000000000000e+00 0 0 0 +1902 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.9720728624993589e+00 0.0000000000000000e+00 0 0 0 +1903 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 6.9862149981230894e+00 0.0000000000000000e+00 0 0 0 +1904 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 6.9932860659349547e+00 0.0000000000000000e+00 0 0 0 +1905 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 6.9862149981230894e+00 0.0000000000000000e+00 0 0 0 +1906 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.0003571337468209e+00 0.0000000000000000e+00 0 0 0 +1908 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.0003571337468209e+00 0.0000000000000000e+00 0 0 0 +1907 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.0074282015586862e+00 0.0000000000000000e+00 0 0 0 +1909 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.0144992693705515e+00 0.0000000000000000e+00 0 0 0 +1910 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.0215703371824167e+00 0.0000000000000000e+00 0 0 0 +1911 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.0144992693705515e+00 0.0000000000000000e+00 0 0 0 +1912 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.0286414049942829e+00 0.0000000000000000e+00 0 0 0 +1913 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.0357124728061482e+00 0.0000000000000000e+00 0 0 0 +1914 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.0286414049942829e+00 0.0000000000000000e+00 0 0 0 +1915 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.0427835406180135e+00 0.0000000000000000e+00 0 0 0 +1916 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.0498546084298788e+00 0.0000000000000000e+00 0 0 0 +1917 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.0427835406180135e+00 0.0000000000000000e+00 0 0 0 +1918 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.0569256762417440e+00 0.0000000000000000e+00 0 0 0 +1919 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.0639967440536102e+00 0.0000000000000000e+00 0 0 0 +1920 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.0569256762417440e+00 0.0000000000000000e+00 0 0 0 +1921 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.0710678118654755e+00 0.0000000000000000e+00 0 0 0 +1922 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.0781388796773408e+00 0.0000000000000000e+00 0 0 0 +1923 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.0710678118654755e+00 0.0000000000000000e+00 0 0 0 +1924 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.0852099474892061e+00 0.0000000000000000e+00 0 0 0 +1925 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.0922810153010714e+00 0.0000000000000000e+00 0 0 0 +1926 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.0852099474892061e+00 0.0000000000000000e+00 0 0 0 +1927 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.0993520831129375e+00 0.0000000000000000e+00 0 0 0 +1928 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.1064231509248028e+00 0.0000000000000000e+00 0 0 0 +1929 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.0993520831129375e+00 0.0000000000000000e+00 0 0 0 +1930 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.1134942187366681e+00 0.0000000000000000e+00 0 0 0 +1931 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.1205652865485334e+00 0.0000000000000000e+00 0 0 0 +1932 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.1134942187366681e+00 0.0000000000000000e+00 0 0 0 +1933 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.1276363543603996e+00 0.0000000000000000e+00 0 0 0 +1934 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.1347074221722648e+00 0.0000000000000000e+00 0 0 0 +1935 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.1276363543603996e+00 0.0000000000000000e+00 0 0 0 +1936 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.1417784899841301e+00 0.0000000000000000e+00 0 0 0 +1937 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.1488495577959954e+00 0.0000000000000000e+00 0 0 0 +1938 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.1417784899841301e+00 0.0000000000000000e+00 0 0 0 +1939 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.1559206256078607e+00 0.0000000000000000e+00 0 0 0 +1940 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.1629916934197269e+00 0.0000000000000000e+00 0 0 0 +1941 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.1559206256078607e+00 0.0000000000000000e+00 0 0 0 +1942 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.1700627612315921e+00 0.0000000000000000e+00 0 0 0 +1943 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.1771338290434574e+00 0.0000000000000000e+00 0 0 0 +1944 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.1700627612315921e+00 0.0000000000000000e+00 0 0 0 +1945 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.1842048968553227e+00 0.0000000000000000e+00 0 0 0 +1946 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.1912759646671880e+00 0.0000000000000000e+00 0 0 0 +1947 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.1842048968553227e+00 0.0000000000000000e+00 0 0 0 +1948 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.1983470324790542e+00 0.0000000000000000e+00 0 0 0 +1949 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.2054181002909194e+00 0.0000000000000000e+00 0 0 0 +1950 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.1983470324790542e+00 0.0000000000000000e+00 0 0 0 +1951 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.2124891681027847e+00 0.0000000000000000e+00 0 0 0 +1952 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.2195602359146500e+00 0.0000000000000000e+00 0 0 0 +1953 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.2124891681027847e+00 0.0000000000000000e+00 0 0 0 +1954 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.2266313037265162e+00 0.0000000000000000e+00 0 0 0 +1955 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.2337023715383815e+00 0.0000000000000000e+00 0 0 0 +1956 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.2266313037265162e+00 0.0000000000000000e+00 0 0 0 +1957 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.2407734393502468e+00 0.0000000000000000e+00 0 0 0 +1958 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.2478445071621120e+00 0.0000000000000000e+00 0 0 0 +1959 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.2407734393502468e+00 0.0000000000000000e+00 0 0 0 +1960 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.2549155749739773e+00 0.0000000000000000e+00 0 0 0 +1961 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.2619866427858435e+00 0.0000000000000000e+00 0 0 0 +1962 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.2549155749739773e+00 0.0000000000000000e+00 0 0 0 +1963 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.2690577105977088e+00 0.0000000000000000e+00 0 0 0 +1964 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.2761287784095741e+00 0.0000000000000000e+00 0 0 0 +1965 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.2690577105977088e+00 0.0000000000000000e+00 0 0 0 +1966 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.2831998462214393e+00 0.0000000000000000e+00 0 0 0 +1967 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.2902709140333055e+00 0.0000000000000000e+00 0 0 0 +1968 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.2831998462214393e+00 0.0000000000000000e+00 0 0 0 +1969 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.2973419818451708e+00 0.0000000000000000e+00 0 0 0 +1970 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.3044130496570361e+00 0.0000000000000000e+00 0 0 0 +1971 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.2973419818451708e+00 0.0000000000000000e+00 0 0 0 +1972 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.3114841174689014e+00 0.0000000000000000e+00 0 0 0 +1973 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.3185551852807667e+00 0.0000000000000000e+00 0 0 0 +1974 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.3114841174689014e+00 0.0000000000000000e+00 0 0 0 +1975 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.3256262530926328e+00 0.0000000000000000e+00 0 0 0 +1976 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.3326973209044981e+00 0.0000000000000000e+00 0 0 0 +1977 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.3256262530926328e+00 0.0000000000000000e+00 0 0 0 +1978 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.3397683887163634e+00 0.0000000000000000e+00 0 0 0 +1979 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.3468394565282287e+00 0.0000000000000000e+00 0 0 0 +1980 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.3397683887163634e+00 0.0000000000000000e+00 0 0 0 +1981 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.3539105243400940e+00 0.0000000000000000e+00 0 0 0 +1982 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.3609815921519601e+00 0.0000000000000000e+00 0 0 0 +1983 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.3539105243400940e+00 0.0000000000000000e+00 0 0 0 +1984 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.3680526599638254e+00 0.0000000000000000e+00 0 0 0 +1985 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.3751237277756907e+00 0.0000000000000000e+00 0 0 0 +1986 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.3680526599638254e+00 0.0000000000000000e+00 0 0 0 +1987 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.3821947955875560e+00 0.0000000000000000e+00 0 0 0 +1988 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.3892658633994222e+00 0.0000000000000000e+00 0 0 0 +1989 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.3821947955875560e+00 0.0000000000000000e+00 0 0 0 +1990 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.3963369312112874e+00 0.0000000000000000e+00 0 0 0 +1991 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.4034079990231527e+00 0.0000000000000000e+00 0 0 0 +1992 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.3963369312112874e+00 0.0000000000000000e+00 0 0 0 +1993 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.4104790668350180e+00 0.0000000000000000e+00 0 0 0 +1994 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.4175501346468833e+00 0.0000000000000000e+00 0 0 0 +1995 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.4104790668350180e+00 0.0000000000000000e+00 0 0 0 +1996 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.4246212024587495e+00 0.0000000000000000e+00 0 0 0 +1997 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.4316922702706147e+00 0.0000000000000000e+00 0 0 0 +1998 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.4246212024587495e+00 0.0000000000000000e+00 0 0 0 +1999 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.4387633380824800e+00 0.0000000000000000e+00 0 0 0 +2000 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.4458344058943453e+00 0.0000000000000000e+00 0 0 0 +2001 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.4387633380824800e+00 0.0000000000000000e+00 0 0 0 +2002 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.4529054737062106e+00 0.0000000000000000e+00 0 0 0 +2003 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.4599765415180768e+00 0.0000000000000000e+00 0 0 0 +2004 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.4529054737062106e+00 0.0000000000000000e+00 0 0 0 +2005 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.4670476093299420e+00 0.0000000000000000e+00 0 0 0 +2006 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.4741186771418073e+00 0.0000000000000000e+00 0 0 0 +2007 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.4670476093299420e+00 0.0000000000000000e+00 0 0 0 +2008 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.4811897449536726e+00 0.0000000000000000e+00 0 0 0 +2009 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.4882608127655388e+00 0.0000000000000000e+00 0 0 0 +2010 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.4811897449536726e+00 0.0000000000000000e+00 0 0 0 +2011 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.4953318805774041e+00 0.0000000000000000e+00 0 0 0 +2013 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.4953318805774041e+00 0.0000000000000000e+00 0 0 0 +2012 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.5024029483892694e+00 0.0000000000000000e+00 0 0 0 +2014 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.5094740162011346e+00 0.0000000000000000e+00 0 0 0 +2015 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.5165450840129999e+00 0.0000000000000000e+00 0 0 0 +2016 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.5094740162011346e+00 0.0000000000000000e+00 0 0 0 +2017 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.5236161518248661e+00 0.0000000000000000e+00 0 0 0 +2018 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.5306872196367314e+00 0.0000000000000000e+00 0 0 0 +2019 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.5236161518248661e+00 0.0000000000000000e+00 0 0 0 +2020 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.5377582874485967e+00 0.0000000000000000e+00 0 0 0 +2021 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.5448293552604619e+00 0.0000000000000000e+00 0 0 0 +2022 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.5377582874485967e+00 0.0000000000000000e+00 0 0 0 +2023 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.5519004230723272e+00 0.0000000000000000e+00 0 0 0 +2024 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.5589714908841934e+00 0.0000000000000000e+00 0 0 0 +2025 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.5519004230723272e+00 0.0000000000000000e+00 0 0 0 +2026 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.5660425586960587e+00 0.0000000000000000e+00 0 0 0 +2027 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.5731136265079240e+00 0.0000000000000000e+00 0 0 0 +2028 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.5660425586960587e+00 0.0000000000000000e+00 0 0 0 +2029 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.5801846943197893e+00 0.0000000000000000e+00 0 0 0 +2030 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.5872557621316554e+00 0.0000000000000000e+00 0 0 0 +2031 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.5801846943197893e+00 0.0000000000000000e+00 0 0 0 +2032 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.5943268299435207e+00 0.0000000000000000e+00 0 0 0 +2033 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.6013978977553860e+00 0.0000000000000000e+00 0 0 0 +2034 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.5943268299435207e+00 0.0000000000000000e+00 0 0 0 +2035 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.6084689655672513e+00 0.0000000000000000e+00 0 0 0 +2036 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.6155400333791166e+00 0.0000000000000000e+00 0 0 0 +2037 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.6084689655672513e+00 0.0000000000000000e+00 0 0 0 +2038 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.6226111011909827e+00 0.0000000000000000e+00 0 0 0 +2039 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.6296821690028480e+00 0.0000000000000000e+00 0 0 0 +2040 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.6226111011909827e+00 0.0000000000000000e+00 0 0 0 +2041 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.6367532368147133e+00 0.0000000000000000e+00 0 0 0 +2042 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.6438243046265786e+00 0.0000000000000000e+00 0 0 0 +2043 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.6367532368147133e+00 0.0000000000000000e+00 0 0 0 +2044 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.6508953724384448e+00 0.0000000000000000e+00 0 0 0 +2045 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.6579664402503100e+00 0.0000000000000000e+00 0 0 0 +2046 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.6508953724384448e+00 0.0000000000000000e+00 0 0 0 +2047 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.6650375080621753e+00 0.0000000000000000e+00 0 0 0 +2049 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.6650375080621753e+00 0.0000000000000000e+00 0 0 0 +2048 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.6721085758740406e+00 0.0000000000000000e+00 0 0 0 +2050 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.6791796436859059e+00 0.0000000000000000e+00 0 0 0 +2051 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.6862507114977721e+00 0.0000000000000000e+00 0 0 0 +2052 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.6791796436859059e+00 0.0000000000000000e+00 0 0 0 +2053 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.6933217793096373e+00 0.0000000000000000e+00 0 0 0 +2054 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.7003928471215026e+00 0.0000000000000000e+00 0 0 0 +2055 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.6933217793096373e+00 0.0000000000000000e+00 0 0 0 +2056 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.7074639149333679e+00 0.0000000000000000e+00 0 0 0 +2057 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.7145349827452332e+00 0.0000000000000000e+00 0 0 0 +2058 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.7074639149333679e+00 0.0000000000000000e+00 0 0 0 +2059 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.7216060505570994e+00 0.0000000000000000e+00 0 0 0 +2060 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.7286771183689646e+00 0.0000000000000000e+00 0 0 0 +2061 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.7216060505570994e+00 0.0000000000000000e+00 0 0 0 +2062 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.7357481861808299e+00 0.0000000000000000e+00 0 0 0 +2063 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.7428192539926952e+00 0.0000000000000000e+00 0 0 0 +2064 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.7357481861808299e+00 0.0000000000000000e+00 0 0 0 +2065 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.7498903218045614e+00 0.0000000000000000e+00 0 0 0 +2066 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.7569613896164267e+00 0.0000000000000000e+00 0 0 0 +2067 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.7498903218045614e+00 0.0000000000000000e+00 0 0 0 +2068 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.7640324574282920e+00 0.0000000000000000e+00 0 0 0 +2069 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.7711035252401572e+00 0.0000000000000000e+00 0 0 0 +2070 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.7640324574282920e+00 0.0000000000000000e+00 0 0 0 +2071 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.7781745930520225e+00 0.0000000000000000e+00 0 0 0 +2072 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.7852456608638887e+00 0.0000000000000000e+00 0 0 0 +2073 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.7781745930520225e+00 0.0000000000000000e+00 0 0 0 +2074 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.7923167286757540e+00 0.0000000000000000e+00 0 0 0 +2075 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.7993877964876193e+00 0.0000000000000000e+00 0 0 0 +2076 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.7923167286757540e+00 0.0000000000000000e+00 0 0 0 +2077 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.8064588642994845e+00 0.0000000000000000e+00 0 0 0 +2078 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.8135299321113498e+00 0.0000000000000000e+00 0 0 0 +2079 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.8064588642994845e+00 0.0000000000000000e+00 0 0 0 +2080 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.8206009999232160e+00 0.0000000000000000e+00 0 0 0 +2081 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.8276720677350813e+00 0.0000000000000000e+00 0 0 0 +2082 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.8206009999232160e+00 0.0000000000000000e+00 0 0 0 +2083 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.8347431355469466e+00 0.0000000000000000e+00 0 0 0 +2084 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.8418142033588119e+00 0.0000000000000000e+00 0 0 0 +2085 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.8347431355469466e+00 0.0000000000000000e+00 0 0 0 +2086 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.8488852711706780e+00 0.0000000000000000e+00 0 0 0 +2087 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.8559563389825433e+00 0.0000000000000000e+00 0 0 0 +2088 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.8488852711706780e+00 0.0000000000000000e+00 0 0 0 +2089 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.8630274067944086e+00 0.0000000000000000e+00 0 0 0 +2090 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.8700984746062739e+00 0.0000000000000000e+00 0 0 0 +2091 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.8630274067944086e+00 0.0000000000000000e+00 0 0 0 +2092 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.8771695424181392e+00 0.0000000000000000e+00 0 0 0 +2093 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.8842406102300053e+00 0.0000000000000000e+00 0 0 0 +2094 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.8771695424181392e+00 0.0000000000000000e+00 0 0 0 +2095 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.8913116780418706e+00 0.0000000000000000e+00 0 0 0 +2096 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.8983827458537359e+00 0.0000000000000000e+00 0 0 0 +2097 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.8913116780418706e+00 0.0000000000000000e+00 0 0 0 +2098 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.9054538136656012e+00 0.0000000000000000e+00 0 0 0 +2099 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.9125248814774674e+00 0.0000000000000000e+00 0 0 0 +2100 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.9054538136656012e+00 0.0000000000000000e+00 0 0 0 +2101 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.9195959492893326e+00 0.0000000000000000e+00 0 0 0 +2102 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.9266670171011979e+00 0.0000000000000000e+00 0 0 0 +2103 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.9195959492893326e+00 0.0000000000000000e+00 0 0 0 +2104 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.9337380849130632e+00 0.0000000000000000e+00 0 0 0 +2105 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.9408091527249285e+00 0.0000000000000000e+00 0 0 0 +2106 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.9337380849130632e+00 0.0000000000000000e+00 0 0 0 +2107 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.9478802205367947e+00 0.0000000000000000e+00 0 0 0 +2108 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.9549512883486599e+00 0.0000000000000000e+00 0 0 0 +2109 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.9478802205367947e+00 0.0000000000000000e+00 0 0 0 +2110 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.9620223561605252e+00 0.0000000000000000e+00 0 0 0 +2111 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.9690934239723905e+00 0.0000000000000000e+00 0 0 0 +2112 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.9620223561605252e+00 0.0000000000000000e+00 0 0 0 +2113 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.9761644917842558e+00 0.0000000000000000e+00 0 0 0 +2114 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2115 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.9761644917842558e+00 0.0000000000000000e+00 0 0 0 +2116 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596427e-02 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2117 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5355339059327376e-02 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2118 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.9497474683058325e-02 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2119 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3639610306789274e-02 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2120 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7781745930520230e-02 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2121 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1923881554251186e-02 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2122 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0606601717798213e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2123 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2020815280171308e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2124 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3435028842544403e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2125 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4849242404917498e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2126 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6263455967290594e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2256 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2257 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654753e-03 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2258 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e-02 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2259 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596427e-02 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2260 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8284271247461901e-02 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2261 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5355339059327376e-02 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2262 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2426406871192854e-02 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2263 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.9497474683058325e-02 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2264 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6568542494923803e-02 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2265 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3639610306789274e-02 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2266 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654752e-02 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2267 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7781745930520230e-02 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2268 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4852813742385708e-02 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2269 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1923881554251186e-02 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2270 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.8994949366116650e-02 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2271 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0606601717798213e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2272 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1313708498984761e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2273 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2020815280171308e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2274 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2727922061357855e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2275 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3435028842544403e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2276 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730950e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2277 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4849242404917498e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2278 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5556349186104046e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2279 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6263455967290594e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2127 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7677669529663689e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2128 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9091883092036782e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2129 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0506096654409878e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2130 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782973e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2131 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3334523779156069e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2132 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4748737341529164e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2133 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6162950903902260e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2134 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7577164466275356e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2135 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8991378028648451e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2136 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0405591591021541e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2137 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1819805153394637e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2138 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3234018715767732e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2280 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6970562748477142e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2281 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7677669529663689e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2282 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8384776310850237e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2283 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9091883092036782e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2284 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9798989873223330e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2285 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0506096654409878e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2286 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596426e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2287 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782973e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2288 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2289 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3334523779156069e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2290 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4041630560342617e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2291 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4748737341529164e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2292 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5455844122715710e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2293 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6162950903902260e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2294 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6870057685088805e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2295 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7577164466275356e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2296 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8284271247461901e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2297 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8991378028648451e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2298 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9698484809834996e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2299 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0405591591021541e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2300 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1112698372208092e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2301 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1819805153394637e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2302 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2526911934581187e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2303 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3234018715767732e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2139 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4648232278140828e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2140 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6062445840513924e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2141 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7476659402887019e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2142 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260115e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2143 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0305086527633210e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2144 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1719300090006306e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2145 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.3133513652379402e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2146 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4547727214752497e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2147 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5961940777125587e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2148 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7376154339498683e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2149 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8790367901871778e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2304 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3941125496954283e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2305 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4648232278140828e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2306 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5355339059327379e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2307 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6062445840513924e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2308 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6769552621700474e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2309 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7476659402887019e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2310 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073564e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2311 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260115e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2312 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446660e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2313 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.0305086527633210e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2314 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1012193308819755e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2315 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.1719300090006306e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2316 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.2426406871192851e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2317 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.3133513652379402e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2318 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.3840620433565947e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2319 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.4547727214752497e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2320 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5254833995939042e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2321 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.5961940777125587e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2322 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.6669047558312138e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2323 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.7376154339498683e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2324 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8083261120685233e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2325 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.8790367901871778e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2326 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 4.9497474683058329e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2150 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0204581464244880e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2151 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1618795026617970e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2152 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3033008588991060e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2153 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4447222151364161e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2154 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5861435713737251e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2155 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7275649276110352e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2156 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8689862838483442e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2157 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0104076400856543e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2158 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.1518289963229633e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2159 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2932503525602734e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2160 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4346717087975824e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2161 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5760930650348925e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2327 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0204581464244880e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2328 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.0911688245431419e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2329 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.1618795026617970e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2330 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.2325901807804520e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2331 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3033008588991060e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2332 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.3740115370177610e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2333 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.4447222151364161e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2334 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5154328932550711e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2335 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.5861435713737251e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2336 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.6568542494923801e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2337 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7275649276110352e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2338 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.7982756057296903e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2339 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.8689862838483442e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2340 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 5.9396969619669993e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2341 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0104076400856543e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2342 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.0811183182043083e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2343 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.1518289963229633e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2344 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2225396744416184e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2345 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.2932503525602734e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2346 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.3639610306789274e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2347 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.4346717087975824e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2348 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5053823869162375e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2349 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.5760930650348925e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2350 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.6468037431535465e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2162 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7175144212722016e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2163 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8589357775095106e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2164 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0003571337468207e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2165 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1417784899841297e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2166 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2831998462214398e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2167 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.4246212024587488e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2168 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5660425586960589e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2169 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7074639149333679e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2170 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8488852711706780e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2171 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9903066274079870e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2172 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1317279836452971e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2173 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2731493398826061e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2351 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7175144212722016e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2352 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.7882250993908566e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2353 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.8589357775095106e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2354 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 6.9296464556281656e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2355 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0003571337468207e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2356 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.0710678118654757e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2357 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.1417784899841297e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2358 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2124891681027847e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2359 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.2831998462214398e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2360 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.3539105243400948e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2361 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.4246212024587488e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2362 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.4953318805774038e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2363 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.5660425586960589e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2364 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.6367532368147129e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2365 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7074639149333679e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2366 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.7781745930520230e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2367 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.8488852711706780e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2368 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9195959492893320e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2369 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 7.9903066274079870e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2370 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.0610173055266421e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2371 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.1317279836452971e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2372 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2024386617639511e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2373 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.2731493398826061e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2174 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4145706961199151e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2175 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5559920523572253e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2176 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.6974134085945343e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2177 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8388347648318444e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2178 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9802561210691534e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2179 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1216774773064635e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2180 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2630988335437725e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2181 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4045201897810826e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2182 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5459415460183916e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2183 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6873629022557017e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2184 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.8287842584930107e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2185 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.9702056147303197e-01 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2374 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.3438600180012612e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2375 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4145706961199151e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2376 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.4852813742385702e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2377 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.5559920523572253e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2378 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.6267027304758803e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2379 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.6974134085945343e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2380 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.7681240867131893e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2381 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.8388347648318444e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2382 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9095454429504994e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2383 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 8.9802561210691534e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2384 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.0509667991878084e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2385 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1216774773064635e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2386 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.1923881554251174e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2387 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.2630988335437725e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2388 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.3338095116624276e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2389 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4045201897810826e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2390 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.4752308678997366e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2391 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.5459415460183916e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2392 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6166522241370467e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2393 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.6873629022557017e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2394 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.7580735803743557e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2395 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.8287842584930107e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2396 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.8994949366116658e-01 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2397 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 9.9702056147303197e-01 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2186 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0111626970967629e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2187 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0253048327204939e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2188 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0394469683442249e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2189 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0535891039679559e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2190 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0677312395916867e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2191 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0818733752154177e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2192 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0960155108391487e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2193 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1101576464628797e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2194 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1242997820866105e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2195 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1384419177103415e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2196 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1525840533340725e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2197 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1667261889578033e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2398 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0040916292848976e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2399 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0111626970967629e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2400 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0182337649086284e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2401 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0253048327204939e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2402 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0323759005323594e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2403 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0394469683442249e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2404 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0465180361560904e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2405 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0535891039679559e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2406 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0606601717798212e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2407 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0677312395916867e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2408 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0748023074035522e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2409 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0818733752154177e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2410 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0889444430272832e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2411 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.0960155108391487e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2412 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1030865786510142e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2413 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1101576464628797e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2414 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1172287142747450e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2415 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1242997820866105e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2416 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1313708498984760e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2417 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1384419177103415e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2418 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1455129855222070e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2419 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1525840533340725e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2420 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1596551211459381e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2421 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1667261889578033e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2198 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1808683245815343e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2199 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1950104602052654e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2200 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2091525958289964e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2201 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2232947314527272e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2202 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2374368670764582e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2203 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2515790027001892e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2204 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2657211383239202e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2205 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2798632739476510e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2206 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2940054095713820e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2207 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3081475451951130e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2208 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3222896808188438e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2422 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1737972567696688e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2423 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1808683245815343e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2424 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1879393923933999e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2425 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.1950104602052654e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2426 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2020815280171309e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2427 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2091525958289964e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2428 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2162236636408617e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2429 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2232947314527272e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2430 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2303657992645927e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2431 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2374368670764582e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2432 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2445079348883237e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2433 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2515790027001892e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2434 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2586500705120547e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2435 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2657211383239202e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2436 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2727922061357855e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2437 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2798632739476510e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2438 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2869343417595165e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2439 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.2940054095713820e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2440 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3010764773832475e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2441 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3081475451951130e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2442 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3152186130069785e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2443 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3222896808188438e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2444 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3293607486307093e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2209 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3364318164425748e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2210 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3505739520663058e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2211 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3647160876900368e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2212 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3788582233137676e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2213 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3930003589374986e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2214 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4071424945612296e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2215 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4212846301849607e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2216 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4354267658086914e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2217 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4495689014324225e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2218 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4637110370561535e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2219 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4778531726798843e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2220 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4919953083036153e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2445 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3364318164425748e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2446 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3435028842544403e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2447 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3505739520663058e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2448 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3576450198781713e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2449 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3647160876900368e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2450 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3717871555019021e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2451 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3788582233137676e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2452 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3859292911256331e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2453 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.3930003589374986e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2454 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4000714267493641e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2455 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4071424945612296e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2456 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4142135623730951e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2457 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4212846301849607e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2458 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4283556979968259e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2459 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4354267658086914e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2460 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4424978336205569e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2461 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4495689014324225e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2462 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4566399692442880e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2463 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4637110370561535e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2464 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4707821048680190e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2465 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4778531726798843e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2466 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4849242404917498e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2467 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4919953083036153e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2468 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.4990663761154808e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2221 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5061374439273463e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2222 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5202795795510773e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2223 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5344217151748081e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2224 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5485638507985391e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2225 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5627059864222701e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2226 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5768481220460011e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2227 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5909902576697319e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2228 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6051323932934629e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2229 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6192745289171939e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2230 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6334166645409247e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2231 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6475588001646557e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2232 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6617009357883867e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2469 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5061374439273463e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2470 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5132085117392118e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2471 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5202795795510773e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2472 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5273506473629426e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2473 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5344217151748081e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2474 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5414927829866736e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2475 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5485638507985391e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2476 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5556349186104046e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2477 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5627059864222701e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2478 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5697770542341356e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2479 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5768481220460011e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2480 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5839191898578664e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2481 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5909902576697319e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2482 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.5980613254815974e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2483 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6051323932934629e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2484 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6122034611053284e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2485 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6192745289171939e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2486 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6263455967290594e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2487 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6334166645409247e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2488 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6404877323527902e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2489 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6475588001646557e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2490 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6546298679765212e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2491 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6617009357883867e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2233 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6758430714121177e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2234 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6899852070358485e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2235 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7041273426595795e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2236 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7182694782833106e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2237 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7324116139070416e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2238 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7465537495307724e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2239 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7606958851545034e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2240 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7748380207782344e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2241 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7889801564019652e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2242 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8031222920256962e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2243 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8172644276494272e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2244 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8314065632731582e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2492 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6687720036002522e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2493 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6758430714121177e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2494 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6829141392239830e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2495 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6899852070358485e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2496 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.6970562748477140e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2497 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7041273426595795e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2498 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7111984104714451e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2499 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7182694782833106e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2500 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7253405460951761e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2501 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7324116139070416e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2502 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7394826817189069e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2503 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7465537495307724e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2504 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7536248173426379e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2505 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7606958851545034e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2506 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7677669529663689e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2507 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7748380207782344e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2508 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7819090885900999e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2509 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7889801564019652e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2510 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.7960512242138307e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2511 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8031222920256962e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2512 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8101933598375617e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2513 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8172644276494272e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2514 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8243354954612927e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2515 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8314065632731582e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2245 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8455486988968890e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2246 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8596908345206200e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2247 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8738329701443510e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2248 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8879751057680818e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2249 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9021172413918128e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2250 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9162593770155438e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2251 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9304015126392748e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2252 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9445436482630056e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2253 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9586857838867366e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2254 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9728279195104677e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2255 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9869700551341987e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +2516 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8384776310850235e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2517 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8455486988968890e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2518 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8526197667087545e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2519 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8596908345206200e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2520 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8667619023324855e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2521 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8738329701443510e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2522 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8809040379562165e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2523 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8879751057680818e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2524 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.8950461735799473e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2525 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9021172413918128e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2526 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9091883092036783e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2527 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9162593770155438e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2528 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9233304448274093e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2529 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9304015126392748e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2530 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9374725804511403e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2531 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9445436482630056e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2532 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9516147160748711e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2533 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9586857838867366e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2534 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9657568516986021e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2535 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9728279195104677e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2536 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9798989873223332e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2537 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9869700551341987e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +2538 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 1.9940411229460639e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +2539 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0011121907579295e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2540 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0081832585697952e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2541 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0152543263816605e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2542 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0223253941935257e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2543 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0293964620053915e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2544 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0364675298172568e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2545 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0435385976291225e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2546 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0506096654409878e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2547 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0576807332528535e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2548 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0647518010647188e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2549 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0718228688765841e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2550 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0788939366884498e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2551 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0859650045003151e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2552 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0930360723121808e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2553 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1001071401240461e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2554 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2555 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2556 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2557 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2558 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2559 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2560 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2561 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2562 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2822 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0081832585697952e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2823 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0223253941935257e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2824 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0364675298172568e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2825 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0506096654409878e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2826 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0647518010647188e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2827 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0788939366884498e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2828 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0930360723121808e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2829 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2830 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2831 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2832 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2833 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5077 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0081832585697952e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5078 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0152543263816605e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5079 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0223253941935257e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5080 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0293964620053915e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5081 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0364675298172568e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5082 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0435385976291225e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5083 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0506096654409878e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5084 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0576807332528535e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5085 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0647518010647188e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5086 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0718228688765841e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5087 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0788939366884498e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5088 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0859650045003151e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5089 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0930360723121808e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5090 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1001071401240461e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5091 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5092 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5093 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5094 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5095 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5096 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5097 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5098 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5099 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5119 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0223253941935257e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5120 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0293964620053915e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5121 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0364675298172568e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5122 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0435385976291225e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5123 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0506096654409878e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5124 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0576807332528535e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5125 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0647518010647188e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5126 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0718228688765841e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5127 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0788939366884498e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5128 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0859650045003151e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5129 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0930360723121808e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5130 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1001071401240461e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5131 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5132 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5133 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5134 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5135 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5136 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5137 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5138 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5139 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5159 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0364675298172568e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5160 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0435385976291225e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5161 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0506096654409878e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5162 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0576807332528535e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5163 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0647518010647188e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5164 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0718228688765841e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5165 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0788939366884498e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5166 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0859650045003151e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5167 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0930360723121808e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5168 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1001071401240461e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5169 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5170 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5171 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5172 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5173 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5174 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5175 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5176 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5177 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5197 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0506096654409878e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5198 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0576807332528535e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5199 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0647518010647188e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5200 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0718228688765841e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5201 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0788939366884498e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5202 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0859650045003151e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5203 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0930360723121808e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5204 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1001071401240461e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5205 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5206 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5207 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5208 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5209 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5210 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5211 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5212 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5213 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5233 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0647518010647188e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5234 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0718228688765841e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5235 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0788939366884498e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5236 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0859650045003151e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5237 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0930360723121808e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5238 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1001071401240461e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5239 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5240 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5241 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5242 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5243 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5244 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5245 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5246 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5247 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5267 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0788939366884498e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5268 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0859650045003151e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5269 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0930360723121808e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5270 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1001071401240461e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5271 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5272 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5273 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5274 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5275 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5276 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5277 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5278 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5279 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5299 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0930360723121808e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5300 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1001071401240461e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5301 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5302 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5303 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5304 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5305 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5306 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5307 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5308 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5309 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5329 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5330 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5331 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5332 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5333 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5334 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5335 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5336 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5337 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5357 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5358 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5359 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5360 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5361 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5362 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5363 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5383 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5384 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5385 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5386 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5387 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5407 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5408 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5409 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5429 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +2563 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2564 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2565 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2566 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2567 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2568 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2569 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2570 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2571 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2572 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2573 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2574 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2575 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2576 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2577 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2578 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2579 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2580 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2581 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2582 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3051681066681451e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2583 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3122391744800104e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2584 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3193102422918761e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2585 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3263813101037414e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2586 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3334523779156067e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2834 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2835 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2836 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2837 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2838 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2839 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2840 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2841 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2842 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2843 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3051681066681451e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2844 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3193102422918761e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2845 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3334523779156067e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5100 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5101 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5102 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5103 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5104 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5105 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5106 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5107 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5108 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5109 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5110 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5111 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5112 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5113 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5114 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5115 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5116 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5117 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5118 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5140 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5141 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5142 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5143 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5144 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5145 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5146 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5147 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5148 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5149 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5150 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5151 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5152 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5153 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5154 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5155 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5156 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5157 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5158 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5178 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5179 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5180 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5181 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5182 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5183 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5184 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5185 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5186 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5187 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5188 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5189 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5190 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5191 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5192 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5193 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5194 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5195 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5196 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5214 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5215 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5216 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5217 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5218 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5219 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5220 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5221 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5222 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5223 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5224 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5225 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5226 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5227 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5228 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5229 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5230 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5231 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5232 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5248 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5249 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5250 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5251 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5252 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5253 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5254 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5255 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5256 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5257 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5258 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5259 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5260 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5261 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5262 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5263 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5264 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5265 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5266 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5280 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5281 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5282 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5283 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5284 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5285 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5286 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5287 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5288 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5289 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5290 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5291 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5292 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5293 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5294 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5295 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5296 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5297 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5298 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5310 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5311 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5312 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5313 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5314 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5315 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5316 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5317 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5318 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5319 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5320 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5321 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5322 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5323 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5324 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5325 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5326 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5327 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5328 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5338 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5339 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5340 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5341 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5342 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5343 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5344 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5345 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5346 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5347 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5348 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5349 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5350 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5351 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5352 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5353 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5354 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5355 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5356 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5364 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5365 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5366 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5367 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5368 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5369 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5370 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5371 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5372 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5373 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5374 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5375 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5376 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5377 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5378 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5379 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5380 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5381 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5382 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5388 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5389 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5390 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5391 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5392 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5393 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5394 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5395 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5396 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5397 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5398 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5399 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5400 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5401 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5402 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5403 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5404 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5405 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5406 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5410 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5411 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5412 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5413 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5414 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5415 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5416 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5417 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5418 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5419 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5420 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5421 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5422 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5423 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5424 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5425 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5426 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5427 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5428 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5430 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5431 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5432 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5433 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5434 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5435 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5436 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5437 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5438 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5439 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5440 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5441 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5442 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5443 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5444 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5445 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5446 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5447 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5448 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +2587 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3405234457274724e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2588 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3475945135393377e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2589 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3546655813512034e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2590 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3617366491630687e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2591 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3688077169749344e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2592 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3758787847867997e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2593 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3829498525986650e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2594 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3900209204105307e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2595 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3970919882223960e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2596 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4041630560342617e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2597 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4112341238461270e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2598 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4183051916579927e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2599 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4253762594698580e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2600 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4324473272817233e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2601 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4395183950935890e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2602 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4465894629054543e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2603 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4536605307173200e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2604 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4607315985291853e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2605 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4678026663410511e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2606 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4748737341529163e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2607 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4819448019647821e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2608 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4890158697766473e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2609 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4960869375885126e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2846 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3475945135393377e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2847 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3617366491630687e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2848 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3758787847867997e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2849 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3900209204105307e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2850 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4041630560342617e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2851 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4183051916579927e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2852 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4324473272817233e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2853 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4465894629054543e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2854 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4607315985291853e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2855 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4748737341529163e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2856 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4890158697766473e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2610 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5031580054003784e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2611 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5102290732122436e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2612 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5173001410241094e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2613 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5243712088359747e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2614 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5314422766478404e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2615 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5385133444597057e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2616 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5455844122715710e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2617 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5526554800834367e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2618 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5597265478953020e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2619 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5667976157071677e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2620 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5738686835190330e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2621 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5809397513308987e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2622 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5880108191427640e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2623 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5950818869546293e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2624 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6021529547664950e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2625 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6092240225783603e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2626 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6162950903902260e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2627 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6233661582020913e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2628 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6304372260139570e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2629 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6375082938258223e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2630 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6445793616376876e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2631 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6516504294495533e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2632 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6587214972614186e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2633 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6657925650732843e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2857 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5031580054003784e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2858 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5173001410241094e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2859 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5314422766478404e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2860 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5455844122715710e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2861 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5597265478953020e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2862 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5738686835190330e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2863 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5880108191427640e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2864 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6021529547664950e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2865 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6162950903902260e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2866 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6304372260139570e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2867 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6445793616376876e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2868 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6587214972614186e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2634 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6728636328851496e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2635 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6799347006970153e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2636 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6870057685088806e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2637 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6940768363207459e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2638 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7011479041326116e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2639 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7082189719444769e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2640 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7152900397563426e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2641 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7223611075682079e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2642 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7294321753800737e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2643 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7365032431919389e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2644 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7435743110038042e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2645 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7506453788156700e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2646 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7577164466275352e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2647 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7647875144394010e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2648 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7718585822512662e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2649 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7789296500631320e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2650 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7860007178749973e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2651 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7930717856868625e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2652 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8001428534987283e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2653 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8072139213105936e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2654 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8142849891224593e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2655 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8213560569343246e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2656 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8284271247461903e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2869 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6728636328851496e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2870 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6870057685088806e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2871 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7011479041326116e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2872 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7152900397563426e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2873 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7294321753800737e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2874 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7435743110038042e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2875 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7577164466275352e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2876 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7718585822512662e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2877 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7860007178749973e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2878 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8001428534987283e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2879 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8142849891224593e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2880 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8284271247461903e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2657 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8354981925580556e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2658 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8425692603699213e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2659 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8496403281817866e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2660 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8567113959936519e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2661 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8637824638055176e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2662 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8708535316173829e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2663 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8779245994292486e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2664 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8849956672411139e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2665 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8920667350529796e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2666 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8991378028648449e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2667 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9062088706767102e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2668 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9132799384885759e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2669 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9203510063004412e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2670 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9274220741123069e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2671 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9344931419241722e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2672 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9415642097360379e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2673 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9486352775479032e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2674 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9557063453597685e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2675 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9627774131716342e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2676 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9698484809834995e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2677 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9769195487953652e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2678 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9839906166072305e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2679 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9910616844190963e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2680 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9981327522309615e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2881 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8425692603699213e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2882 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8567113959936519e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2883 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8708535316173829e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2884 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8849956672411139e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2885 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8991378028648449e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2886 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9132799384885759e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2887 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9274220741123069e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2888 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9415642097360379e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2889 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9557063453597685e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2890 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9698484809834995e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2891 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9839906166072305e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2892 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9981327522309615e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2681 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0052038200428268e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2682 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0122748878546926e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2683 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0193459556665578e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2684 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0264170234784236e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2685 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0334880912902888e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2686 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0405591591021546e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2687 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0476302269140199e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2688 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0547012947258851e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2689 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0617723625377509e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2690 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0688434303496162e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2691 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0759144981614819e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2692 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0829855659733472e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2693 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0900566337852129e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2694 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0971277015970782e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2695 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1041987694089435e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2696 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1112698372208092e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2697 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1183409050326745e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2698 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1254119728445402e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2699 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1324830406564055e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2700 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1395541084682712e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2701 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1466251762801365e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2702 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1536962440920022e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2703 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1607673119038675e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2893 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0122748878546926e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2894 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0264170234784236e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2895 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0405591591021546e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2896 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0547012947258851e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2897 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0688434303496162e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2898 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0829855659733472e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2899 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0971277015970782e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2900 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1112698372208092e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2901 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1254119728445402e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2902 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1395541084682712e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2903 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1536962440920022e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2704 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1678383797157328e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2705 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1749094475275985e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2706 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1819805153394638e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2707 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1890515831513295e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2708 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1961226509631948e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2709 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2031937187750605e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2710 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2102647865869258e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2711 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2173358543987911e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2712 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2244069222106568e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2713 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2314779900225221e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2714 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2385490578343878e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2715 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2456201256462531e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2716 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2526911934581189e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2717 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2597622612699841e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2718 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2668333290818494e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2719 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2739043968937152e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2720 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2809754647055804e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2721 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2880465325174462e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2722 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2951176003293114e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2723 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3021886681411772e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2724 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3092597359530425e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2725 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3163308037649077e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2726 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3234018715767735e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2727 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3304729393886388e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2904 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1678383797157328e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2905 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1819805153394638e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2906 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1961226509631948e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2907 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2102647865869258e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2908 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2244069222106568e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2909 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2385490578343878e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2910 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2526911934581189e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2911 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2668333290818494e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2912 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2809754647055804e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2913 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2951176003293114e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2914 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3092597359530425e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2915 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3234018715767735e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2728 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3375440072005045e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2729 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3446150750123698e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2730 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3516861428242355e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2731 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3587572106361008e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2732 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3658282784479661e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2733 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3728993462598318e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2734 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3799704140716971e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2735 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3870414818835628e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2736 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3941125496954281e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2737 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4011836175072938e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2738 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4082546853191591e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2739 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4153257531310244e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2740 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4223968209428901e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2741 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4294678887547554e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2742 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4365389565666211e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2743 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4436100243784864e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2744 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4506810921903521e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2745 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4577521600022174e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2746 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4648232278140831e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2747 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4718942956259484e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2748 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4789653634378137e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2749 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4860364312496794e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2750 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4931074990615447e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2751 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5001785668734104e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2916 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3375440072005045e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2917 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3516861428242355e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2918 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3658282784479661e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2919 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3799704140716971e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2920 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3941125496954281e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2921 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4082546853191591e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2922 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4223968209428901e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2923 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4365389565666211e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2924 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4506810921903521e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2925 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4648232278140831e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2926 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4789653634378137e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2927 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4931074990615447e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2752 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5072496346852757e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2753 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5143207024971415e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2754 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5213917703090067e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2755 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5284628381208720e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2756 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5355339059327378e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2757 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5426049737446030e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2758 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5496760415564688e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2759 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5567471093683340e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2760 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5638181771801998e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2761 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5708892449920651e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2762 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5779603128039303e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2763 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5850313806157961e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2764 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5921024484276614e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2765 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5991735162395271e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2766 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6062445840513924e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2767 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6133156518632581e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2768 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6203867196751234e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2769 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6274577874869887e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2770 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6345288552988544e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2771 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6415999231107197e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2772 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6486709909225854e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2773 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6557420587344507e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2774 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6628131265463164e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2928 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5072496346852757e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2929 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5213917703090067e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2930 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5355339059327378e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2931 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5496760415564688e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2932 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5638181771801998e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2933 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5779603128039303e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2934 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5921024484276614e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2935 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6062445840513924e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2936 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6203867196751234e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2937 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6345288552988544e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2938 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6486709909225854e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2939 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6628131265463164e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2775 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6698841943581817e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2776 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6769552621700470e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2777 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6840263299819127e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2778 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6910973977937780e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2779 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6981684656056437e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2780 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7052395334175090e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2781 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7123106012293747e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2782 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7193816690412400e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2783 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7264527368531053e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2784 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7335238046649710e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2785 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7405948724768363e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2786 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7476659402887020e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2787 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7547370081005673e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2788 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7618080759124330e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2789 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7688791437242983e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2790 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7759502115361636e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2791 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7830212793480293e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2792 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7900923471598946e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2793 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7971634149717604e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2794 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2795 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2796 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2797 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2798 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2940 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6769552621700470e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2941 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6910973977937780e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2942 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7052395334175090e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2943 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7193816690412400e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2944 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7335238046649710e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2945 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7476659402887020e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2946 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7618080759124330e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2947 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7759502115361636e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2948 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7900923471598946e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2949 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2950 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2951 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5539 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7052395334175090e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5540 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7123106012293747e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5541 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7193816690412400e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5542 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7264527368531053e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5543 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7335238046649710e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5544 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7405948724768363e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5545 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7476659402887020e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5546 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7547370081005673e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5547 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7618080759124330e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5548 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7688791437242983e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5549 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7759502115361636e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5550 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7830212793480293e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5551 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7900923471598946e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5552 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7971634149717604e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5553 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5554 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5555 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5556 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5557 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5581 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7193816690412400e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5582 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7264527368531053e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5583 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7335238046649710e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5584 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7405948724768363e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5585 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7476659402887020e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5586 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7547370081005673e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5587 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7618080759124330e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5588 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7688791437242983e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5589 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7759502115361636e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5590 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7830212793480293e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5591 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7900923471598946e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5592 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7971634149717604e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5593 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5594 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5595 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5596 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5597 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5621 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7335238046649710e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5622 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7405948724768363e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5623 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7476659402887020e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5624 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7547370081005673e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5625 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7618080759124330e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5626 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7688791437242983e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5627 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7759502115361636e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5628 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7830212793480293e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5629 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7900923471598946e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5630 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7971634149717604e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5631 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5632 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5633 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5634 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5635 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5659 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7476659402887020e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5660 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7547370081005673e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5661 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7618080759124330e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5662 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7688791437242983e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5663 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7759502115361636e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5664 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7830212793480293e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5665 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7900923471598946e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5666 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7971634149717604e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5667 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5668 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5669 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5670 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5671 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5695 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7618080759124330e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5696 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7688791437242983e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5697 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7759502115361636e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5698 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7830212793480293e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5699 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7900923471598946e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5700 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7971634149717604e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5701 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5702 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5703 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5704 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5705 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5729 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7759502115361636e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5730 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7830212793480293e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5731 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7900923471598946e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5732 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7971634149717604e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5733 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5734 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5735 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5736 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5737 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5761 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7900923471598946e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5762 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7971634149717604e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5763 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5764 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5765 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5766 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5767 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5791 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5792 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5793 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5794 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5795 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5819 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5820 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5821 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5845 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +2799 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2800 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2801 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2802 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2803 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2804 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2805 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2806 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2807 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2808 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2809 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2810 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2811 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2812 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2813 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2814 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2815 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2816 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2817 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2818 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2819 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2820 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +2821 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +2952 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2953 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2954 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2955 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2956 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2957 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2958 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2959 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2960 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2961 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2962 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +2963 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +2964 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +2965 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +2966 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +2967 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +2968 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +2969 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +2970 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +2971 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +2972 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +2973 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +2974 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +2975 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +2976 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +2977 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +2978 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +2979 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +2980 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +2981 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +2982 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +2983 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +2984 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +2985 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +2986 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +2987 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +2988 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +2989 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +2990 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +2991 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +2992 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +2993 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +2994 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5558 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5559 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5560 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5561 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5562 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5563 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5564 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5565 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5566 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5567 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5568 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5569 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5570 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5571 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5572 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5573 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5574 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5575 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5576 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5577 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5578 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5579 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 +5580 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.0710678118654753e-03 0.0000000000000000e+00 0 0 0 +5598 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5599 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5600 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5601 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5602 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5603 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5604 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5605 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5606 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5607 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5608 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5609 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5610 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5611 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5612 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5613 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5614 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5615 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5616 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5617 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5618 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5619 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4142135623730951e-02 0.0000000000000000e+00 0 0 0 +5620 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1213203435596427e-02 0.0000000000000000e+00 0 0 0 +5636 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5637 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5638 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5639 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5640 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5641 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5642 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5643 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5644 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5645 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5646 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5647 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5648 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5649 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5650 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5651 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5652 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5653 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5654 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5655 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5656 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5657 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8284271247461901e-02 0.0000000000000000e+00 0 0 0 +5658 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.5355339059327376e-02 0.0000000000000000e+00 0 0 0 +5672 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5673 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5674 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5675 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5676 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5677 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5678 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5679 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5680 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5681 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5682 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5683 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5684 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5685 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5686 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5687 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5688 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5689 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5690 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5691 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5692 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5693 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2426406871192854e-02 0.0000000000000000e+00 0 0 0 +5694 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.9497474683058325e-02 0.0000000000000000e+00 0 0 0 +5706 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5707 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5708 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5709 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5710 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5711 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5712 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5713 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5714 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5715 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5716 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5717 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5718 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5719 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5720 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5721 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5722 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5723 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5724 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5725 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5726 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5727 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6568542494923803e-02 0.0000000000000000e+00 0 0 0 +5728 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.3639610306789274e-02 0.0000000000000000e+00 0 0 0 +5738 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5739 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5740 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5741 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5742 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5743 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5744 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5745 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5746 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5747 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5748 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5749 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5750 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5751 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5752 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5753 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5754 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5755 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5756 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5757 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5758 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5759 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0710678118654752e-02 0.0000000000000000e+00 0 0 0 +5760 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7781745930520230e-02 0.0000000000000000e+00 0 0 0 +5768 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5769 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5770 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5771 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5772 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5773 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5774 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5775 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5776 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5777 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5778 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5779 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5780 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5781 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5782 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5783 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5784 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5785 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5786 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5787 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5788 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5789 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 8.4852813742385708e-02 0.0000000000000000e+00 0 0 0 +5790 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 9.1923881554251186e-02 0.0000000000000000e+00 0 0 0 +5796 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5797 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5798 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5799 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5800 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5801 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5802 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5803 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5804 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5805 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5806 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5807 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5808 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5809 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5810 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5811 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5812 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5813 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5814 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5815 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5816 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5817 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 9.8994949366116650e-02 0.0000000000000000e+00 0 0 0 +5818 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.0606601717798213e-01 0.0000000000000000e+00 0 0 0 +5822 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5823 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5824 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5825 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5826 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5827 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5828 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5829 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5830 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5831 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5832 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5833 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5834 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5835 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5836 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5837 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5838 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5839 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5840 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5841 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5842 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5843 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.1313708498984761e-01 0.0000000000000000e+00 0 0 0 +5844 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.2020815280171308e-01 0.0000000000000000e+00 0 0 0 +5846 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5847 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5848 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5849 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5850 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5851 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5852 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5853 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5854 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5855 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5856 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5857 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5858 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5859 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5860 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5861 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5862 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5863 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5864 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5865 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5866 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5867 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.2727922061357855e-01 0.0000000000000000e+00 0 0 0 +5868 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.3435028842544403e-01 0.0000000000000000e+00 0 0 0 +5869 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5870 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5871 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5872 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5873 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5874 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5875 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5876 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5877 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5878 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5879 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5880 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5881 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5882 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5883 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5884 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5885 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5886 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5887 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5888 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5889 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4142135623730950e-01 0.0000000000000000e+00 0 0 0 +5890 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.4849242404917498e-01 0.0000000000000000e+00 0 0 0 +5891 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5892 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5893 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5894 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5895 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5896 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5897 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5898 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5899 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5900 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5901 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5902 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5903 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5904 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5905 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5906 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5907 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5908 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5909 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.5556349186104046e-01 0.0000000000000000e+00 0 0 0 +5910 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.6263455967290594e-01 0.0000000000000000e+00 0 0 0 +5449 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5450 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5451 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5452 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5453 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5454 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5455 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5456 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5457 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5458 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5459 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5460 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5461 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5462 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5463 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5464 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5465 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5466 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5467 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5468 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5469 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5470 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5471 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5472 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5473 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5474 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5475 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5476 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5477 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5478 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5479 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5480 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5481 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5482 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5483 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5484 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5485 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5486 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5487 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5488 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5489 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5490 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5491 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5492 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5493 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5494 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5495 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5496 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5497 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5498 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5499 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5500 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5501 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5502 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5503 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5504 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5505 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5506 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5507 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5508 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5509 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +5510 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +5511 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +5512 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +5513 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +5514 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +5515 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +5516 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +5517 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +5518 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +5519 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +5520 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +5521 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +5522 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +5523 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +5524 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +5525 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +5526 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +5527 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 2.5455844122715710e-01 0.0000000000000000e+00 0 0 0 +5528 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 2.6162950903902260e-01 0.0000000000000000e+00 0 0 0 +5529 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 2.5455844122715710e-01 0.0000000000000000e+00 0 0 0 +5530 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 2.6162950903902260e-01 0.0000000000000000e+00 0 0 0 +5531 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 2.5455844122715710e-01 0.0000000000000000e+00 0 0 0 +5532 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 2.6162950903902260e-01 0.0000000000000000e+00 0 0 0 +5533 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 2.6870057685088805e-01 0.0000000000000000e+00 0 0 0 +5534 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 2.7577164466275356e-01 0.0000000000000000e+00 0 0 0 +5535 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 2.6870057685088805e-01 0.0000000000000000e+00 0 0 0 +5536 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 2.7577164466275356e-01 0.0000000000000000e+00 0 0 0 +5537 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 2.8284271247461901e-01 0.0000000000000000e+00 0 0 0 +5538 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 2.8991378028648451e-01 0.0000000000000000e+00 0 0 0 +2995 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +2996 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +2997 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +2998 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +2999 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +3000 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +3001 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +3002 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +3003 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +3004 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +3005 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +3006 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +3007 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +3008 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +3009 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +3010 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +3011 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +3012 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +3013 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.6162950903902260e-01 0.0000000000000000e+00 0 0 0 +3014 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.5455844122715710e-01 0.0000000000000000e+00 0 0 0 +3015 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.6162950903902260e-01 0.0000000000000000e+00 0 0 0 +3016 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.7577164466275356e-01 0.0000000000000000e+00 0 0 0 +3017 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.6870057685088805e-01 0.0000000000000000e+00 0 0 0 +3018 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.7577164466275356e-01 0.0000000000000000e+00 0 0 0 +3019 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.8991378028648451e-01 0.0000000000000000e+00 0 0 0 +3020 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8284271247461901e-01 0.0000000000000000e+00 0 0 0 +3021 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.8991378028648451e-01 0.0000000000000000e+00 0 0 0 +3022 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.0405591591021541e-01 0.0000000000000000e+00 0 0 0 +3023 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.9698484809834996e-01 0.0000000000000000e+00 0 0 0 +3024 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.0405591591021541e-01 0.0000000000000000e+00 0 0 0 +3025 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.1819805153394637e-01 0.0000000000000000e+00 0 0 0 +3026 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.1112698372208092e-01 0.0000000000000000e+00 0 0 0 +3027 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.1819805153394637e-01 0.0000000000000000e+00 0 0 0 +3028 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.3234018715767732e-01 0.0000000000000000e+00 0 0 0 +3029 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.2526911934581187e-01 0.0000000000000000e+00 0 0 0 +3030 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.3234018715767732e-01 0.0000000000000000e+00 0 0 0 +5911 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5912 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5913 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5914 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5915 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5916 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5917 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5918 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5919 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5920 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5921 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5922 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5923 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5924 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5925 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5926 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5927 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.6970562748477142e-01 0.0000000000000000e+00 0 0 0 +5928 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.7677669529663689e-01 0.0000000000000000e+00 0 0 0 +5929 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5930 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5931 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5932 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5933 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5934 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5935 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5936 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5937 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5938 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5939 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5940 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5941 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5942 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5943 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.8384776310850237e-01 0.0000000000000000e+00 0 0 0 +5944 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.9091883092036782e-01 0.0000000000000000e+00 0 0 0 +5945 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5946 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5947 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5948 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5949 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5950 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5951 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5952 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5953 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5954 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5955 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5956 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5957 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.9798989873223330e-01 0.0000000000000000e+00 0 0 0 +5958 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.0506096654409878e-01 0.0000000000000000e+00 0 0 0 +5959 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5960 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5961 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5962 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5963 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5964 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5965 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5966 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5967 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5968 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5969 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.1213203435596426e-01 0.0000000000000000e+00 0 0 0 +5970 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1920310216782973e-01 0.0000000000000000e+00 0 0 0 +5971 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +5972 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +5973 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +5974 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +5975 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +5976 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +5977 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +5978 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +5979 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.2627416997969521e-01 0.0000000000000000e+00 0 0 0 +5980 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.3334523779156069e-01 0.0000000000000000e+00 0 0 0 +5981 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +5982 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +5983 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +5984 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +5985 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +5986 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +5987 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.4041630560342617e-01 0.0000000000000000e+00 0 0 0 +5988 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.4748737341529164e-01 0.0000000000000000e+00 0 0 0 +5989 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 2.5455844122715710e-01 0.0000000000000000e+00 0 0 0 +5990 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 2.6162950903902260e-01 0.0000000000000000e+00 0 0 0 +5991 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 2.5455844122715710e-01 0.0000000000000000e+00 0 0 0 +5992 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.6162950903902260e-01 0.0000000000000000e+00 0 0 0 +5993 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.5455844122715710e-01 0.0000000000000000e+00 0 0 0 +5994 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.6162950903902260e-01 0.0000000000000000e+00 0 0 0 +5995 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 2.6870057685088805e-01 0.0000000000000000e+00 0 0 0 +5996 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.7577164466275356e-01 0.0000000000000000e+00 0 0 0 +5997 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.6870057685088805e-01 0.0000000000000000e+00 0 0 0 +5998 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.7577164466275356e-01 0.0000000000000000e+00 0 0 0 +5999 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8284271247461901e-01 0.0000000000000000e+00 0 0 0 +6000 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.8991378028648451e-01 0.0000000000000000e+00 0 0 0 +3031 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.4648232278140828e-01 0.0000000000000000e+00 0 0 0 +3032 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.3941125496954283e-01 0.0000000000000000e+00 0 0 0 +3033 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.4648232278140828e-01 0.0000000000000000e+00 0 0 0 +3034 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.6062445840513924e-01 0.0000000000000000e+00 0 0 0 +3035 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.5355339059327379e-01 0.0000000000000000e+00 0 0 0 +3036 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.6062445840513924e-01 0.0000000000000000e+00 0 0 0 +3037 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.7476659402887019e-01 0.0000000000000000e+00 0 0 0 +3038 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.6769552621700474e-01 0.0000000000000000e+00 0 0 0 +3039 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.7476659402887019e-01 0.0000000000000000e+00 0 0 0 +3040 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.8890872965260115e-01 0.0000000000000000e+00 0 0 0 +3041 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.8183766184073564e-01 0.0000000000000000e+00 0 0 0 +3042 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.8890872965260115e-01 0.0000000000000000e+00 0 0 0 +3043 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.0305086527633210e-01 0.0000000000000000e+00 0 0 0 +3044 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.9597979746446660e-01 0.0000000000000000e+00 0 0 0 +3045 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.0305086527633210e-01 0.0000000000000000e+00 0 0 0 +3046 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.1719300090006306e-01 0.0000000000000000e+00 0 0 0 +3047 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.1012193308819755e-01 0.0000000000000000e+00 0 0 0 +3048 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.1719300090006306e-01 0.0000000000000000e+00 0 0 0 +3049 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.3133513652379402e-01 0.0000000000000000e+00 0 0 0 +3050 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2426406871192851e-01 0.0000000000000000e+00 0 0 0 +3051 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.3133513652379402e-01 0.0000000000000000e+00 0 0 0 +3052 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.4547727214752497e-01 0.0000000000000000e+00 0 0 0 +3053 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.3840620433565947e-01 0.0000000000000000e+00 0 0 0 +3054 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.4547727214752497e-01 0.0000000000000000e+00 0 0 0 +3055 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.5961940777125587e-01 0.0000000000000000e+00 0 0 0 +3056 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.5254833995939042e-01 0.0000000000000000e+00 0 0 0 +3057 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.5961940777125587e-01 0.0000000000000000e+00 0 0 0 +3058 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.7376154339498683e-01 0.0000000000000000e+00 0 0 0 +3059 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.6669047558312138e-01 0.0000000000000000e+00 0 0 0 +3060 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.7376154339498683e-01 0.0000000000000000e+00 0 0 0 +3061 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.8790367901871778e-01 0.0000000000000000e+00 0 0 0 +3062 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.8083261120685233e-01 0.0000000000000000e+00 0 0 0 +3063 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.8790367901871778e-01 0.0000000000000000e+00 0 0 0 +3065 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.9497474683058329e-01 0.0000000000000000e+00 0 0 0 +3064 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.0204581464244880e-01 0.0000000000000000e+00 0 0 0 +3066 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.0204581464244880e-01 0.0000000000000000e+00 0 0 0 +3067 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.1618795026617970e-01 0.0000000000000000e+00 0 0 0 +3068 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.0911688245431419e-01 0.0000000000000000e+00 0 0 0 +3069 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.1618795026617970e-01 0.0000000000000000e+00 0 0 0 +3070 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.3033008588991060e-01 0.0000000000000000e+00 0 0 0 +3071 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.2325901807804520e-01 0.0000000000000000e+00 0 0 0 +3072 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.3033008588991060e-01 0.0000000000000000e+00 0 0 0 +3073 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.4447222151364161e-01 0.0000000000000000e+00 0 0 0 +3074 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.3740115370177610e-01 0.0000000000000000e+00 0 0 0 +3075 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.4447222151364161e-01 0.0000000000000000e+00 0 0 0 +3076 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.5861435713737251e-01 0.0000000000000000e+00 0 0 0 +3077 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.5154328932550711e-01 0.0000000000000000e+00 0 0 0 +3078 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.5861435713737251e-01 0.0000000000000000e+00 0 0 0 +3079 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.7275649276110352e-01 0.0000000000000000e+00 0 0 0 +3080 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6568542494923801e-01 0.0000000000000000e+00 0 0 0 +3081 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.7275649276110352e-01 0.0000000000000000e+00 0 0 0 +3082 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.8689862838483442e-01 0.0000000000000000e+00 0 0 0 +3083 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.7982756057296903e-01 0.0000000000000000e+00 0 0 0 +3084 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.8689862838483442e-01 0.0000000000000000e+00 0 0 0 +3085 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.0104076400856543e-01 0.0000000000000000e+00 0 0 0 +3086 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.9396969619669993e-01 0.0000000000000000e+00 0 0 0 +3087 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.0104076400856543e-01 0.0000000000000000e+00 0 0 0 +3088 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.1518289963229633e-01 0.0000000000000000e+00 0 0 0 +3089 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.0811183182043083e-01 0.0000000000000000e+00 0 0 0 +3090 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.1518289963229633e-01 0.0000000000000000e+00 0 0 0 +3091 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.2932503525602734e-01 0.0000000000000000e+00 0 0 0 +3092 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.2225396744416184e-01 0.0000000000000000e+00 0 0 0 +3093 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.2932503525602734e-01 0.0000000000000000e+00 0 0 0 +3094 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.4346717087975824e-01 0.0000000000000000e+00 0 0 0 +3095 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.3639610306789274e-01 0.0000000000000000e+00 0 0 0 +3096 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.4346717087975824e-01 0.0000000000000000e+00 0 0 0 +3097 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.5760930650348925e-01 0.0000000000000000e+00 0 0 0 +3098 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.5053823869162375e-01 0.0000000000000000e+00 0 0 0 +3099 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.5760930650348925e-01 0.0000000000000000e+00 0 0 0 +3101 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.6468037431535465e-01 0.0000000000000000e+00 0 0 0 +3100 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.7175144212722016e-01 0.0000000000000000e+00 0 0 0 +3102 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.7175144212722016e-01 0.0000000000000000e+00 0 0 0 +3103 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.8589357775095106e-01 0.0000000000000000e+00 0 0 0 +3104 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.7882250993908566e-01 0.0000000000000000e+00 0 0 0 +3105 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.8589357775095106e-01 0.0000000000000000e+00 0 0 0 +3106 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.0003571337468207e-01 0.0000000000000000e+00 0 0 0 +3107 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.9296464556281656e-01 0.0000000000000000e+00 0 0 0 +3108 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.0003571337468207e-01 0.0000000000000000e+00 0 0 0 +3109 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.1417784899841297e-01 0.0000000000000000e+00 0 0 0 +3110 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0710678118654757e-01 0.0000000000000000e+00 0 0 0 +3111 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.1417784899841297e-01 0.0000000000000000e+00 0 0 0 +3112 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.2831998462214398e-01 0.0000000000000000e+00 0 0 0 +3113 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.2124891681027847e-01 0.0000000000000000e+00 0 0 0 +3114 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.2831998462214398e-01 0.0000000000000000e+00 0 0 0 +3115 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.4246212024587488e-01 0.0000000000000000e+00 0 0 0 +3116 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.3539105243400948e-01 0.0000000000000000e+00 0 0 0 +3117 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.4246212024587488e-01 0.0000000000000000e+00 0 0 0 +3118 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.5660425586960589e-01 0.0000000000000000e+00 0 0 0 +3119 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.4953318805774038e-01 0.0000000000000000e+00 0 0 0 +3120 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.5660425586960589e-01 0.0000000000000000e+00 0 0 0 +3121 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7074639149333679e-01 0.0000000000000000e+00 0 0 0 +3122 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.6367532368147129e-01 0.0000000000000000e+00 0 0 0 +3123 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7074639149333679e-01 0.0000000000000000e+00 0 0 0 +3124 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.8488852711706780e-01 0.0000000000000000e+00 0 0 0 +3125 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.7781745930520230e-01 0.0000000000000000e+00 0 0 0 +3126 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.8488852711706780e-01 0.0000000000000000e+00 0 0 0 +3127 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.9903066274079870e-01 0.0000000000000000e+00 0 0 0 +3128 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.9195959492893320e-01 0.0000000000000000e+00 0 0 0 +3129 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.9903066274079870e-01 0.0000000000000000e+00 0 0 0 +3130 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 8.1317279836452971e-01 0.0000000000000000e+00 0 0 0 +3131 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 8.0610173055266421e-01 0.0000000000000000e+00 0 0 0 +3132 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 8.1317279836452971e-01 0.0000000000000000e+00 0 0 0 +3133 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 8.2731493398826061e-01 0.0000000000000000e+00 0 0 0 +3134 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 8.2024386617639511e-01 0.0000000000000000e+00 0 0 0 +3135 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 8.2731493398826061e-01 0.0000000000000000e+00 0 0 0 +3136 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 8.4145706961199151e-01 0.0000000000000000e+00 0 0 0 +3137 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 8.3438600180012612e-01 0.0000000000000000e+00 0 0 0 +3138 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 8.4145706961199151e-01 0.0000000000000000e+00 0 0 0 +3139 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 8.5559920523572253e-01 0.0000000000000000e+00 0 0 0 +3140 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 8.4852813742385702e-01 0.0000000000000000e+00 0 0 0 +3141 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 8.5559920523572253e-01 0.0000000000000000e+00 0 0 0 +3142 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 8.6974134085945343e-01 0.0000000000000000e+00 0 0 0 +3143 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 8.6267027304758803e-01 0.0000000000000000e+00 0 0 0 +3144 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 8.6974134085945343e-01 0.0000000000000000e+00 0 0 0 +3145 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 8.8388347648318444e-01 0.0000000000000000e+00 0 0 0 +3146 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 8.7681240867131893e-01 0.0000000000000000e+00 0 0 0 +3147 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 8.8388347648318444e-01 0.0000000000000000e+00 0 0 0 +3148 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 8.9802561210691534e-01 0.0000000000000000e+00 0 0 0 +3149 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 8.9095454429504994e-01 0.0000000000000000e+00 0 0 0 +3150 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 8.9802561210691534e-01 0.0000000000000000e+00 0 0 0 +3151 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 9.1216774773064635e-01 0.0000000000000000e+00 0 0 0 +3152 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 9.0509667991878084e-01 0.0000000000000000e+00 0 0 0 +3153 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 9.1216774773064635e-01 0.0000000000000000e+00 0 0 0 +3154 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 9.2630988335437725e-01 0.0000000000000000e+00 0 0 0 +3155 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 9.1923881554251174e-01 0.0000000000000000e+00 0 0 0 +3156 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 9.2630988335437725e-01 0.0000000000000000e+00 0 0 0 +3157 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 9.4045201897810826e-01 0.0000000000000000e+00 0 0 0 +3158 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 9.3338095116624276e-01 0.0000000000000000e+00 0 0 0 +3159 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 9.4045201897810826e-01 0.0000000000000000e+00 0 0 0 +3160 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 9.5459415460183916e-01 0.0000000000000000e+00 0 0 0 +3161 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 9.4752308678997366e-01 0.0000000000000000e+00 0 0 0 +3162 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 9.5459415460183916e-01 0.0000000000000000e+00 0 0 0 +3163 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 9.6873629022557017e-01 0.0000000000000000e+00 0 0 0 +3164 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 9.6166522241370467e-01 0.0000000000000000e+00 0 0 0 +3165 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 9.6873629022557017e-01 0.0000000000000000e+00 0 0 0 +3166 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 9.8287842584930107e-01 0.0000000000000000e+00 0 0 0 +3167 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 9.7580735803743557e-01 0.0000000000000000e+00 0 0 0 +3168 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 9.8287842584930107e-01 0.0000000000000000e+00 0 0 0 +3169 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 9.9702056147303197e-01 0.0000000000000000e+00 0 0 0 +3170 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 9.8994949366116658e-01 0.0000000000000000e+00 0 0 0 +3171 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 9.9702056147303197e-01 0.0000000000000000e+00 0 0 0 +3172 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.0111626970967629e+00 0.0000000000000000e+00 0 0 0 +3173 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.0040916292848976e+00 0.0000000000000000e+00 0 0 0 +3174 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.0111626970967629e+00 0.0000000000000000e+00 0 0 0 +3175 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.0253048327204939e+00 0.0000000000000000e+00 0 0 0 +3176 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.0182337649086284e+00 0.0000000000000000e+00 0 0 0 +3177 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.0253048327204939e+00 0.0000000000000000e+00 0 0 0 +3178 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.0394469683442249e+00 0.0000000000000000e+00 0 0 0 +3179 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.0323759005323594e+00 0.0000000000000000e+00 0 0 0 +3180 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.0394469683442249e+00 0.0000000000000000e+00 0 0 0 +3181 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.0535891039679559e+00 0.0000000000000000e+00 0 0 0 +3182 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.0465180361560904e+00 0.0000000000000000e+00 0 0 0 +3183 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.0535891039679559e+00 0.0000000000000000e+00 0 0 0 +3184 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.0677312395916867e+00 0.0000000000000000e+00 0 0 0 +3185 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.0606601717798212e+00 0.0000000000000000e+00 0 0 0 +3186 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.0677312395916867e+00 0.0000000000000000e+00 0 0 0 +3187 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.0818733752154177e+00 0.0000000000000000e+00 0 0 0 +3188 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.0748023074035522e+00 0.0000000000000000e+00 0 0 0 +3189 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.0818733752154177e+00 0.0000000000000000e+00 0 0 0 +3190 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.0960155108391487e+00 0.0000000000000000e+00 0 0 0 +3191 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.0889444430272832e+00 0.0000000000000000e+00 0 0 0 +3192 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.0960155108391487e+00 0.0000000000000000e+00 0 0 0 +3193 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.1101576464628797e+00 0.0000000000000000e+00 0 0 0 +3194 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.1030865786510142e+00 0.0000000000000000e+00 0 0 0 +3195 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.1101576464628797e+00 0.0000000000000000e+00 0 0 0 +3196 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.1242997820866105e+00 0.0000000000000000e+00 0 0 0 +3197 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.1172287142747450e+00 0.0000000000000000e+00 0 0 0 +3198 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.1242997820866105e+00 0.0000000000000000e+00 0 0 0 +3199 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.1384419177103415e+00 0.0000000000000000e+00 0 0 0 +3200 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.1313708498984760e+00 0.0000000000000000e+00 0 0 0 +3201 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.1384419177103415e+00 0.0000000000000000e+00 0 0 0 +3202 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.1525840533340725e+00 0.0000000000000000e+00 0 0 0 +3203 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.1455129855222070e+00 0.0000000000000000e+00 0 0 0 +3204 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.1525840533340725e+00 0.0000000000000000e+00 0 0 0 +3205 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.1667261889578033e+00 0.0000000000000000e+00 0 0 0 +3206 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.1596551211459381e+00 0.0000000000000000e+00 0 0 0 +3207 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.1667261889578033e+00 0.0000000000000000e+00 0 0 0 +3208 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.1808683245815343e+00 0.0000000000000000e+00 0 0 0 +3209 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.1737972567696688e+00 0.0000000000000000e+00 0 0 0 +3210 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.1808683245815343e+00 0.0000000000000000e+00 0 0 0 +3211 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.1950104602052654e+00 0.0000000000000000e+00 0 0 0 +3212 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.1879393923933999e+00 0.0000000000000000e+00 0 0 0 +3213 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.1950104602052654e+00 0.0000000000000000e+00 0 0 0 +3214 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.2091525958289964e+00 0.0000000000000000e+00 0 0 0 +3215 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.2020815280171309e+00 0.0000000000000000e+00 0 0 0 +3216 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.2091525958289964e+00 0.0000000000000000e+00 0 0 0 +3217 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.2232947314527272e+00 0.0000000000000000e+00 0 0 0 +3218 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.2162236636408617e+00 0.0000000000000000e+00 0 0 0 +3219 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.2232947314527272e+00 0.0000000000000000e+00 0 0 0 +3220 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.2374368670764582e+00 0.0000000000000000e+00 0 0 0 +3221 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.2303657992645927e+00 0.0000000000000000e+00 0 0 0 +3222 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.2374368670764582e+00 0.0000000000000000e+00 0 0 0 +3223 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.2515790027001892e+00 0.0000000000000000e+00 0 0 0 +3224 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.2445079348883237e+00 0.0000000000000000e+00 0 0 0 +3225 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.2515790027001892e+00 0.0000000000000000e+00 0 0 0 +3226 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.2657211383239202e+00 0.0000000000000000e+00 0 0 0 +3227 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.2586500705120547e+00 0.0000000000000000e+00 0 0 0 +3228 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.2657211383239202e+00 0.0000000000000000e+00 0 0 0 +3229 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.2798632739476510e+00 0.0000000000000000e+00 0 0 0 +3230 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.2727922061357855e+00 0.0000000000000000e+00 0 0 0 +3231 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.2798632739476510e+00 0.0000000000000000e+00 0 0 0 +3232 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.2940054095713820e+00 0.0000000000000000e+00 0 0 0 +3233 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.2869343417595165e+00 0.0000000000000000e+00 0 0 0 +3234 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.2940054095713820e+00 0.0000000000000000e+00 0 0 0 +3235 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.3081475451951130e+00 0.0000000000000000e+00 0 0 0 +3236 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.3010764773832475e+00 0.0000000000000000e+00 0 0 0 +3237 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.3081475451951130e+00 0.0000000000000000e+00 0 0 0 +3238 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.3222896808188438e+00 0.0000000000000000e+00 0 0 0 +3239 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.3152186130069785e+00 0.0000000000000000e+00 0 0 0 +3240 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.3222896808188438e+00 0.0000000000000000e+00 0 0 0 +3242 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.3293607486307093e+00 0.0000000000000000e+00 0 0 0 +3241 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.3364318164425748e+00 0.0000000000000000e+00 0 0 0 +3243 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.3364318164425748e+00 0.0000000000000000e+00 0 0 0 +3244 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.3505739520663058e+00 0.0000000000000000e+00 0 0 0 +3245 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.3435028842544403e+00 0.0000000000000000e+00 0 0 0 +3246 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.3505739520663058e+00 0.0000000000000000e+00 0 0 0 +3247 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.3647160876900368e+00 0.0000000000000000e+00 0 0 0 +3248 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.3576450198781713e+00 0.0000000000000000e+00 0 0 0 +3249 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.3647160876900368e+00 0.0000000000000000e+00 0 0 0 +3250 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.3788582233137676e+00 0.0000000000000000e+00 0 0 0 +3251 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.3717871555019021e+00 0.0000000000000000e+00 0 0 0 +3252 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.3788582233137676e+00 0.0000000000000000e+00 0 0 0 +3253 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.3930003589374986e+00 0.0000000000000000e+00 0 0 0 +3254 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.3859292911256331e+00 0.0000000000000000e+00 0 0 0 +3255 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.3930003589374986e+00 0.0000000000000000e+00 0 0 0 +3256 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.4071424945612296e+00 0.0000000000000000e+00 0 0 0 +3257 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4000714267493641e+00 0.0000000000000000e+00 0 0 0 +3258 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.4071424945612296e+00 0.0000000000000000e+00 0 0 0 +3259 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.4212846301849607e+00 0.0000000000000000e+00 0 0 0 +3260 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4142135623730951e+00 0.0000000000000000e+00 0 0 0 +3261 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.4212846301849607e+00 0.0000000000000000e+00 0 0 0 +3262 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.4354267658086914e+00 0.0000000000000000e+00 0 0 0 +3263 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4283556979968259e+00 0.0000000000000000e+00 0 0 0 +3264 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.4354267658086914e+00 0.0000000000000000e+00 0 0 0 +3265 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.4495689014324225e+00 0.0000000000000000e+00 0 0 0 +3266 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4424978336205569e+00 0.0000000000000000e+00 0 0 0 +3267 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.4495689014324225e+00 0.0000000000000000e+00 0 0 0 +3268 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.4637110370561535e+00 0.0000000000000000e+00 0 0 0 +3269 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4566399692442880e+00 0.0000000000000000e+00 0 0 0 +3270 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.4637110370561535e+00 0.0000000000000000e+00 0 0 0 +3271 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.4778531726798843e+00 0.0000000000000000e+00 0 0 0 +3272 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4707821048680190e+00 0.0000000000000000e+00 0 0 0 +3273 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.4778531726798843e+00 0.0000000000000000e+00 0 0 0 +3274 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.4919953083036153e+00 0.0000000000000000e+00 0 0 0 +3275 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4849242404917498e+00 0.0000000000000000e+00 0 0 0 +3276 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.4919953083036153e+00 0.0000000000000000e+00 0 0 0 +3278 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.4990663761154808e+00 0.0000000000000000e+00 0 0 0 +3277 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.5061374439273463e+00 0.0000000000000000e+00 0 0 0 +3279 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.5061374439273463e+00 0.0000000000000000e+00 0 0 0 +3280 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.5202795795510773e+00 0.0000000000000000e+00 0 0 0 +3281 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.5132085117392118e+00 0.0000000000000000e+00 0 0 0 +3282 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.5202795795510773e+00 0.0000000000000000e+00 0 0 0 +3283 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.5344217151748081e+00 0.0000000000000000e+00 0 0 0 +3284 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.5273506473629426e+00 0.0000000000000000e+00 0 0 0 +3285 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.5344217151748081e+00 0.0000000000000000e+00 0 0 0 +3286 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.5485638507985391e+00 0.0000000000000000e+00 0 0 0 +3287 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.5414927829866736e+00 0.0000000000000000e+00 0 0 0 +3288 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.5485638507985391e+00 0.0000000000000000e+00 0 0 0 +3289 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.5627059864222701e+00 0.0000000000000000e+00 0 0 0 +3290 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.5556349186104046e+00 0.0000000000000000e+00 0 0 0 +3291 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.5627059864222701e+00 0.0000000000000000e+00 0 0 0 +3292 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.5768481220460011e+00 0.0000000000000000e+00 0 0 0 +3293 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.5697770542341356e+00 0.0000000000000000e+00 0 0 0 +3294 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.5768481220460011e+00 0.0000000000000000e+00 0 0 0 +3295 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.5909902576697319e+00 0.0000000000000000e+00 0 0 0 +3296 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.5839191898578664e+00 0.0000000000000000e+00 0 0 0 +3297 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.5909902576697319e+00 0.0000000000000000e+00 0 0 0 +3298 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.6051323932934629e+00 0.0000000000000000e+00 0 0 0 +3299 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.5980613254815974e+00 0.0000000000000000e+00 0 0 0 +3300 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.6051323932934629e+00 0.0000000000000000e+00 0 0 0 +3301 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.6192745289171939e+00 0.0000000000000000e+00 0 0 0 +3302 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.6122034611053284e+00 0.0000000000000000e+00 0 0 0 +3303 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.6192745289171939e+00 0.0000000000000000e+00 0 0 0 +3304 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.6334166645409247e+00 0.0000000000000000e+00 0 0 0 +3305 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.6263455967290594e+00 0.0000000000000000e+00 0 0 0 +3306 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.6334166645409247e+00 0.0000000000000000e+00 0 0 0 +3307 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.6475588001646557e+00 0.0000000000000000e+00 0 0 0 +3308 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.6404877323527902e+00 0.0000000000000000e+00 0 0 0 +3309 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.6475588001646557e+00 0.0000000000000000e+00 0 0 0 +3310 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.6617009357883867e+00 0.0000000000000000e+00 0 0 0 +3311 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.6546298679765212e+00 0.0000000000000000e+00 0 0 0 +3312 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.6617009357883867e+00 0.0000000000000000e+00 0 0 0 +3313 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.6758430714121177e+00 0.0000000000000000e+00 0 0 0 +3314 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.6687720036002522e+00 0.0000000000000000e+00 0 0 0 +3315 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.6758430714121177e+00 0.0000000000000000e+00 0 0 0 +3316 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.6899852070358485e+00 0.0000000000000000e+00 0 0 0 +3317 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.6829141392239830e+00 0.0000000000000000e+00 0 0 0 +3318 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.6899852070358485e+00 0.0000000000000000e+00 0 0 0 +3319 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.7041273426595795e+00 0.0000000000000000e+00 0 0 0 +3320 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.6970562748477140e+00 0.0000000000000000e+00 0 0 0 +3321 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.7041273426595795e+00 0.0000000000000000e+00 0 0 0 +3322 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.7182694782833106e+00 0.0000000000000000e+00 0 0 0 +3323 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.7111984104714451e+00 0.0000000000000000e+00 0 0 0 +3324 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.7182694782833106e+00 0.0000000000000000e+00 0 0 0 +3325 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.7324116139070416e+00 0.0000000000000000e+00 0 0 0 +3326 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.7253405460951761e+00 0.0000000000000000e+00 0 0 0 +3327 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.7324116139070416e+00 0.0000000000000000e+00 0 0 0 +3328 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.7465537495307724e+00 0.0000000000000000e+00 0 0 0 +3329 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.7394826817189069e+00 0.0000000000000000e+00 0 0 0 +3330 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.7465537495307724e+00 0.0000000000000000e+00 0 0 0 +3331 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.7606958851545034e+00 0.0000000000000000e+00 0 0 0 +3332 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.7536248173426379e+00 0.0000000000000000e+00 0 0 0 +3333 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.7606958851545034e+00 0.0000000000000000e+00 0 0 0 +3334 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.7748380207782344e+00 0.0000000000000000e+00 0 0 0 +3335 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.7677669529663689e+00 0.0000000000000000e+00 0 0 0 +3336 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.7748380207782344e+00 0.0000000000000000e+00 0 0 0 +3337 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.7889801564019652e+00 0.0000000000000000e+00 0 0 0 +3338 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.7819090885900999e+00 0.0000000000000000e+00 0 0 0 +3339 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.7889801564019652e+00 0.0000000000000000e+00 0 0 0 +3340 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.8031222920256962e+00 0.0000000000000000e+00 0 0 0 +3341 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.7960512242138307e+00 0.0000000000000000e+00 0 0 0 +3342 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.8031222920256962e+00 0.0000000000000000e+00 0 0 0 +3343 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.8172644276494272e+00 0.0000000000000000e+00 0 0 0 +3344 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.8101933598375617e+00 0.0000000000000000e+00 0 0 0 +3345 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.8172644276494272e+00 0.0000000000000000e+00 0 0 0 +3346 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.8314065632731582e+00 0.0000000000000000e+00 0 0 0 +3347 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.8243354954612927e+00 0.0000000000000000e+00 0 0 0 +3348 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.8314065632731582e+00 0.0000000000000000e+00 0 0 0 +3349 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.8455486988968890e+00 0.0000000000000000e+00 0 0 0 +3350 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.8384776310850235e+00 0.0000000000000000e+00 0 0 0 +3351 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.8455486988968890e+00 0.0000000000000000e+00 0 0 0 +3352 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.8596908345206200e+00 0.0000000000000000e+00 0 0 0 +3353 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.8526197667087545e+00 0.0000000000000000e+00 0 0 0 +3354 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.8596908345206200e+00 0.0000000000000000e+00 0 0 0 +3355 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.8738329701443510e+00 0.0000000000000000e+00 0 0 0 +3356 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.8667619023324855e+00 0.0000000000000000e+00 0 0 0 +3357 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.8738329701443510e+00 0.0000000000000000e+00 0 0 0 +3358 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.8879751057680818e+00 0.0000000000000000e+00 0 0 0 +3359 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.8809040379562165e+00 0.0000000000000000e+00 0 0 0 +3360 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.8879751057680818e+00 0.0000000000000000e+00 0 0 0 +3361 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.9021172413918128e+00 0.0000000000000000e+00 0 0 0 +3362 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.8950461735799473e+00 0.0000000000000000e+00 0 0 0 +3363 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.9021172413918128e+00 0.0000000000000000e+00 0 0 0 +3364 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.9162593770155438e+00 0.0000000000000000e+00 0 0 0 +3365 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.9091883092036783e+00 0.0000000000000000e+00 0 0 0 +3366 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.9162593770155438e+00 0.0000000000000000e+00 0 0 0 +3367 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.9304015126392748e+00 0.0000000000000000e+00 0 0 0 +3368 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.9233304448274093e+00 0.0000000000000000e+00 0 0 0 +3369 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.9304015126392748e+00 0.0000000000000000e+00 0 0 0 +3370 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.9445436482630056e+00 0.0000000000000000e+00 0 0 0 +3371 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.9374725804511403e+00 0.0000000000000000e+00 0 0 0 +3372 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.9445436482630056e+00 0.0000000000000000e+00 0 0 0 +3373 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.9586857838867366e+00 0.0000000000000000e+00 0 0 0 +3374 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.9516147160748711e+00 0.0000000000000000e+00 0 0 0 +3375 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.9586857838867366e+00 0.0000000000000000e+00 0 0 0 +3376 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.9728279195104677e+00 0.0000000000000000e+00 0 0 0 +3377 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.9657568516986021e+00 0.0000000000000000e+00 0 0 0 +3378 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.9728279195104677e+00 0.0000000000000000e+00 0 0 0 +3379 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 1.9869700551341987e+00 0.0000000000000000e+00 0 0 0 +3380 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.9798989873223332e+00 0.0000000000000000e+00 0 0 0 +3381 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 1.9869700551341987e+00 0.0000000000000000e+00 0 0 0 +3383 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 1.9940411229460639e+00 0.0000000000000000e+00 0 0 0 +3382 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.0011121907579295e+00 0.0000000000000000e+00 0 0 0 +3384 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.0011121907579295e+00 0.0000000000000000e+00 0 0 0 +3385 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.0152543263816605e+00 0.0000000000000000e+00 0 0 0 +3386 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.0081832585697952e+00 0.0000000000000000e+00 0 0 0 +3387 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.0152543263816605e+00 0.0000000000000000e+00 0 0 0 +3388 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.0293964620053915e+00 0.0000000000000000e+00 0 0 0 +3389 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.0223253941935257e+00 0.0000000000000000e+00 0 0 0 +3390 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.0293964620053915e+00 0.0000000000000000e+00 0 0 0 +3391 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.0435385976291225e+00 0.0000000000000000e+00 0 0 0 +3392 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.0364675298172568e+00 0.0000000000000000e+00 0 0 0 +3393 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.0435385976291225e+00 0.0000000000000000e+00 0 0 0 +3394 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.0576807332528535e+00 0.0000000000000000e+00 0 0 0 +3395 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.0506096654409878e+00 0.0000000000000000e+00 0 0 0 +3396 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.0576807332528535e+00 0.0000000000000000e+00 0 0 0 +3397 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.0718228688765841e+00 0.0000000000000000e+00 0 0 0 +3398 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.0647518010647188e+00 0.0000000000000000e+00 0 0 0 +3399 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.0718228688765841e+00 0.0000000000000000e+00 0 0 0 +3400 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.0859650045003151e+00 0.0000000000000000e+00 0 0 0 +3401 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.0788939366884498e+00 0.0000000000000000e+00 0 0 0 +3402 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.0859650045003151e+00 0.0000000000000000e+00 0 0 0 +3403 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1001071401240461e+00 0.0000000000000000e+00 0 0 0 +3404 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.0930360723121808e+00 0.0000000000000000e+00 0 0 0 +3405 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1001071401240461e+00 0.0000000000000000e+00 0 0 0 +3406 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1142492757477771e+00 0.0000000000000000e+00 0 0 0 +3407 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.1071782079359118e+00 0.0000000000000000e+00 0 0 0 +3408 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1142492757477771e+00 0.0000000000000000e+00 0 0 0 +3409 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1283914113715081e+00 0.0000000000000000e+00 0 0 0 +3410 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.1213203435596424e+00 0.0000000000000000e+00 0 0 0 +3411 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1283914113715081e+00 0.0000000000000000e+00 0 0 0 +3412 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1425335469952391e+00 0.0000000000000000e+00 0 0 0 +3413 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.1354624791833734e+00 0.0000000000000000e+00 0 0 0 +3414 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1425335469952391e+00 0.0000000000000000e+00 0 0 0 +3415 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1566756826189701e+00 0.0000000000000000e+00 0 0 0 +3416 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.1496046148071044e+00 0.0000000000000000e+00 0 0 0 +3417 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1566756826189701e+00 0.0000000000000000e+00 0 0 0 +3419 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.1637467504308354e+00 0.0000000000000000e+00 0 0 0 +3418 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1708178182427011e+00 0.0000000000000000e+00 0 0 0 +3420 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1708178182427011e+00 0.0000000000000000e+00 0 0 0 +3421 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1849599538664317e+00 0.0000000000000000e+00 0 0 0 +3422 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.1778888860545664e+00 0.0000000000000000e+00 0 0 0 +3423 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1849599538664317e+00 0.0000000000000000e+00 0 0 0 +3424 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.1991020894901627e+00 0.0000000000000000e+00 0 0 0 +3425 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.1920310216782974e+00 0.0000000000000000e+00 0 0 0 +3426 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.1991020894901627e+00 0.0000000000000000e+00 0 0 0 +3427 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.2132442251138937e+00 0.0000000000000000e+00 0 0 0 +3428 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.2061731573020285e+00 0.0000000000000000e+00 0 0 0 +3429 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.2132442251138937e+00 0.0000000000000000e+00 0 0 0 +3430 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.2273863607376247e+00 0.0000000000000000e+00 0 0 0 +3431 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.2203152929257595e+00 0.0000000000000000e+00 0 0 0 +3432 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.2273863607376247e+00 0.0000000000000000e+00 0 0 0 +3433 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.2415284963613558e+00 0.0000000000000000e+00 0 0 0 +3434 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.2344574285494900e+00 0.0000000000000000e+00 0 0 0 +3435 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.2415284963613558e+00 0.0000000000000000e+00 0 0 0 +3436 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.2556706319850868e+00 0.0000000000000000e+00 0 0 0 +3437 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.2485995641732210e+00 0.0000000000000000e+00 0 0 0 +3438 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.2556706319850868e+00 0.0000000000000000e+00 0 0 0 +3439 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.2698127676088178e+00 0.0000000000000000e+00 0 0 0 +3440 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.2627416997969521e+00 0.0000000000000000e+00 0 0 0 +3441 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.2698127676088178e+00 0.0000000000000000e+00 0 0 0 +3442 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.2839549032325484e+00 0.0000000000000000e+00 0 0 0 +3443 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.2768838354206831e+00 0.0000000000000000e+00 0 0 0 +3444 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.2839549032325484e+00 0.0000000000000000e+00 0 0 0 +3445 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.2980970388562794e+00 0.0000000000000000e+00 0 0 0 +3446 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.2910259710444141e+00 0.0000000000000000e+00 0 0 0 +3447 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.2980970388562794e+00 0.0000000000000000e+00 0 0 0 +3448 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.3122391744800104e+00 0.0000000000000000e+00 0 0 0 +3449 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.3051681066681451e+00 0.0000000000000000e+00 0 0 0 +3450 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.3122391744800104e+00 0.0000000000000000e+00 0 0 0 +3451 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.3263813101037414e+00 0.0000000000000000e+00 0 0 0 +3452 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.3193102422918761e+00 0.0000000000000000e+00 0 0 0 +3453 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.3263813101037414e+00 0.0000000000000000e+00 0 0 0 +3455 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.3334523779156067e+00 0.0000000000000000e+00 0 0 0 +3454 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.3405234457274724e+00 0.0000000000000000e+00 0 0 0 +3456 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.3405234457274724e+00 0.0000000000000000e+00 0 0 0 +3457 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.3546655813512034e+00 0.0000000000000000e+00 0 0 0 +3458 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.3475945135393377e+00 0.0000000000000000e+00 0 0 0 +3459 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.3546655813512034e+00 0.0000000000000000e+00 0 0 0 +3460 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.3688077169749344e+00 0.0000000000000000e+00 0 0 0 +3461 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.3617366491630687e+00 0.0000000000000000e+00 0 0 0 +3462 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.3688077169749344e+00 0.0000000000000000e+00 0 0 0 +3463 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.3829498525986650e+00 0.0000000000000000e+00 0 0 0 +3464 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.3758787847867997e+00 0.0000000000000000e+00 0 0 0 +3465 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.3829498525986650e+00 0.0000000000000000e+00 0 0 0 +3466 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.3970919882223960e+00 0.0000000000000000e+00 0 0 0 +3467 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.3900209204105307e+00 0.0000000000000000e+00 0 0 0 +3468 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.3970919882223960e+00 0.0000000000000000e+00 0 0 0 +3469 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.4112341238461270e+00 0.0000000000000000e+00 0 0 0 +3470 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.4041630560342617e+00 0.0000000000000000e+00 0 0 0 +3471 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.4112341238461270e+00 0.0000000000000000e+00 0 0 0 +3472 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.4253762594698580e+00 0.0000000000000000e+00 0 0 0 +3473 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.4183051916579927e+00 0.0000000000000000e+00 0 0 0 +3474 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.4253762594698580e+00 0.0000000000000000e+00 0 0 0 +3475 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.4395183950935890e+00 0.0000000000000000e+00 0 0 0 +3476 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.4324473272817233e+00 0.0000000000000000e+00 0 0 0 +3477 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.4395183950935890e+00 0.0000000000000000e+00 0 0 0 +3478 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.4536605307173200e+00 0.0000000000000000e+00 0 0 0 +3479 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.4465894629054543e+00 0.0000000000000000e+00 0 0 0 +3480 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.4536605307173200e+00 0.0000000000000000e+00 0 0 0 +3481 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.4678026663410511e+00 0.0000000000000000e+00 0 0 0 +3482 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.4607315985291853e+00 0.0000000000000000e+00 0 0 0 +3483 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.4678026663410511e+00 0.0000000000000000e+00 0 0 0 +3484 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.4819448019647821e+00 0.0000000000000000e+00 0 0 0 +3485 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.4748737341529163e+00 0.0000000000000000e+00 0 0 0 +3486 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.4819448019647821e+00 0.0000000000000000e+00 0 0 0 +3487 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.4960869375885126e+00 0.0000000000000000e+00 0 0 0 +3488 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.4890158697766473e+00 0.0000000000000000e+00 0 0 0 +3489 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.4960869375885126e+00 0.0000000000000000e+00 0 0 0 +3490 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.5102290732122436e+00 0.0000000000000000e+00 0 0 0 +3491 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.5031580054003784e+00 0.0000000000000000e+00 0 0 0 +3492 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.5102290732122436e+00 0.0000000000000000e+00 0 0 0 +3493 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.5243712088359747e+00 0.0000000000000000e+00 0 0 0 +3494 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.5173001410241094e+00 0.0000000000000000e+00 0 0 0 +3495 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.5243712088359747e+00 0.0000000000000000e+00 0 0 0 +3496 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.5385133444597057e+00 0.0000000000000000e+00 0 0 0 +3497 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.5314422766478404e+00 0.0000000000000000e+00 0 0 0 +3498 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.5385133444597057e+00 0.0000000000000000e+00 0 0 0 +3499 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.5526554800834367e+00 0.0000000000000000e+00 0 0 0 +3500 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.5455844122715710e+00 0.0000000000000000e+00 0 0 0 +3501 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.5526554800834367e+00 0.0000000000000000e+00 0 0 0 +3502 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.5667976157071677e+00 0.0000000000000000e+00 0 0 0 +3503 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.5597265478953020e+00 0.0000000000000000e+00 0 0 0 +3504 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.5667976157071677e+00 0.0000000000000000e+00 0 0 0 +3505 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.5809397513308987e+00 0.0000000000000000e+00 0 0 0 +3506 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.5738686835190330e+00 0.0000000000000000e+00 0 0 0 +3507 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.5809397513308987e+00 0.0000000000000000e+00 0 0 0 +3508 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.5950818869546293e+00 0.0000000000000000e+00 0 0 0 +3509 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.5880108191427640e+00 0.0000000000000000e+00 0 0 0 +3510 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.5950818869546293e+00 0.0000000000000000e+00 0 0 0 +3511 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.6092240225783603e+00 0.0000000000000000e+00 0 0 0 +3512 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.6021529547664950e+00 0.0000000000000000e+00 0 0 0 +3513 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.6092240225783603e+00 0.0000000000000000e+00 0 0 0 +3514 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.6233661582020913e+00 0.0000000000000000e+00 0 0 0 +3515 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.6162950903902260e+00 0.0000000000000000e+00 0 0 0 +3516 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.6233661582020913e+00 0.0000000000000000e+00 0 0 0 +3517 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.6375082938258223e+00 0.0000000000000000e+00 0 0 0 +3518 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.6304372260139570e+00 0.0000000000000000e+00 0 0 0 +3519 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.6375082938258223e+00 0.0000000000000000e+00 0 0 0 +3520 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.6516504294495533e+00 0.0000000000000000e+00 0 0 0 +3521 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.6445793616376876e+00 0.0000000000000000e+00 0 0 0 +3522 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.6516504294495533e+00 0.0000000000000000e+00 0 0 0 +3523 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.6657925650732843e+00 0.0000000000000000e+00 0 0 0 +3524 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.6587214972614186e+00 0.0000000000000000e+00 0 0 0 +3525 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.6657925650732843e+00 0.0000000000000000e+00 0 0 0 +3526 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.6799347006970153e+00 0.0000000000000000e+00 0 0 0 +3527 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.6728636328851496e+00 0.0000000000000000e+00 0 0 0 +3528 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.6799347006970153e+00 0.0000000000000000e+00 0 0 0 +3529 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.6940768363207459e+00 0.0000000000000000e+00 0 0 0 +3530 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.6870057685088806e+00 0.0000000000000000e+00 0 0 0 +3531 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.6940768363207459e+00 0.0000000000000000e+00 0 0 0 +3532 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.7082189719444769e+00 0.0000000000000000e+00 0 0 0 +3533 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.7011479041326116e+00 0.0000000000000000e+00 0 0 0 +3534 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.7082189719444769e+00 0.0000000000000000e+00 0 0 0 +3535 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.7223611075682079e+00 0.0000000000000000e+00 0 0 0 +3536 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.7152900397563426e+00 0.0000000000000000e+00 0 0 0 +3537 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.7223611075682079e+00 0.0000000000000000e+00 0 0 0 +3538 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.7365032431919389e+00 0.0000000000000000e+00 0 0 0 +3539 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.7294321753800737e+00 0.0000000000000000e+00 0 0 0 +3540 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.7365032431919389e+00 0.0000000000000000e+00 0 0 0 +3541 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.7506453788156700e+00 0.0000000000000000e+00 0 0 0 +3542 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.7435743110038042e+00 0.0000000000000000e+00 0 0 0 +3543 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.7506453788156700e+00 0.0000000000000000e+00 0 0 0 +3544 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.7647875144394010e+00 0.0000000000000000e+00 0 0 0 +3545 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.7577164466275352e+00 0.0000000000000000e+00 0 0 0 +3546 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.7647875144394010e+00 0.0000000000000000e+00 0 0 0 +3547 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.7789296500631320e+00 0.0000000000000000e+00 0 0 0 +3548 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.7718585822512662e+00 0.0000000000000000e+00 0 0 0 +3549 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.7789296500631320e+00 0.0000000000000000e+00 0 0 0 +3550 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.7930717856868625e+00 0.0000000000000000e+00 0 0 0 +3551 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.7860007178749973e+00 0.0000000000000000e+00 0 0 0 +3552 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.7930717856868625e+00 0.0000000000000000e+00 0 0 0 +3553 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.8072139213105936e+00 0.0000000000000000e+00 0 0 0 +3554 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8001428534987283e+00 0.0000000000000000e+00 0 0 0 +3555 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.8072139213105936e+00 0.0000000000000000e+00 0 0 0 +3556 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.8213560569343246e+00 0.0000000000000000e+00 0 0 0 +3557 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8142849891224593e+00 0.0000000000000000e+00 0 0 0 +3558 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.8213560569343246e+00 0.0000000000000000e+00 0 0 0 +3560 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8284271247461903e+00 0.0000000000000000e+00 0 0 0 +3559 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.8354981925580556e+00 0.0000000000000000e+00 0 0 0 +3561 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.8354981925580556e+00 0.0000000000000000e+00 0 0 0 +3562 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.8496403281817866e+00 0.0000000000000000e+00 0 0 0 +3563 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8425692603699213e+00 0.0000000000000000e+00 0 0 0 +3564 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.8496403281817866e+00 0.0000000000000000e+00 0 0 0 +3565 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.8637824638055176e+00 0.0000000000000000e+00 0 0 0 +3566 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8567113959936519e+00 0.0000000000000000e+00 0 0 0 +3567 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.8637824638055176e+00 0.0000000000000000e+00 0 0 0 +3568 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.8779245994292486e+00 0.0000000000000000e+00 0 0 0 +3569 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8708535316173829e+00 0.0000000000000000e+00 0 0 0 +3570 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.8779245994292486e+00 0.0000000000000000e+00 0 0 0 +3571 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.8920667350529796e+00 0.0000000000000000e+00 0 0 0 +3572 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8849956672411139e+00 0.0000000000000000e+00 0 0 0 +3573 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.8920667350529796e+00 0.0000000000000000e+00 0 0 0 +3574 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.9062088706767102e+00 0.0000000000000000e+00 0 0 0 +3575 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.8991378028648449e+00 0.0000000000000000e+00 0 0 0 +3576 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.9062088706767102e+00 0.0000000000000000e+00 0 0 0 +3577 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.9203510063004412e+00 0.0000000000000000e+00 0 0 0 +3578 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.9132799384885759e+00 0.0000000000000000e+00 0 0 0 +3579 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.9203510063004412e+00 0.0000000000000000e+00 0 0 0 +3580 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.9344931419241722e+00 0.0000000000000000e+00 0 0 0 +3581 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.9274220741123069e+00 0.0000000000000000e+00 0 0 0 +3582 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.9344931419241722e+00 0.0000000000000000e+00 0 0 0 +3583 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.9486352775479032e+00 0.0000000000000000e+00 0 0 0 +3584 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.9415642097360379e+00 0.0000000000000000e+00 0 0 0 +3585 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.9486352775479032e+00 0.0000000000000000e+00 0 0 0 +3586 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.9627774131716342e+00 0.0000000000000000e+00 0 0 0 +3587 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.9557063453597685e+00 0.0000000000000000e+00 0 0 0 +3588 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.9627774131716342e+00 0.0000000000000000e+00 0 0 0 +3589 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.9769195487953652e+00 0.0000000000000000e+00 0 0 0 +3590 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.9698484809834995e+00 0.0000000000000000e+00 0 0 0 +3591 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.9769195487953652e+00 0.0000000000000000e+00 0 0 0 +3592 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 2.9910616844190963e+00 0.0000000000000000e+00 0 0 0 +3593 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.9839906166072305e+00 0.0000000000000000e+00 0 0 0 +3594 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 2.9910616844190963e+00 0.0000000000000000e+00 0 0 0 +3596 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 2.9981327522309615e+00 0.0000000000000000e+00 0 0 0 +3595 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.0052038200428268e+00 0.0000000000000000e+00 0 0 0 +3597 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.0052038200428268e+00 0.0000000000000000e+00 0 0 0 +3598 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.0193459556665578e+00 0.0000000000000000e+00 0 0 0 +3599 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.0122748878546926e+00 0.0000000000000000e+00 0 0 0 +3600 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.0193459556665578e+00 0.0000000000000000e+00 0 0 0 +3601 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.0334880912902888e+00 0.0000000000000000e+00 0 0 0 +3602 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.0264170234784236e+00 0.0000000000000000e+00 0 0 0 +3603 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.0334880912902888e+00 0.0000000000000000e+00 0 0 0 +3604 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.0476302269140199e+00 0.0000000000000000e+00 0 0 0 +3605 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.0405591591021546e+00 0.0000000000000000e+00 0 0 0 +3606 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.0476302269140199e+00 0.0000000000000000e+00 0 0 0 +3607 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.0617723625377509e+00 0.0000000000000000e+00 0 0 0 +3608 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.0547012947258851e+00 0.0000000000000000e+00 0 0 0 +3609 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.0617723625377509e+00 0.0000000000000000e+00 0 0 0 +3610 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.0759144981614819e+00 0.0000000000000000e+00 0 0 0 +3611 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.0688434303496162e+00 0.0000000000000000e+00 0 0 0 +3612 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.0759144981614819e+00 0.0000000000000000e+00 0 0 0 +3613 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.0900566337852129e+00 0.0000000000000000e+00 0 0 0 +3614 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.0829855659733472e+00 0.0000000000000000e+00 0 0 0 +3615 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.0900566337852129e+00 0.0000000000000000e+00 0 0 0 +3616 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.1041987694089435e+00 0.0000000000000000e+00 0 0 0 +3617 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.0971277015970782e+00 0.0000000000000000e+00 0 0 0 +3618 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.1041987694089435e+00 0.0000000000000000e+00 0 0 0 +3619 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.1183409050326745e+00 0.0000000000000000e+00 0 0 0 +3620 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.1112698372208092e+00 0.0000000000000000e+00 0 0 0 +3621 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.1183409050326745e+00 0.0000000000000000e+00 0 0 0 +3622 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.1324830406564055e+00 0.0000000000000000e+00 0 0 0 +3623 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.1254119728445402e+00 0.0000000000000000e+00 0 0 0 +3624 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.1324830406564055e+00 0.0000000000000000e+00 0 0 0 +3625 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.1466251762801365e+00 0.0000000000000000e+00 0 0 0 +3626 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.1395541084682712e+00 0.0000000000000000e+00 0 0 0 +3627 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.1466251762801365e+00 0.0000000000000000e+00 0 0 0 +3628 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.1607673119038675e+00 0.0000000000000000e+00 0 0 0 +3629 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.1536962440920022e+00 0.0000000000000000e+00 0 0 0 +3630 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.1607673119038675e+00 0.0000000000000000e+00 0 0 0 +3631 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.1749094475275985e+00 0.0000000000000000e+00 0 0 0 +3632 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.1678383797157328e+00 0.0000000000000000e+00 0 0 0 +3633 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.1749094475275985e+00 0.0000000000000000e+00 0 0 0 +3634 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.1890515831513295e+00 0.0000000000000000e+00 0 0 0 +3635 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.1819805153394638e+00 0.0000000000000000e+00 0 0 0 +3636 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.1890515831513295e+00 0.0000000000000000e+00 0 0 0 +3637 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.2031937187750605e+00 0.0000000000000000e+00 0 0 0 +3638 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.1961226509631948e+00 0.0000000000000000e+00 0 0 0 +3639 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.2031937187750605e+00 0.0000000000000000e+00 0 0 0 +3640 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.2173358543987911e+00 0.0000000000000000e+00 0 0 0 +3641 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.2102647865869258e+00 0.0000000000000000e+00 0 0 0 +3642 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.2173358543987911e+00 0.0000000000000000e+00 0 0 0 +3643 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.2314779900225221e+00 0.0000000000000000e+00 0 0 0 +3644 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.2244069222106568e+00 0.0000000000000000e+00 0 0 0 +3645 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.2314779900225221e+00 0.0000000000000000e+00 0 0 0 +3646 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.2456201256462531e+00 0.0000000000000000e+00 0 0 0 +3647 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.2385490578343878e+00 0.0000000000000000e+00 0 0 0 +3648 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.2456201256462531e+00 0.0000000000000000e+00 0 0 0 +3649 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.2597622612699841e+00 0.0000000000000000e+00 0 0 0 +3650 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.2526911934581189e+00 0.0000000000000000e+00 0 0 0 +3651 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.2597622612699841e+00 0.0000000000000000e+00 0 0 0 +3652 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.2739043968937152e+00 0.0000000000000000e+00 0 0 0 +3653 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.2668333290818494e+00 0.0000000000000000e+00 0 0 0 +3654 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.2739043968937152e+00 0.0000000000000000e+00 0 0 0 +3655 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.2880465325174462e+00 0.0000000000000000e+00 0 0 0 +3656 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.2809754647055804e+00 0.0000000000000000e+00 0 0 0 +3657 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.2880465325174462e+00 0.0000000000000000e+00 0 0 0 +3658 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.3021886681411772e+00 0.0000000000000000e+00 0 0 0 +3659 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.2951176003293114e+00 0.0000000000000000e+00 0 0 0 +3660 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.3021886681411772e+00 0.0000000000000000e+00 0 0 0 +3661 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.3163308037649077e+00 0.0000000000000000e+00 0 0 0 +3662 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.3092597359530425e+00 0.0000000000000000e+00 0 0 0 +3663 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.3163308037649077e+00 0.0000000000000000e+00 0 0 0 +3664 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.3304729393886388e+00 0.0000000000000000e+00 0 0 0 +3665 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.3234018715767735e+00 0.0000000000000000e+00 0 0 0 +3666 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.3304729393886388e+00 0.0000000000000000e+00 0 0 0 +3667 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.3446150750123698e+00 0.0000000000000000e+00 0 0 0 +3668 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.3375440072005045e+00 0.0000000000000000e+00 0 0 0 +3669 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.3446150750123698e+00 0.0000000000000000e+00 0 0 0 +3670 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.3587572106361008e+00 0.0000000000000000e+00 0 0 0 +3671 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.3516861428242355e+00 0.0000000000000000e+00 0 0 0 +3672 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.3587572106361008e+00 0.0000000000000000e+00 0 0 0 +3673 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.3728993462598318e+00 0.0000000000000000e+00 0 0 0 +3674 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.3658282784479661e+00 0.0000000000000000e+00 0 0 0 +3675 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.3728993462598318e+00 0.0000000000000000e+00 0 0 0 +3676 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.3870414818835628e+00 0.0000000000000000e+00 0 0 0 +3677 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.3799704140716971e+00 0.0000000000000000e+00 0 0 0 +3678 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.3870414818835628e+00 0.0000000000000000e+00 0 0 0 +3679 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.4011836175072938e+00 0.0000000000000000e+00 0 0 0 +3680 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.3941125496954281e+00 0.0000000000000000e+00 0 0 0 +3681 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.4011836175072938e+00 0.0000000000000000e+00 0 0 0 +3682 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.4153257531310244e+00 0.0000000000000000e+00 0 0 0 +3683 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.4082546853191591e+00 0.0000000000000000e+00 0 0 0 +3684 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.4153257531310244e+00 0.0000000000000000e+00 0 0 0 +3685 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.4294678887547554e+00 0.0000000000000000e+00 0 0 0 +3686 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.4223968209428901e+00 0.0000000000000000e+00 0 0 0 +3687 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.4294678887547554e+00 0.0000000000000000e+00 0 0 0 +3688 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.4436100243784864e+00 0.0000000000000000e+00 0 0 0 +3689 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.4365389565666211e+00 0.0000000000000000e+00 0 0 0 +3690 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.4436100243784864e+00 0.0000000000000000e+00 0 0 0 +3691 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.4577521600022174e+00 0.0000000000000000e+00 0 0 0 +3692 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.4506810921903521e+00 0.0000000000000000e+00 0 0 0 +3693 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.4577521600022174e+00 0.0000000000000000e+00 0 0 0 +3694 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.4718942956259484e+00 0.0000000000000000e+00 0 0 0 +3695 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.4648232278140831e+00 0.0000000000000000e+00 0 0 0 +3696 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.4718942956259484e+00 0.0000000000000000e+00 0 0 0 +3697 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.4860364312496794e+00 0.0000000000000000e+00 0 0 0 +3698 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.4789653634378137e+00 0.0000000000000000e+00 0 0 0 +3699 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.4860364312496794e+00 0.0000000000000000e+00 0 0 0 +3700 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.5001785668734104e+00 0.0000000000000000e+00 0 0 0 +3701 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.4931074990615447e+00 0.0000000000000000e+00 0 0 0 +3702 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.5001785668734104e+00 0.0000000000000000e+00 0 0 0 +3703 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.5143207024971415e+00 0.0000000000000000e+00 0 0 0 +3704 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.5072496346852757e+00 0.0000000000000000e+00 0 0 0 +3705 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.5143207024971415e+00 0.0000000000000000e+00 0 0 0 +3706 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.5284628381208720e+00 0.0000000000000000e+00 0 0 0 +3707 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.5213917703090067e+00 0.0000000000000000e+00 0 0 0 +3708 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.5284628381208720e+00 0.0000000000000000e+00 0 0 0 +3709 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.5426049737446030e+00 0.0000000000000000e+00 0 0 0 +3710 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.5355339059327378e+00 0.0000000000000000e+00 0 0 0 +3711 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.5426049737446030e+00 0.0000000000000000e+00 0 0 0 +3712 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.5567471093683340e+00 0.0000000000000000e+00 0 0 0 +3713 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.5496760415564688e+00 0.0000000000000000e+00 0 0 0 +3714 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.5567471093683340e+00 0.0000000000000000e+00 0 0 0 +3715 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.5708892449920651e+00 0.0000000000000000e+00 0 0 0 +3716 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.5638181771801998e+00 0.0000000000000000e+00 0 0 0 +3717 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.5708892449920651e+00 0.0000000000000000e+00 0 0 0 +3718 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.5850313806157961e+00 0.0000000000000000e+00 0 0 0 +3719 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.5779603128039303e+00 0.0000000000000000e+00 0 0 0 +3720 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.5850313806157961e+00 0.0000000000000000e+00 0 0 0 +3721 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.5991735162395271e+00 0.0000000000000000e+00 0 0 0 +3722 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.5921024484276614e+00 0.0000000000000000e+00 0 0 0 +3723 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.5991735162395271e+00 0.0000000000000000e+00 0 0 0 +3724 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.6133156518632581e+00 0.0000000000000000e+00 0 0 0 +3725 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.6062445840513924e+00 0.0000000000000000e+00 0 0 0 +3726 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.6133156518632581e+00 0.0000000000000000e+00 0 0 0 +3727 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.6274577874869887e+00 0.0000000000000000e+00 0 0 0 +3728 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.6203867196751234e+00 0.0000000000000000e+00 0 0 0 +3729 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.6274577874869887e+00 0.0000000000000000e+00 0 0 0 +3730 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.6415999231107197e+00 0.0000000000000000e+00 0 0 0 +3731 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.6345288552988544e+00 0.0000000000000000e+00 0 0 0 +3732 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.6415999231107197e+00 0.0000000000000000e+00 0 0 0 +3733 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.6557420587344507e+00 0.0000000000000000e+00 0 0 0 +3734 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.6486709909225854e+00 0.0000000000000000e+00 0 0 0 +3735 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.6557420587344507e+00 0.0000000000000000e+00 0 0 0 +3737 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.6628131265463164e+00 0.0000000000000000e+00 0 0 0 +3736 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.6698841943581817e+00 0.0000000000000000e+00 0 0 0 +3738 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.6698841943581817e+00 0.0000000000000000e+00 0 0 0 +3739 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.6840263299819127e+00 0.0000000000000000e+00 0 0 0 +3740 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.6769552621700470e+00 0.0000000000000000e+00 0 0 0 +3741 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.6840263299819127e+00 0.0000000000000000e+00 0 0 0 +3742 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.6981684656056437e+00 0.0000000000000000e+00 0 0 0 +3743 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.6910973977937780e+00 0.0000000000000000e+00 0 0 0 +3744 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.6981684656056437e+00 0.0000000000000000e+00 0 0 0 +3745 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.7123106012293747e+00 0.0000000000000000e+00 0 0 0 +3746 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.7052395334175090e+00 0.0000000000000000e+00 0 0 0 +3747 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.7123106012293747e+00 0.0000000000000000e+00 0 0 0 +3748 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.7264527368531053e+00 0.0000000000000000e+00 0 0 0 +3749 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.7193816690412400e+00 0.0000000000000000e+00 0 0 0 +3750 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.7264527368531053e+00 0.0000000000000000e+00 0 0 0 +3751 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.7405948724768363e+00 0.0000000000000000e+00 0 0 0 +3752 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.7335238046649710e+00 0.0000000000000000e+00 0 0 0 +3753 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.7405948724768363e+00 0.0000000000000000e+00 0 0 0 +3754 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.7547370081005673e+00 0.0000000000000000e+00 0 0 0 +3755 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.7476659402887020e+00 0.0000000000000000e+00 0 0 0 +3756 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.7547370081005673e+00 0.0000000000000000e+00 0 0 0 +3757 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.7688791437242983e+00 0.0000000000000000e+00 0 0 0 +3758 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.7618080759124330e+00 0.0000000000000000e+00 0 0 0 +3759 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.7688791437242983e+00 0.0000000000000000e+00 0 0 0 +3760 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.7830212793480293e+00 0.0000000000000000e+00 0 0 0 +3761 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.7759502115361636e+00 0.0000000000000000e+00 0 0 0 +3762 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.7830212793480293e+00 0.0000000000000000e+00 0 0 0 +3763 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.7971634149717604e+00 0.0000000000000000e+00 0 0 0 +3764 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.7900923471598946e+00 0.0000000000000000e+00 0 0 0 +3765 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.7971634149717604e+00 0.0000000000000000e+00 0 0 0 +3766 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.8113055505954914e+00 0.0000000000000000e+00 0 0 0 +3767 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.8042344827836256e+00 0.0000000000000000e+00 0 0 0 +3768 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.8113055505954914e+00 0.0000000000000000e+00 0 0 0 +3769 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.8254476862192224e+00 0.0000000000000000e+00 0 0 0 +3770 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.8183766184073566e+00 0.0000000000000000e+00 0 0 0 +3771 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.8254476862192224e+00 0.0000000000000000e+00 0 0 0 +3773 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.8325187540310877e+00 0.0000000000000000e+00 0 0 0 +3772 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.8395898218429529e+00 0.0000000000000000e+00 0 0 0 +3774 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.8395898218429529e+00 0.0000000000000000e+00 0 0 0 +3775 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.8537319574666840e+00 0.0000000000000000e+00 0 0 0 +3776 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.8466608896548187e+00 0.0000000000000000e+00 0 0 0 +3777 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.8537319574666840e+00 0.0000000000000000e+00 0 0 0 +3778 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.8678740930904150e+00 0.0000000000000000e+00 0 0 0 +3779 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.8608030252785497e+00 0.0000000000000000e+00 0 0 0 +3780 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.8678740930904150e+00 0.0000000000000000e+00 0 0 0 +3781 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.8820162287141460e+00 0.0000000000000000e+00 0 0 0 +3782 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.8749451609022807e+00 0.0000000000000000e+00 0 0 0 +3783 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.8820162287141460e+00 0.0000000000000000e+00 0 0 0 +3784 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.8961583643378770e+00 0.0000000000000000e+00 0 0 0 +3785 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.8890872965260113e+00 0.0000000000000000e+00 0 0 0 +3786 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.8961583643378770e+00 0.0000000000000000e+00 0 0 0 +3787 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.9103004999616080e+00 0.0000000000000000e+00 0 0 0 +3788 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.9032294321497423e+00 0.0000000000000000e+00 0 0 0 +3789 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.9103004999616080e+00 0.0000000000000000e+00 0 0 0 +3790 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.9244426355853390e+00 0.0000000000000000e+00 0 0 0 +3791 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.9173715677734733e+00 0.0000000000000000e+00 0 0 0 +3792 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.9244426355853390e+00 0.0000000000000000e+00 0 0 0 +3793 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.9385847712090696e+00 0.0000000000000000e+00 0 0 0 +3794 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.9315137033972043e+00 0.0000000000000000e+00 0 0 0 +3795 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.9385847712090696e+00 0.0000000000000000e+00 0 0 0 +3796 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.9527269068328006e+00 0.0000000000000000e+00 0 0 0 +3797 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.9456558390209353e+00 0.0000000000000000e+00 0 0 0 +3798 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.9527269068328006e+00 0.0000000000000000e+00 0 0 0 +3799 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.9668690424565316e+00 0.0000000000000000e+00 0 0 0 +3800 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.9597979746446663e+00 0.0000000000000000e+00 0 0 0 +3801 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.9668690424565316e+00 0.0000000000000000e+00 0 0 0 +3802 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.9810111780802626e+00 0.0000000000000000e+00 0 0 0 +3803 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.9739401102683973e+00 0.0000000000000000e+00 0 0 0 +3804 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.9810111780802626e+00 0.0000000000000000e+00 0 0 0 +3805 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 3.9951533137039936e+00 0.0000000000000000e+00 0 0 0 +3806 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 3.9880822458921279e+00 0.0000000000000000e+00 0 0 0 +3807 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 3.9951533137039936e+00 0.0000000000000000e+00 0 0 0 +3808 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.0092954493277242e+00 0.0000000000000000e+00 0 0 0 +3809 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.0022243815158589e+00 0.0000000000000000e+00 0 0 0 +3810 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.0092954493277242e+00 0.0000000000000000e+00 0 0 0 +3811 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.0234375849514556e+00 0.0000000000000000e+00 0 0 0 +3812 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.0163665171395904e+00 0.0000000000000000e+00 0 0 0 +3813 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.0234375849514556e+00 0.0000000000000000e+00 0 0 0 +3814 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.0375797205751862e+00 0.0000000000000000e+00 0 0 0 +3815 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.0305086527633209e+00 0.0000000000000000e+00 0 0 0 +3816 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.0375797205751862e+00 0.0000000000000000e+00 0 0 0 +3817 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.0517218561989177e+00 0.0000000000000000e+00 0 0 0 +3818 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.0446507883870515e+00 0.0000000000000000e+00 0 0 0 +3819 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.0517218561989177e+00 0.0000000000000000e+00 0 0 0 +3820 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.0658639918226482e+00 0.0000000000000000e+00 0 0 0 +3821 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.0587929240107830e+00 0.0000000000000000e+00 0 0 0 +3822 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.0658639918226482e+00 0.0000000000000000e+00 0 0 0 +3823 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.0800061274463797e+00 0.0000000000000000e+00 0 0 0 +3824 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.0729350596345135e+00 0.0000000000000000e+00 0 0 0 +3825 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.0800061274463797e+00 0.0000000000000000e+00 0 0 0 +3826 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.0941482630701103e+00 0.0000000000000000e+00 0 0 0 +3827 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.0870771952582450e+00 0.0000000000000000e+00 0 0 0 +3828 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.0941482630701103e+00 0.0000000000000000e+00 0 0 0 +3829 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.1082903986938408e+00 0.0000000000000000e+00 0 0 0 +3830 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.1012193308819755e+00 0.0000000000000000e+00 0 0 0 +3831 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.1082903986938408e+00 0.0000000000000000e+00 0 0 0 +3832 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.1224325343175723e+00 0.0000000000000000e+00 0 0 0 +3833 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.1153614665057070e+00 0.0000000000000000e+00 0 0 0 +3834 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.1224325343175723e+00 0.0000000000000000e+00 0 0 0 +3835 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.1365746699413029e+00 0.0000000000000000e+00 0 0 0 +3836 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.1295036021294376e+00 0.0000000000000000e+00 0 0 0 +3837 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.1365746699413029e+00 0.0000000000000000e+00 0 0 0 +3838 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.1507168055650343e+00 0.0000000000000000e+00 0 0 0 +3839 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.1436457377531681e+00 0.0000000000000000e+00 0 0 0 +3840 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.1507168055650343e+00 0.0000000000000000e+00 0 0 0 +3841 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.1648589411887649e+00 0.0000000000000000e+00 0 0 0 +3842 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.1577878733768996e+00 0.0000000000000000e+00 0 0 0 +3843 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.1648589411887649e+00 0.0000000000000000e+00 0 0 0 +3844 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.1790010768124963e+00 0.0000000000000000e+00 0 0 0 +3845 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.1719300090006302e+00 0.0000000000000000e+00 0 0 0 +3846 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.1790010768124963e+00 0.0000000000000000e+00 0 0 0 +3847 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.1931432124362269e+00 0.0000000000000000e+00 0 0 0 +3848 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.1860721446243616e+00 0.0000000000000000e+00 0 0 0 +3849 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.1931432124362269e+00 0.0000000000000000e+00 0 0 0 +3850 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.2072853480599575e+00 0.0000000000000000e+00 0 0 0 +3851 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2002142802480922e+00 0.0000000000000000e+00 0 0 0 +3852 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.2072853480599575e+00 0.0000000000000000e+00 0 0 0 +3853 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.2214274836836889e+00 0.0000000000000000e+00 0 0 0 +3854 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2143564158718236e+00 0.0000000000000000e+00 0 0 0 +3855 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.2214274836836889e+00 0.0000000000000000e+00 0 0 0 +3856 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.2355696193074195e+00 0.0000000000000000e+00 0 0 0 +3857 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2284985514955542e+00 0.0000000000000000e+00 0 0 0 +3858 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.2355696193074195e+00 0.0000000000000000e+00 0 0 0 +3859 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.2497117549311509e+00 0.0000000000000000e+00 0 0 0 +3860 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2426406871192848e+00 0.0000000000000000e+00 0 0 0 +3861 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.2497117549311509e+00 0.0000000000000000e+00 0 0 0 +3862 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.2638538905548815e+00 0.0000000000000000e+00 0 0 0 +3863 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2567828227430162e+00 0.0000000000000000e+00 0 0 0 +3864 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.2638538905548815e+00 0.0000000000000000e+00 0 0 0 +3865 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.2779960261786130e+00 0.0000000000000000e+00 0 0 0 +3866 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2709249583667468e+00 0.0000000000000000e+00 0 0 0 +3867 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.2779960261786130e+00 0.0000000000000000e+00 0 0 0 +3868 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.2921381618023435e+00 0.0000000000000000e+00 0 0 0 +3869 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2850670939904782e+00 0.0000000000000000e+00 0 0 0 +3870 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.2921381618023435e+00 0.0000000000000000e+00 0 0 0 +3871 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.3062802974260741e+00 0.0000000000000000e+00 0 0 0 +3872 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.2992092296142088e+00 0.0000000000000000e+00 0 0 0 +3873 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.3062802974260741e+00 0.0000000000000000e+00 0 0 0 +3874 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.3204224330498056e+00 0.0000000000000000e+00 0 0 0 +3875 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.3133513652379403e+00 0.0000000000000000e+00 0 0 0 +3876 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.3204224330498056e+00 0.0000000000000000e+00 0 0 0 +3878 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.3274935008616708e+00 0.0000000000000000e+00 0 0 0 +3877 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.3345645686735361e+00 0.0000000000000000e+00 0 0 0 +3879 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.3345645686735361e+00 0.0000000000000000e+00 0 0 0 +3880 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.3487067042972676e+00 0.0000000000000000e+00 0 0 0 +3881 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.3416356364854023e+00 0.0000000000000000e+00 0 0 0 +3882 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.3487067042972676e+00 0.0000000000000000e+00 0 0 0 +3883 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.3628488399209981e+00 0.0000000000000000e+00 0 0 0 +3884 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.3557777721091329e+00 0.0000000000000000e+00 0 0 0 +3885 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.3628488399209981e+00 0.0000000000000000e+00 0 0 0 +3886 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.3769909755447296e+00 0.0000000000000000e+00 0 0 0 +3887 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.3699199077328634e+00 0.0000000000000000e+00 0 0 0 +3888 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.3769909755447296e+00 0.0000000000000000e+00 0 0 0 +3889 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.3911331111684602e+00 0.0000000000000000e+00 0 0 0 +3890 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.3840620433565949e+00 0.0000000000000000e+00 0 0 0 +3891 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.3911331111684602e+00 0.0000000000000000e+00 0 0 0 +3892 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.4052752467921907e+00 0.0000000000000000e+00 0 0 0 +3893 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.3982041789803255e+00 0.0000000000000000e+00 0 0 0 +3894 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.4052752467921907e+00 0.0000000000000000e+00 0 0 0 +3895 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.4194173824159222e+00 0.0000000000000000e+00 0 0 0 +3896 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.4123463146040569e+00 0.0000000000000000e+00 0 0 0 +3897 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.4194173824159222e+00 0.0000000000000000e+00 0 0 0 +3898 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.4335595180396528e+00 0.0000000000000000e+00 0 0 0 +3899 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.4264884502277875e+00 0.0000000000000000e+00 0 0 0 +3900 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.4335595180396528e+00 0.0000000000000000e+00 0 0 0 +3901 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.4477016536633842e+00 0.0000000000000000e+00 0 0 0 +3902 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.4406305858515189e+00 0.0000000000000000e+00 0 0 0 +3903 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.4477016536633842e+00 0.0000000000000000e+00 0 0 0 +3904 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.4618437892871148e+00 0.0000000000000000e+00 0 0 0 +3905 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.4547727214752495e+00 0.0000000000000000e+00 0 0 0 +3906 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.4618437892871148e+00 0.0000000000000000e+00 0 0 0 +3907 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.4759859249108462e+00 0.0000000000000000e+00 0 0 0 +3908 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.4689148570989801e+00 0.0000000000000000e+00 0 0 0 +3909 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.4759859249108462e+00 0.0000000000000000e+00 0 0 0 +3910 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.4901280605345768e+00 0.0000000000000000e+00 0 0 0 +3911 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.4830569927227115e+00 0.0000000000000000e+00 0 0 0 +3912 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.4901280605345768e+00 0.0000000000000000e+00 0 0 0 +3914 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.4971991283464421e+00 0.0000000000000000e+00 0 0 0 +3913 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.5042701961583074e+00 0.0000000000000000e+00 0 0 0 +3915 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.5042701961583074e+00 0.0000000000000000e+00 0 0 0 +3916 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.5184123317820388e+00 0.0000000000000000e+00 0 0 0 +3917 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.5113412639701735e+00 0.0000000000000000e+00 0 0 0 +3918 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.5184123317820388e+00 0.0000000000000000e+00 0 0 0 +3919 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.5325544674057694e+00 0.0000000000000000e+00 0 0 0 +3920 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.5254833995939041e+00 0.0000000000000000e+00 0 0 0 +3921 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.5325544674057694e+00 0.0000000000000000e+00 0 0 0 +3922 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.5466966030295008e+00 0.0000000000000000e+00 0 0 0 +3923 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.5396255352176356e+00 0.0000000000000000e+00 0 0 0 +3924 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.5466966030295008e+00 0.0000000000000000e+00 0 0 0 +3925 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.5608387386532314e+00 0.0000000000000000e+00 0 0 0 +3926 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.5537676708413661e+00 0.0000000000000000e+00 0 0 0 +3927 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.5608387386532314e+00 0.0000000000000000e+00 0 0 0 +3928 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.5749808742769629e+00 0.0000000000000000e+00 0 0 0 +3929 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.5679098064650967e+00 0.0000000000000000e+00 0 0 0 +3930 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.5749808742769629e+00 0.0000000000000000e+00 0 0 0 +3931 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.5891230099006934e+00 0.0000000000000000e+00 0 0 0 +3932 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.5820519420888282e+00 0.0000000000000000e+00 0 0 0 +3933 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.5891230099006934e+00 0.0000000000000000e+00 0 0 0 +3934 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.6032651455244240e+00 0.0000000000000000e+00 0 0 0 +3935 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.5961940777125587e+00 0.0000000000000000e+00 0 0 0 +3936 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.6032651455244240e+00 0.0000000000000000e+00 0 0 0 +3937 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.6174072811481555e+00 0.0000000000000000e+00 0 0 0 +3938 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.6103362133362902e+00 0.0000000000000000e+00 0 0 0 +3939 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.6174072811481555e+00 0.0000000000000000e+00 0 0 0 +3940 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.6315494167718860e+00 0.0000000000000000e+00 0 0 0 +3941 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.6244783489600207e+00 0.0000000000000000e+00 0 0 0 +3942 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.6315494167718860e+00 0.0000000000000000e+00 0 0 0 +3943 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.6456915523956175e+00 0.0000000000000000e+00 0 0 0 +3944 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.6386204845837522e+00 0.0000000000000000e+00 0 0 0 +3945 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.6456915523956175e+00 0.0000000000000000e+00 0 0 0 +3946 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.6598336880193481e+00 0.0000000000000000e+00 0 0 0 +3947 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.6527626202074828e+00 0.0000000000000000e+00 0 0 0 +3948 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.6598336880193481e+00 0.0000000000000000e+00 0 0 0 +3950 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.6669047558312133e+00 0.0000000000000000e+00 0 0 0 +3949 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.6739758236430795e+00 0.0000000000000000e+00 0 0 0 +3951 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.6739758236430795e+00 0.0000000000000000e+00 0 0 0 +3952 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.6881179592668101e+00 0.0000000000000000e+00 0 0 0 +3953 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.6810468914549448e+00 0.0000000000000000e+00 0 0 0 +3954 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.6881179592668101e+00 0.0000000000000000e+00 0 0 0 +3955 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.7022600948905415e+00 0.0000000000000000e+00 0 0 0 +3956 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.6951890270786754e+00 0.0000000000000000e+00 0 0 0 +3957 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.7022600948905415e+00 0.0000000000000000e+00 0 0 0 +3958 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.7164022305142721e+00 0.0000000000000000e+00 0 0 0 +3959 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.7093311627024068e+00 0.0000000000000000e+00 0 0 0 +3960 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.7164022305142721e+00 0.0000000000000000e+00 0 0 0 +3961 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.7305443661380027e+00 0.0000000000000000e+00 0 0 0 +3962 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.7234732983261374e+00 0.0000000000000000e+00 0 0 0 +3963 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.7305443661380027e+00 0.0000000000000000e+00 0 0 0 +3964 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.7446865017617341e+00 0.0000000000000000e+00 0 0 0 +3965 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.7376154339498688e+00 0.0000000000000000e+00 0 0 0 +3966 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.7446865017617341e+00 0.0000000000000000e+00 0 0 0 +3967 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.7588286373854647e+00 0.0000000000000000e+00 0 0 0 +3968 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.7517575695735994e+00 0.0000000000000000e+00 0 0 0 +3969 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.7588286373854647e+00 0.0000000000000000e+00 0 0 0 +3970 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.7729707730091961e+00 0.0000000000000000e+00 0 0 0 +3971 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.7658997051973300e+00 0.0000000000000000e+00 0 0 0 +3972 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.7729707730091961e+00 0.0000000000000000e+00 0 0 0 +3973 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.7871129086329267e+00 0.0000000000000000e+00 0 0 0 +3974 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.7800418408210614e+00 0.0000000000000000e+00 0 0 0 +3975 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.7871129086329267e+00 0.0000000000000000e+00 0 0 0 +3976 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.8012550442566582e+00 0.0000000000000000e+00 0 0 0 +3977 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.7941839764447920e+00 0.0000000000000000e+00 0 0 0 +3978 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.8012550442566582e+00 0.0000000000000000e+00 0 0 0 +3979 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.8153971798803887e+00 0.0000000000000000e+00 0 0 0 +3980 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.8083261120685235e+00 0.0000000000000000e+00 0 0 0 +3981 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.8153971798803887e+00 0.0000000000000000e+00 0 0 0 +3982 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.8295393155041193e+00 0.0000000000000000e+00 0 0 0 +3983 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.8224682476922540e+00 0.0000000000000000e+00 0 0 0 +3984 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.8295393155041193e+00 0.0000000000000000e+00 0 0 0 +3985 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.8436814511278508e+00 0.0000000000000000e+00 0 0 0 +3986 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.8366103833159855e+00 0.0000000000000000e+00 0 0 0 +3987 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.8436814511278508e+00 0.0000000000000000e+00 0 0 0 +3988 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.8578235867515813e+00 0.0000000000000000e+00 0 0 0 +3989 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.8507525189397160e+00 0.0000000000000000e+00 0 0 0 +3990 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.8578235867515813e+00 0.0000000000000000e+00 0 0 0 +3991 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.8719657223753128e+00 0.0000000000000000e+00 0 0 0 +3992 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.8648946545634466e+00 0.0000000000000000e+00 0 0 0 +3993 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.8719657223753128e+00 0.0000000000000000e+00 0 0 0 +3994 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.8861078579990433e+00 0.0000000000000000e+00 0 0 0 +3995 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.8790367901871781e+00 0.0000000000000000e+00 0 0 0 +3996 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.8861078579990433e+00 0.0000000000000000e+00 0 0 0 +3997 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.9002499936227748e+00 0.0000000000000000e+00 0 0 0 +3998 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.8931789258109086e+00 0.0000000000000000e+00 0 0 0 +3999 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.9002499936227748e+00 0.0000000000000000e+00 0 0 0 +4000 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.9143921292465054e+00 0.0000000000000000e+00 0 0 0 +4001 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.9073210614346401e+00 0.0000000000000000e+00 0 0 0 +4002 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.9143921292465054e+00 0.0000000000000000e+00 0 0 0 +4003 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.9285342648702359e+00 0.0000000000000000e+00 0 0 0 +4004 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.9214631970583707e+00 0.0000000000000000e+00 0 0 0 +4005 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.9285342648702359e+00 0.0000000000000000e+00 0 0 0 +4006 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.9426764004939674e+00 0.0000000000000000e+00 0 0 0 +4007 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.9356053326821021e+00 0.0000000000000000e+00 0 0 0 +4008 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.9426764004939674e+00 0.0000000000000000e+00 0 0 0 +4009 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.9568185361176980e+00 0.0000000000000000e+00 0 0 0 +4010 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.9497474683058327e+00 0.0000000000000000e+00 0 0 0 +4011 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.9568185361176980e+00 0.0000000000000000e+00 0 0 0 +4012 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.9709606717414294e+00 0.0000000000000000e+00 0 0 0 +4013 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.9638896039295641e+00 0.0000000000000000e+00 0 0 0 +4014 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.9709606717414294e+00 0.0000000000000000e+00 0 0 0 +4015 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.9851028073651600e+00 0.0000000000000000e+00 0 0 0 +4016 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.9780317395532947e+00 0.0000000000000000e+00 0 0 0 +4017 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.9851028073651600e+00 0.0000000000000000e+00 0 0 0 +4018 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 4.9992449429888914e+00 0.0000000000000000e+00 0 0 0 +4019 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 4.9921738751770253e+00 0.0000000000000000e+00 0 0 0 +4020 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 4.9992449429888914e+00 0.0000000000000000e+00 0 0 0 +4021 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.0133870786126220e+00 0.0000000000000000e+00 0 0 0 +4022 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.0063160108007567e+00 0.0000000000000000e+00 0 0 0 +4023 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.0133870786126220e+00 0.0000000000000000e+00 0 0 0 +4024 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.0275292142363526e+00 0.0000000000000000e+00 0 0 0 +4025 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.0204581464244873e+00 0.0000000000000000e+00 0 0 0 +4026 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.0275292142363526e+00 0.0000000000000000e+00 0 0 0 +4027 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.0416713498600840e+00 0.0000000000000000e+00 0 0 0 +4028 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.0346002820482187e+00 0.0000000000000000e+00 0 0 0 +4029 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.0416713498600840e+00 0.0000000000000000e+00 0 0 0 +4030 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.0558134854838146e+00 0.0000000000000000e+00 0 0 0 +4031 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.0487424176719493e+00 0.0000000000000000e+00 0 0 0 +4032 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.0558134854838146e+00 0.0000000000000000e+00 0 0 0 +4033 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.0699556211075461e+00 0.0000000000000000e+00 0 0 0 +4034 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.0628845532956808e+00 0.0000000000000000e+00 0 0 0 +4035 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.0699556211075461e+00 0.0000000000000000e+00 0 0 0 +4036 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.0840977567312766e+00 0.0000000000000000e+00 0 0 0 +4037 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.0770266889194113e+00 0.0000000000000000e+00 0 0 0 +4038 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.0840977567312766e+00 0.0000000000000000e+00 0 0 0 +4039 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.0982398923550081e+00 0.0000000000000000e+00 0 0 0 +4040 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.0911688245431419e+00 0.0000000000000000e+00 0 0 0 +4041 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.0982398923550081e+00 0.0000000000000000e+00 0 0 0 +4042 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.1123820279787386e+00 0.0000000000000000e+00 0 0 0 +4043 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.1053109601668734e+00 0.0000000000000000e+00 0 0 0 +4044 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.1123820279787386e+00 0.0000000000000000e+00 0 0 0 +4045 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.1265241636024692e+00 0.0000000000000000e+00 0 0 0 +4046 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.1194530957906039e+00 0.0000000000000000e+00 0 0 0 +4047 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.1265241636024692e+00 0.0000000000000000e+00 0 0 0 +4048 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.1406662992262007e+00 0.0000000000000000e+00 0 0 0 +4049 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.1335952314143354e+00 0.0000000000000000e+00 0 0 0 +4050 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.1406662992262007e+00 0.0000000000000000e+00 0 0 0 +4051 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.1548084348499312e+00 0.0000000000000000e+00 0 0 0 +4052 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.1477373670380659e+00 0.0000000000000000e+00 0 0 0 +4053 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.1548084348499312e+00 0.0000000000000000e+00 0 0 0 +4055 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.1618795026617974e+00 0.0000000000000000e+00 0 0 0 +4054 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.1689505704736627e+00 0.0000000000000000e+00 0 0 0 +4056 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.1689505704736627e+00 0.0000000000000000e+00 0 0 0 +4057 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.1830927060973933e+00 0.0000000000000000e+00 0 0 0 +4058 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.1760216382855280e+00 0.0000000000000000e+00 0 0 0 +4059 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.1830927060973933e+00 0.0000000000000000e+00 0 0 0 +4060 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.1972348417211247e+00 0.0000000000000000e+00 0 0 0 +4061 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.1901637739092585e+00 0.0000000000000000e+00 0 0 0 +4062 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.1972348417211247e+00 0.0000000000000000e+00 0 0 0 +4063 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.2113769773448553e+00 0.0000000000000000e+00 0 0 0 +4064 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.2043059095329900e+00 0.0000000000000000e+00 0 0 0 +4065 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.2113769773448553e+00 0.0000000000000000e+00 0 0 0 +4066 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.2255191129685858e+00 0.0000000000000000e+00 0 0 0 +4067 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.2184480451567206e+00 0.0000000000000000e+00 0 0 0 +4068 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.2255191129685858e+00 0.0000000000000000e+00 0 0 0 +4069 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.2396612485923173e+00 0.0000000000000000e+00 0 0 0 +4070 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.2325901807804520e+00 0.0000000000000000e+00 0 0 0 +4071 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.2396612485923173e+00 0.0000000000000000e+00 0 0 0 +4072 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.2538033842160479e+00 0.0000000000000000e+00 0 0 0 +4073 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.2467323164041826e+00 0.0000000000000000e+00 0 0 0 +4074 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.2538033842160479e+00 0.0000000000000000e+00 0 0 0 +4075 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.2679455198397793e+00 0.0000000000000000e+00 0 0 0 +4076 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.2608744520279140e+00 0.0000000000000000e+00 0 0 0 +4077 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.2679455198397793e+00 0.0000000000000000e+00 0 0 0 +4078 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.2820876554635099e+00 0.0000000000000000e+00 0 0 0 +4079 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.2750165876516446e+00 0.0000000000000000e+00 0 0 0 +4080 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.2820876554635099e+00 0.0000000000000000e+00 0 0 0 +4081 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.2962297910872413e+00 0.0000000000000000e+00 0 0 0 +4082 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.2891587232753752e+00 0.0000000000000000e+00 0 0 0 +4083 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.2962297910872413e+00 0.0000000000000000e+00 0 0 0 +4084 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.3103719267109719e+00 0.0000000000000000e+00 0 0 0 +4085 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.3033008588991066e+00 0.0000000000000000e+00 0 0 0 +4086 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.3103719267109719e+00 0.0000000000000000e+00 0 0 0 +4087 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.3245140623347034e+00 0.0000000000000000e+00 0 0 0 +4088 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.3174429945228372e+00 0.0000000000000000e+00 0 0 0 +4089 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.3245140623347034e+00 0.0000000000000000e+00 0 0 0 +4091 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.3315851301465687e+00 0.0000000000000000e+00 0 0 0 +4090 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.3386561979584339e+00 0.0000000000000000e+00 0 0 0 +4092 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.3386561979584339e+00 0.0000000000000000e+00 0 0 0 +4093 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.3527983335821645e+00 0.0000000000000000e+00 0 0 0 +4094 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.3457272657702992e+00 0.0000000000000000e+00 0 0 0 +4095 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.3527983335821645e+00 0.0000000000000000e+00 0 0 0 +4096 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.3669404692058960e+00 0.0000000000000000e+00 0 0 0 +4097 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.3598694013940307e+00 0.0000000000000000e+00 0 0 0 +4098 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.3669404692058960e+00 0.0000000000000000e+00 0 0 0 +4099 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.3810826048296265e+00 0.0000000000000000e+00 0 0 0 +4100 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.3740115370177612e+00 0.0000000000000000e+00 0 0 0 +4101 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.3810826048296265e+00 0.0000000000000000e+00 0 0 0 +4102 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.3952247404533580e+00 0.0000000000000000e+00 0 0 0 +4103 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.3881536726414918e+00 0.0000000000000000e+00 0 0 0 +4104 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.3952247404533580e+00 0.0000000000000000e+00 0 0 0 +4105 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.4093668760770885e+00 0.0000000000000000e+00 0 0 0 +4106 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.4022958082652233e+00 0.0000000000000000e+00 0 0 0 +4107 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.4093668760770885e+00 0.0000000000000000e+00 0 0 0 +4108 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.4235090117008200e+00 0.0000000000000000e+00 0 0 0 +4109 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.4164379438889538e+00 0.0000000000000000e+00 0 0 0 +4110 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.4235090117008200e+00 0.0000000000000000e+00 0 0 0 +4111 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.4376511473245506e+00 0.0000000000000000e+00 0 0 0 +4112 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.4305800795126853e+00 0.0000000000000000e+00 0 0 0 +4113 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.4376511473245506e+00 0.0000000000000000e+00 0 0 0 +4114 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.4517932829482811e+00 0.0000000000000000e+00 0 0 0 +4115 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.4447222151364159e+00 0.0000000000000000e+00 0 0 0 +4116 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.4517932829482811e+00 0.0000000000000000e+00 0 0 0 +4117 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.4659354185720126e+00 0.0000000000000000e+00 0 0 0 +4118 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.4588643507601473e+00 0.0000000000000000e+00 0 0 0 +4119 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.4659354185720126e+00 0.0000000000000000e+00 0 0 0 +4120 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.4800775541957432e+00 0.0000000000000000e+00 0 0 0 +4121 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.4730064863838779e+00 0.0000000000000000e+00 0 0 0 +4122 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.4800775541957432e+00 0.0000000000000000e+00 0 0 0 +4123 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.4942196898194746e+00 0.0000000000000000e+00 0 0 0 +4124 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.4871486220076084e+00 0.0000000000000000e+00 0 0 0 +4125 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.4942196898194746e+00 0.0000000000000000e+00 0 0 0 +4126 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.5083618254432052e+00 0.0000000000000000e+00 0 0 0 +4127 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.5012907576313399e+00 0.0000000000000000e+00 0 0 0 +4128 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.5083618254432052e+00 0.0000000000000000e+00 0 0 0 +4129 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.5225039610669366e+00 0.0000000000000000e+00 0 0 0 +4130 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.5154328932550705e+00 0.0000000000000000e+00 0 0 0 +4131 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.5225039610669366e+00 0.0000000000000000e+00 0 0 0 +4132 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.5366460966906672e+00 0.0000000000000000e+00 0 0 0 +4133 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.5295750288788019e+00 0.0000000000000000e+00 0 0 0 +4134 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.5366460966906672e+00 0.0000000000000000e+00 0 0 0 +4135 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.5507882323143978e+00 0.0000000000000000e+00 0 0 0 +4136 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.5437171645025325e+00 0.0000000000000000e+00 0 0 0 +4137 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.5507882323143978e+00 0.0000000000000000e+00 0 0 0 +4138 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.5649303679381292e+00 0.0000000000000000e+00 0 0 0 +4139 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.5578593001262639e+00 0.0000000000000000e+00 0 0 0 +4140 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.5649303679381292e+00 0.0000000000000000e+00 0 0 0 +4141 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.5790725035618598e+00 0.0000000000000000e+00 0 0 0 +4142 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.5720014357499945e+00 0.0000000000000000e+00 0 0 0 +4143 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.5790725035618598e+00 0.0000000000000000e+00 0 0 0 +4144 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.5932146391855913e+00 0.0000000000000000e+00 0 0 0 +4145 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.5861435713737251e+00 0.0000000000000000e+00 0 0 0 +4146 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.5932146391855913e+00 0.0000000000000000e+00 0 0 0 +4147 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.6073567748093218e+00 0.0000000000000000e+00 0 0 0 +4148 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6002857069974565e+00 0.0000000000000000e+00 0 0 0 +4149 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.6073567748093218e+00 0.0000000000000000e+00 0 0 0 +4150 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.6214989104330533e+00 0.0000000000000000e+00 0 0 0 +4151 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6144278426211871e+00 0.0000000000000000e+00 0 0 0 +4152 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.6214989104330533e+00 0.0000000000000000e+00 0 0 0 +4153 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.6356410460567838e+00 0.0000000000000000e+00 0 0 0 +4154 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6285699782449186e+00 0.0000000000000000e+00 0 0 0 +4155 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.6356410460567838e+00 0.0000000000000000e+00 0 0 0 +4156 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.6497831816805144e+00 0.0000000000000000e+00 0 0 0 +4157 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6427121138686491e+00 0.0000000000000000e+00 0 0 0 +4158 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.6497831816805144e+00 0.0000000000000000e+00 0 0 0 +4159 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.6639253173042459e+00 0.0000000000000000e+00 0 0 0 +4160 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6568542494923806e+00 0.0000000000000000e+00 0 0 0 +4161 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.6639253173042459e+00 0.0000000000000000e+00 0 0 0 +4162 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.6780674529279764e+00 0.0000000000000000e+00 0 0 0 +4163 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6709963851161111e+00 0.0000000000000000e+00 0 0 0 +4164 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.6780674529279764e+00 0.0000000000000000e+00 0 0 0 +4165 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.6922095885517079e+00 0.0000000000000000e+00 0 0 0 +4166 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6851385207398426e+00 0.0000000000000000e+00 0 0 0 +4167 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.6922095885517079e+00 0.0000000000000000e+00 0 0 0 +4168 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.7063517241754385e+00 0.0000000000000000e+00 0 0 0 +4169 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.6992806563635732e+00 0.0000000000000000e+00 0 0 0 +4170 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.7063517241754385e+00 0.0000000000000000e+00 0 0 0 +4171 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.7204938597991699e+00 0.0000000000000000e+00 0 0 0 +4172 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.7134227919873037e+00 0.0000000000000000e+00 0 0 0 +4173 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.7204938597991699e+00 0.0000000000000000e+00 0 0 0 +4174 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.7346359954229005e+00 0.0000000000000000e+00 0 0 0 +4175 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.7275649276110352e+00 0.0000000000000000e+00 0 0 0 +4176 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.7346359954229005e+00 0.0000000000000000e+00 0 0 0 +4177 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.7487781310466310e+00 0.0000000000000000e+00 0 0 0 +4178 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.7417070632347658e+00 0.0000000000000000e+00 0 0 0 +4179 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.7487781310466310e+00 0.0000000000000000e+00 0 0 0 +4180 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.7629202666703625e+00 0.0000000000000000e+00 0 0 0 +4181 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.7558491988584972e+00 0.0000000000000000e+00 0 0 0 +4182 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.7629202666703625e+00 0.0000000000000000e+00 0 0 0 +4183 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.7770624022940931e+00 0.0000000000000000e+00 0 0 0 +4184 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.7699913344822278e+00 0.0000000000000000e+00 0 0 0 +4185 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.7770624022940931e+00 0.0000000000000000e+00 0 0 0 +4186 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.7912045379178245e+00 0.0000000000000000e+00 0 0 0 +4187 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.7841334701059592e+00 0.0000000000000000e+00 0 0 0 +4188 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.7912045379178245e+00 0.0000000000000000e+00 0 0 0 +4189 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.8053466735415551e+00 0.0000000000000000e+00 0 0 0 +4190 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.7982756057296898e+00 0.0000000000000000e+00 0 0 0 +4191 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.8053466735415551e+00 0.0000000000000000e+00 0 0 0 +4192 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.8194888091652865e+00 0.0000000000000000e+00 0 0 0 +4193 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.8124177413534204e+00 0.0000000000000000e+00 0 0 0 +4194 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.8194888091652865e+00 0.0000000000000000e+00 0 0 0 +4195 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.8336309447890171e+00 0.0000000000000000e+00 0 0 0 +4196 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.8265598769771518e+00 0.0000000000000000e+00 0 0 0 +4197 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.8336309447890171e+00 0.0000000000000000e+00 0 0 0 +4198 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.8477730804127477e+00 0.0000000000000000e+00 0 0 0 +4199 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.8407020126008824e+00 0.0000000000000000e+00 0 0 0 +4200 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.8477730804127477e+00 0.0000000000000000e+00 0 0 0 +4201 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.8619152160364791e+00 0.0000000000000000e+00 0 0 0 +4202 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.8548441482246139e+00 0.0000000000000000e+00 0 0 0 +4203 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.8619152160364791e+00 0.0000000000000000e+00 0 0 0 +4204 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.8760573516602097e+00 0.0000000000000000e+00 0 0 0 +4205 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.8689862838483444e+00 0.0000000000000000e+00 0 0 0 +4206 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.8760573516602097e+00 0.0000000000000000e+00 0 0 0 +4207 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.8901994872839412e+00 0.0000000000000000e+00 0 0 0 +4208 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.8831284194720759e+00 0.0000000000000000e+00 0 0 0 +4209 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.8901994872839412e+00 0.0000000000000000e+00 0 0 0 +4210 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.9043416229076717e+00 0.0000000000000000e+00 0 0 0 +4211 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.8972705550958064e+00 0.0000000000000000e+00 0 0 0 +4212 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.9043416229076717e+00 0.0000000000000000e+00 0 0 0 +4213 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.9184837585314032e+00 0.0000000000000000e+00 0 0 0 +4214 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.9114126907195370e+00 0.0000000000000000e+00 0 0 0 +4215 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.9184837585314032e+00 0.0000000000000000e+00 0 0 0 +4216 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.9326258941551338e+00 0.0000000000000000e+00 0 0 0 +4217 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.9255548263432685e+00 0.0000000000000000e+00 0 0 0 +4218 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.9326258941551338e+00 0.0000000000000000e+00 0 0 0 +4219 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.9467680297788652e+00 0.0000000000000000e+00 0 0 0 +4220 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.9396969619669990e+00 0.0000000000000000e+00 0 0 0 +4221 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.9467680297788652e+00 0.0000000000000000e+00 0 0 0 +4222 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.9609101654025958e+00 0.0000000000000000e+00 0 0 0 +4223 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.9538390975907305e+00 0.0000000000000000e+00 0 0 0 +4224 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.9609101654025958e+00 0.0000000000000000e+00 0 0 0 +4225 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.9750523010263263e+00 0.0000000000000000e+00 0 0 0 +4226 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.9679812332144611e+00 0.0000000000000000e+00 0 0 0 +4227 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.9750523010263263e+00 0.0000000000000000e+00 0 0 0 +4228 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 5.9891944366500578e+00 0.0000000000000000e+00 0 0 0 +4229 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.9821233688381925e+00 0.0000000000000000e+00 0 0 0 +4230 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 5.9891944366500578e+00 0.0000000000000000e+00 0 0 0 +4232 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 5.9962655044619231e+00 0.0000000000000000e+00 0 0 0 +4231 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.0033365722737884e+00 0.0000000000000000e+00 0 0 0 +4233 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.0033365722737884e+00 0.0000000000000000e+00 0 0 0 +4234 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.0174787078975198e+00 0.0000000000000000e+00 0 0 0 +4235 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.0104076400856536e+00 0.0000000000000000e+00 0 0 0 +4236 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.0174787078975198e+00 0.0000000000000000e+00 0 0 0 +4237 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.0316208435212504e+00 0.0000000000000000e+00 0 0 0 +4238 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.0245497757093851e+00 0.0000000000000000e+00 0 0 0 +4239 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.0316208435212504e+00 0.0000000000000000e+00 0 0 0 +4240 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.0457629791449818e+00 0.0000000000000000e+00 0 0 0 +4241 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.0386919113331157e+00 0.0000000000000000e+00 0 0 0 +4242 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.0457629791449818e+00 0.0000000000000000e+00 0 0 0 +4243 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.0599051147687124e+00 0.0000000000000000e+00 0 0 0 +4244 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.0528340469568471e+00 0.0000000000000000e+00 0 0 0 +4245 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.0599051147687124e+00 0.0000000000000000e+00 0 0 0 +4246 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.0740472503924430e+00 0.0000000000000000e+00 0 0 0 +4247 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.0669761825805777e+00 0.0000000000000000e+00 0 0 0 +4248 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.0740472503924430e+00 0.0000000000000000e+00 0 0 0 +4249 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.0881893860161744e+00 0.0000000000000000e+00 0 0 0 +4250 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.0811183182043091e+00 0.0000000000000000e+00 0 0 0 +4251 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.0881893860161744e+00 0.0000000000000000e+00 0 0 0 +4252 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.1023315216399050e+00 0.0000000000000000e+00 0 0 0 +4253 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.0952604538280397e+00 0.0000000000000000e+00 0 0 0 +4254 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.1023315216399050e+00 0.0000000000000000e+00 0 0 0 +4255 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.1164736572636365e+00 0.0000000000000000e+00 0 0 0 +4256 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.1094025894517703e+00 0.0000000000000000e+00 0 0 0 +4257 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.1164736572636365e+00 0.0000000000000000e+00 0 0 0 +4258 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.1306157928873670e+00 0.0000000000000000e+00 0 0 0 +4259 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.1235447250755017e+00 0.0000000000000000e+00 0 0 0 +4260 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.1306157928873670e+00 0.0000000000000000e+00 0 0 0 +4261 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.1447579285110985e+00 0.0000000000000000e+00 0 0 0 +4262 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.1376868606992323e+00 0.0000000000000000e+00 0 0 0 +4263 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.1447579285110985e+00 0.0000000000000000e+00 0 0 0 +4264 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.1589000641348290e+00 0.0000000000000000e+00 0 0 0 +4265 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.1518289963229638e+00 0.0000000000000000e+00 0 0 0 +4266 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.1589000641348290e+00 0.0000000000000000e+00 0 0 0 +4268 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.1659711319466943e+00 0.0000000000000000e+00 0 0 0 +4267 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.1730421997585596e+00 0.0000000000000000e+00 0 0 0 +4269 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.1730421997585596e+00 0.0000000000000000e+00 0 0 0 +4270 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.1871843353822911e+00 0.0000000000000000e+00 0 0 0 +4271 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.1801132675704258e+00 0.0000000000000000e+00 0 0 0 +4272 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.1871843353822911e+00 0.0000000000000000e+00 0 0 0 +4273 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.2013264710060216e+00 0.0000000000000000e+00 0 0 0 +4274 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.1942554031941564e+00 0.0000000000000000e+00 0 0 0 +4275 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.2013264710060216e+00 0.0000000000000000e+00 0 0 0 +4276 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.2154686066297531e+00 0.0000000000000000e+00 0 0 0 +4277 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.2083975388178869e+00 0.0000000000000000e+00 0 0 0 +4278 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.2154686066297531e+00 0.0000000000000000e+00 0 0 0 +4279 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.2296107422534837e+00 0.0000000000000000e+00 0 0 0 +4280 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.2225396744416184e+00 0.0000000000000000e+00 0 0 0 +4281 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.2296107422534837e+00 0.0000000000000000e+00 0 0 0 +4282 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.2437528778772151e+00 0.0000000000000000e+00 0 0 0 +4283 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.2366818100653489e+00 0.0000000000000000e+00 0 0 0 +4284 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.2437528778772151e+00 0.0000000000000000e+00 0 0 0 +4285 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.2578950135009457e+00 0.0000000000000000e+00 0 0 0 +4286 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.2508239456890804e+00 0.0000000000000000e+00 0 0 0 +4287 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.2578950135009457e+00 0.0000000000000000e+00 0 0 0 +4288 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.2720371491246762e+00 0.0000000000000000e+00 0 0 0 +4289 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.2649660813128110e+00 0.0000000000000000e+00 0 0 0 +4290 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.2720371491246762e+00 0.0000000000000000e+00 0 0 0 +4291 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.2861792847484077e+00 0.0000000000000000e+00 0 0 0 +4292 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.2791082169365424e+00 0.0000000000000000e+00 0 0 0 +4293 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.2861792847484077e+00 0.0000000000000000e+00 0 0 0 +4294 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.3003214203721383e+00 0.0000000000000000e+00 0 0 0 +4295 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.2932503525602730e+00 0.0000000000000000e+00 0 0 0 +4296 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.3003214203721383e+00 0.0000000000000000e+00 0 0 0 +4297 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.3144635559958697e+00 0.0000000000000000e+00 0 0 0 +4298 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.3073924881840044e+00 0.0000000000000000e+00 0 0 0 +4299 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.3144635559958697e+00 0.0000000000000000e+00 0 0 0 +4300 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.3286056916196003e+00 0.0000000000000000e+00 0 0 0 +4301 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.3215346238077350e+00 0.0000000000000000e+00 0 0 0 +4302 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.3286056916196003e+00 0.0000000000000000e+00 0 0 0 +4303 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.3427478272433317e+00 0.0000000000000000e+00 0 0 0 +4304 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.3356767594314656e+00 0.0000000000000000e+00 0 0 0 +4305 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.3427478272433317e+00 0.0000000000000000e+00 0 0 0 +4306 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.3568899628670623e+00 0.0000000000000000e+00 0 0 0 +4307 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.3498188950551970e+00 0.0000000000000000e+00 0 0 0 +4308 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.3568899628670623e+00 0.0000000000000000e+00 0 0 0 +4309 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.3710320984907929e+00 0.0000000000000000e+00 0 0 0 +4310 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.3639610306789276e+00 0.0000000000000000e+00 0 0 0 +4311 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.3710320984907929e+00 0.0000000000000000e+00 0 0 0 +4312 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.3851742341145243e+00 0.0000000000000000e+00 0 0 0 +4313 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.3781031663026591e+00 0.0000000000000000e+00 0 0 0 +4314 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.3851742341145243e+00 0.0000000000000000e+00 0 0 0 +4315 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.3993163697382549e+00 0.0000000000000000e+00 0 0 0 +4316 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.3922453019263896e+00 0.0000000000000000e+00 0 0 0 +4317 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.3993163697382549e+00 0.0000000000000000e+00 0 0 0 +4318 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.4134585053619864e+00 0.0000000000000000e+00 0 0 0 +4319 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.4063874375501211e+00 0.0000000000000000e+00 0 0 0 +4320 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.4134585053619864e+00 0.0000000000000000e+00 0 0 0 +4321 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.4276006409857169e+00 0.0000000000000000e+00 0 0 0 +4322 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.4205295731738516e+00 0.0000000000000000e+00 0 0 0 +4323 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.4276006409857169e+00 0.0000000000000000e+00 0 0 0 +4324 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.4417427766094484e+00 0.0000000000000000e+00 0 0 0 +4325 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.4346717087975822e+00 0.0000000000000000e+00 0 0 0 +4326 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.4417427766094484e+00 0.0000000000000000e+00 0 0 0 +4327 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.4558849122331790e+00 0.0000000000000000e+00 0 0 0 +4328 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.4488138444213137e+00 0.0000000000000000e+00 0 0 0 +4329 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.4558849122331790e+00 0.0000000000000000e+00 0 0 0 +4330 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.4700270478569095e+00 0.0000000000000000e+00 0 0 0 +4331 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.4629559800450442e+00 0.0000000000000000e+00 0 0 0 +4332 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.4700270478569095e+00 0.0000000000000000e+00 0 0 0 +4333 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.4841691834806410e+00 0.0000000000000000e+00 0 0 0 +4334 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.4770981156687757e+00 0.0000000000000000e+00 0 0 0 +4335 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.4841691834806410e+00 0.0000000000000000e+00 0 0 0 +4336 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.4983113191043715e+00 0.0000000000000000e+00 0 0 0 +4337 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.4912402512925063e+00 0.0000000000000000e+00 0 0 0 +4338 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.4983113191043715e+00 0.0000000000000000e+00 0 0 0 +4339 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.5124534547281030e+00 0.0000000000000000e+00 0 0 0 +4340 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.5053823869162377e+00 0.0000000000000000e+00 0 0 0 +4341 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.5124534547281030e+00 0.0000000000000000e+00 0 0 0 +4342 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.5265955903518336e+00 0.0000000000000000e+00 0 0 0 +4343 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.5195245225399683e+00 0.0000000000000000e+00 0 0 0 +4344 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.5265955903518336e+00 0.0000000000000000e+00 0 0 0 +4345 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.5407377259755650e+00 0.0000000000000000e+00 0 0 0 +4346 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.5336666581636988e+00 0.0000000000000000e+00 0 0 0 +4347 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.5407377259755650e+00 0.0000000000000000e+00 0 0 0 +4348 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.5548798615992956e+00 0.0000000000000000e+00 0 0 0 +4349 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.5478087937874303e+00 0.0000000000000000e+00 0 0 0 +4350 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.5548798615992956e+00 0.0000000000000000e+00 0 0 0 +4351 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.5690219972230262e+00 0.0000000000000000e+00 0 0 0 +4352 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.5619509294111609e+00 0.0000000000000000e+00 0 0 0 +4353 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.5690219972230262e+00 0.0000000000000000e+00 0 0 0 +4354 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.5831641328467576e+00 0.0000000000000000e+00 0 0 0 +4355 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.5760930650348923e+00 0.0000000000000000e+00 0 0 0 +4356 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.5831641328467576e+00 0.0000000000000000e+00 0 0 0 +4357 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.5973062684704882e+00 0.0000000000000000e+00 0 0 0 +4358 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.5902352006586229e+00 0.0000000000000000e+00 0 0 0 +4359 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.5973062684704882e+00 0.0000000000000000e+00 0 0 0 +4360 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.6114484040942196e+00 0.0000000000000000e+00 0 0 0 +4361 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.6043773362823543e+00 0.0000000000000000e+00 0 0 0 +4362 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.6114484040942196e+00 0.0000000000000000e+00 0 0 0 +4363 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.6255905397179502e+00 0.0000000000000000e+00 0 0 0 +4364 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.6185194719060849e+00 0.0000000000000000e+00 0 0 0 +4365 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.6255905397179502e+00 0.0000000000000000e+00 0 0 0 +4366 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.6397326753416817e+00 0.0000000000000000e+00 0 0 0 +4367 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.6326616075298155e+00 0.0000000000000000e+00 0 0 0 +4368 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.6397326753416817e+00 0.0000000000000000e+00 0 0 0 +4369 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.6538748109654122e+00 0.0000000000000000e+00 0 0 0 +4370 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.6468037431535469e+00 0.0000000000000000e+00 0 0 0 +4371 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.6538748109654122e+00 0.0000000000000000e+00 0 0 0 +4373 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.6609458787772775e+00 0.0000000000000000e+00 0 0 0 +4372 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.6680169465891437e+00 0.0000000000000000e+00 0 0 0 +4374 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.6680169465891437e+00 0.0000000000000000e+00 0 0 0 +4375 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.6821590822128742e+00 0.0000000000000000e+00 0 0 0 +4376 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.6750880144010090e+00 0.0000000000000000e+00 0 0 0 +4377 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.6821590822128742e+00 0.0000000000000000e+00 0 0 0 +4378 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.6963012178366048e+00 0.0000000000000000e+00 0 0 0 +4379 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.6892301500247395e+00 0.0000000000000000e+00 0 0 0 +4380 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.6963012178366048e+00 0.0000000000000000e+00 0 0 0 +4381 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.7104433534603363e+00 0.0000000000000000e+00 0 0 0 +4382 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.7033722856484710e+00 0.0000000000000000e+00 0 0 0 +4383 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.7104433534603363e+00 0.0000000000000000e+00 0 0 0 +4384 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.7245854890840668e+00 0.0000000000000000e+00 0 0 0 +4385 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.7175144212722016e+00 0.0000000000000000e+00 0 0 0 +4386 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.7245854890840668e+00 0.0000000000000000e+00 0 0 0 +4387 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.7387276247077983e+00 0.0000000000000000e+00 0 0 0 +4388 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.7316565568959321e+00 0.0000000000000000e+00 0 0 0 +4389 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.7387276247077983e+00 0.0000000000000000e+00 0 0 0 +4390 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.7528697603315289e+00 0.0000000000000000e+00 0 0 0 +4391 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.7457986925196636e+00 0.0000000000000000e+00 0 0 0 +4392 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.7528697603315289e+00 0.0000000000000000e+00 0 0 0 +4393 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.7670118959552603e+00 0.0000000000000000e+00 0 0 0 +4394 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.7599408281433941e+00 0.0000000000000000e+00 0 0 0 +4395 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.7670118959552603e+00 0.0000000000000000e+00 0 0 0 +4396 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.7811540315789909e+00 0.0000000000000000e+00 0 0 0 +4397 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.7740829637671256e+00 0.0000000000000000e+00 0 0 0 +4398 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.7811540315789909e+00 0.0000000000000000e+00 0 0 0 +4399 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.7952961672027214e+00 0.0000000000000000e+00 0 0 0 +4400 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.7882250993908562e+00 0.0000000000000000e+00 0 0 0 +4401 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.7952961672027214e+00 0.0000000000000000e+00 0 0 0 +4402 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.8094383028264529e+00 0.0000000000000000e+00 0 0 0 +4403 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.8023672350145876e+00 0.0000000000000000e+00 0 0 0 +4404 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.8094383028264529e+00 0.0000000000000000e+00 0 0 0 +4405 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.8235804384501835e+00 0.0000000000000000e+00 0 0 0 +4406 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.8165093706383182e+00 0.0000000000000000e+00 0 0 0 +4407 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.8235804384501835e+00 0.0000000000000000e+00 0 0 0 +4409 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.8306515062620488e+00 0.0000000000000000e+00 0 0 0 +4408 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.8377225740739149e+00 0.0000000000000000e+00 0 0 0 +4410 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.8377225740739149e+00 0.0000000000000000e+00 0 0 0 +4411 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.8518647096976455e+00 0.0000000000000000e+00 0 0 0 +4412 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.8447936418857802e+00 0.0000000000000000e+00 0 0 0 +4413 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.8518647096976455e+00 0.0000000000000000e+00 0 0 0 +4414 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.8660068453213770e+00 0.0000000000000000e+00 0 0 0 +4415 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.8589357775095108e+00 0.0000000000000000e+00 0 0 0 +4416 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.8660068453213770e+00 0.0000000000000000e+00 0 0 0 +4417 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.8801489809451075e+00 0.0000000000000000e+00 0 0 0 +4418 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.8730779131332422e+00 0.0000000000000000e+00 0 0 0 +4419 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.8801489809451075e+00 0.0000000000000000e+00 0 0 0 +4420 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.8942911165688381e+00 0.0000000000000000e+00 0 0 0 +4421 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.8872200487569728e+00 0.0000000000000000e+00 0 0 0 +4422 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.8942911165688381e+00 0.0000000000000000e+00 0 0 0 +4423 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.9084332521925695e+00 0.0000000000000000e+00 0 0 0 +4424 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.9013621843807043e+00 0.0000000000000000e+00 0 0 0 +4425 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.9084332521925695e+00 0.0000000000000000e+00 0 0 0 +4426 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.9225753878163001e+00 0.0000000000000000e+00 0 0 0 +4427 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.9155043200044348e+00 0.0000000000000000e+00 0 0 0 +4428 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.9225753878163001e+00 0.0000000000000000e+00 0 0 0 +4429 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.9367175234400316e+00 0.0000000000000000e+00 0 0 0 +4430 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.9296464556281663e+00 0.0000000000000000e+00 0 0 0 +4431 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.9367175234400316e+00 0.0000000000000000e+00 0 0 0 +4432 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.9508596590637621e+00 0.0000000000000000e+00 0 0 0 +4433 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.9437885912518968e+00 0.0000000000000000e+00 0 0 0 +4434 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.9508596590637621e+00 0.0000000000000000e+00 0 0 0 +4435 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.9650017946874936e+00 0.0000000000000000e+00 0 0 0 +4436 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.9579307268756274e+00 0.0000000000000000e+00 0 0 0 +4437 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.9650017946874936e+00 0.0000000000000000e+00 0 0 0 +4438 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.9791439303112242e+00 0.0000000000000000e+00 0 0 0 +4439 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.9720728624993589e+00 0.0000000000000000e+00 0 0 0 +4440 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.9791439303112242e+00 0.0000000000000000e+00 0 0 0 +4441 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 6.9932860659349547e+00 0.0000000000000000e+00 0 0 0 +4442 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 6.9862149981230894e+00 0.0000000000000000e+00 0 0 0 +4443 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 6.9932860659349547e+00 0.0000000000000000e+00 0 0 0 +4445 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0003571337468209e+00 0.0000000000000000e+00 0 0 0 +4444 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.0074282015586862e+00 0.0000000000000000e+00 0 0 0 +4446 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.0074282015586862e+00 0.0000000000000000e+00 0 0 0 +4447 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.0215703371824167e+00 0.0000000000000000e+00 0 0 0 +4448 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0144992693705515e+00 0.0000000000000000e+00 0 0 0 +4449 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.0215703371824167e+00 0.0000000000000000e+00 0 0 0 +4450 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.0357124728061482e+00 0.0000000000000000e+00 0 0 0 +4451 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0286414049942829e+00 0.0000000000000000e+00 0 0 0 +4452 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.0357124728061482e+00 0.0000000000000000e+00 0 0 0 +4453 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.0498546084298788e+00 0.0000000000000000e+00 0 0 0 +4454 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0427835406180135e+00 0.0000000000000000e+00 0 0 0 +4455 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.0498546084298788e+00 0.0000000000000000e+00 0 0 0 +4456 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.0639967440536102e+00 0.0000000000000000e+00 0 0 0 +4457 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0569256762417440e+00 0.0000000000000000e+00 0 0 0 +4458 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.0639967440536102e+00 0.0000000000000000e+00 0 0 0 +4459 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.0781388796773408e+00 0.0000000000000000e+00 0 0 0 +4460 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0710678118654755e+00 0.0000000000000000e+00 0 0 0 +4461 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.0781388796773408e+00 0.0000000000000000e+00 0 0 0 +4462 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.0922810153010714e+00 0.0000000000000000e+00 0 0 0 +4463 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0852099474892061e+00 0.0000000000000000e+00 0 0 0 +4464 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.0922810153010714e+00 0.0000000000000000e+00 0 0 0 +4465 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.1064231509248028e+00 0.0000000000000000e+00 0 0 0 +4466 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.0993520831129375e+00 0.0000000000000000e+00 0 0 0 +4467 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.1064231509248028e+00 0.0000000000000000e+00 0 0 0 +4468 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.1205652865485334e+00 0.0000000000000000e+00 0 0 0 +4469 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.1134942187366681e+00 0.0000000000000000e+00 0 0 0 +4470 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.1205652865485334e+00 0.0000000000000000e+00 0 0 0 +4471 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.1347074221722648e+00 0.0000000000000000e+00 0 0 0 +4472 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.1276363543603996e+00 0.0000000000000000e+00 0 0 0 +4473 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.1347074221722648e+00 0.0000000000000000e+00 0 0 0 +4474 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.1488495577959954e+00 0.0000000000000000e+00 0 0 0 +4475 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.1417784899841301e+00 0.0000000000000000e+00 0 0 0 +4476 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.1488495577959954e+00 0.0000000000000000e+00 0 0 0 +4477 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.1629916934197269e+00 0.0000000000000000e+00 0 0 0 +4478 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.1559206256078607e+00 0.0000000000000000e+00 0 0 0 +4479 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.1629916934197269e+00 0.0000000000000000e+00 0 0 0 +4480 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.1771338290434574e+00 0.0000000000000000e+00 0 0 0 +4481 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.1700627612315921e+00 0.0000000000000000e+00 0 0 0 +4482 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.1771338290434574e+00 0.0000000000000000e+00 0 0 0 +4483 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.1912759646671880e+00 0.0000000000000000e+00 0 0 0 +4484 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.1842048968553227e+00 0.0000000000000000e+00 0 0 0 +4485 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.1912759646671880e+00 0.0000000000000000e+00 0 0 0 +4486 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.2054181002909194e+00 0.0000000000000000e+00 0 0 0 +4487 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.1983470324790542e+00 0.0000000000000000e+00 0 0 0 +4488 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.2054181002909194e+00 0.0000000000000000e+00 0 0 0 +4489 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.2195602359146500e+00 0.0000000000000000e+00 0 0 0 +4490 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.2124891681027847e+00 0.0000000000000000e+00 0 0 0 +4491 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.2195602359146500e+00 0.0000000000000000e+00 0 0 0 +4492 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.2337023715383815e+00 0.0000000000000000e+00 0 0 0 +4493 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.2266313037265162e+00 0.0000000000000000e+00 0 0 0 +4494 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.2337023715383815e+00 0.0000000000000000e+00 0 0 0 +4495 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.2478445071621120e+00 0.0000000000000000e+00 0 0 0 +4496 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.2407734393502468e+00 0.0000000000000000e+00 0 0 0 +4497 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.2478445071621120e+00 0.0000000000000000e+00 0 0 0 +4498 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.2619866427858435e+00 0.0000000000000000e+00 0 0 0 +4499 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.2549155749739773e+00 0.0000000000000000e+00 0 0 0 +4500 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.2619866427858435e+00 0.0000000000000000e+00 0 0 0 +4501 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.2761287784095741e+00 0.0000000000000000e+00 0 0 0 +4502 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.2690577105977088e+00 0.0000000000000000e+00 0 0 0 +4503 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.2761287784095741e+00 0.0000000000000000e+00 0 0 0 +4504 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.2902709140333055e+00 0.0000000000000000e+00 0 0 0 +4505 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.2831998462214393e+00 0.0000000000000000e+00 0 0 0 +4506 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.2902709140333055e+00 0.0000000000000000e+00 0 0 0 +4507 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.3044130496570361e+00 0.0000000000000000e+00 0 0 0 +4508 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.2973419818451708e+00 0.0000000000000000e+00 0 0 0 +4509 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.3044130496570361e+00 0.0000000000000000e+00 0 0 0 +4510 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.3185551852807667e+00 0.0000000000000000e+00 0 0 0 +4511 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.3114841174689014e+00 0.0000000000000000e+00 0 0 0 +4512 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.3185551852807667e+00 0.0000000000000000e+00 0 0 0 +4513 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.3326973209044981e+00 0.0000000000000000e+00 0 0 0 +4514 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.3256262530926328e+00 0.0000000000000000e+00 0 0 0 +4515 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.3326973209044981e+00 0.0000000000000000e+00 0 0 0 +4516 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.3468394565282287e+00 0.0000000000000000e+00 0 0 0 +4517 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.3397683887163634e+00 0.0000000000000000e+00 0 0 0 +4518 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.3468394565282287e+00 0.0000000000000000e+00 0 0 0 +4519 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.3609815921519601e+00 0.0000000000000000e+00 0 0 0 +4520 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.3539105243400940e+00 0.0000000000000000e+00 0 0 0 +4521 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.3609815921519601e+00 0.0000000000000000e+00 0 0 0 +4522 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.3751237277756907e+00 0.0000000000000000e+00 0 0 0 +4523 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.3680526599638254e+00 0.0000000000000000e+00 0 0 0 +4524 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.3751237277756907e+00 0.0000000000000000e+00 0 0 0 +4525 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.3892658633994222e+00 0.0000000000000000e+00 0 0 0 +4526 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.3821947955875560e+00 0.0000000000000000e+00 0 0 0 +4527 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.3892658633994222e+00 0.0000000000000000e+00 0 0 0 +4528 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.4034079990231527e+00 0.0000000000000000e+00 0 0 0 +4529 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.3963369312112874e+00 0.0000000000000000e+00 0 0 0 +4530 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.4034079990231527e+00 0.0000000000000000e+00 0 0 0 +4531 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.4175501346468833e+00 0.0000000000000000e+00 0 0 0 +4532 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.4104790668350180e+00 0.0000000000000000e+00 0 0 0 +4533 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.4175501346468833e+00 0.0000000000000000e+00 0 0 0 +4534 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.4316922702706147e+00 0.0000000000000000e+00 0 0 0 +4535 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.4246212024587495e+00 0.0000000000000000e+00 0 0 0 +4536 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.4316922702706147e+00 0.0000000000000000e+00 0 0 0 +4537 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.4458344058943453e+00 0.0000000000000000e+00 0 0 0 +4538 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.4387633380824800e+00 0.0000000000000000e+00 0 0 0 +4539 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.4458344058943453e+00 0.0000000000000000e+00 0 0 0 +4540 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.4599765415180768e+00 0.0000000000000000e+00 0 0 0 +4541 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.4529054737062106e+00 0.0000000000000000e+00 0 0 0 +4542 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.4599765415180768e+00 0.0000000000000000e+00 0 0 0 +4543 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.4741186771418073e+00 0.0000000000000000e+00 0 0 0 +4544 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.4670476093299420e+00 0.0000000000000000e+00 0 0 0 +4545 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.4741186771418073e+00 0.0000000000000000e+00 0 0 0 +4546 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.4882608127655388e+00 0.0000000000000000e+00 0 0 0 +4547 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.4811897449536726e+00 0.0000000000000000e+00 0 0 0 +4548 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.4882608127655388e+00 0.0000000000000000e+00 0 0 0 +4550 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.4953318805774041e+00 0.0000000000000000e+00 0 0 0 +4549 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.5024029483892694e+00 0.0000000000000000e+00 0 0 0 +4551 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.5024029483892694e+00 0.0000000000000000e+00 0 0 0 +4552 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.5165450840129999e+00 0.0000000000000000e+00 0 0 0 +4553 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.5094740162011346e+00 0.0000000000000000e+00 0 0 0 +4554 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.5165450840129999e+00 0.0000000000000000e+00 0 0 0 +4555 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.5306872196367314e+00 0.0000000000000000e+00 0 0 0 +4556 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.5236161518248661e+00 0.0000000000000000e+00 0 0 0 +4557 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.5306872196367314e+00 0.0000000000000000e+00 0 0 0 +4558 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.5448293552604619e+00 0.0000000000000000e+00 0 0 0 +4559 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.5377582874485967e+00 0.0000000000000000e+00 0 0 0 +4560 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.5448293552604619e+00 0.0000000000000000e+00 0 0 0 +4561 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.5589714908841934e+00 0.0000000000000000e+00 0 0 0 +4562 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.5519004230723272e+00 0.0000000000000000e+00 0 0 0 +4563 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.5589714908841934e+00 0.0000000000000000e+00 0 0 0 +4564 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.5731136265079240e+00 0.0000000000000000e+00 0 0 0 +4565 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.5660425586960587e+00 0.0000000000000000e+00 0 0 0 +4566 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.5731136265079240e+00 0.0000000000000000e+00 0 0 0 +4567 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.5872557621316554e+00 0.0000000000000000e+00 0 0 0 +4568 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.5801846943197893e+00 0.0000000000000000e+00 0 0 0 +4569 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.5872557621316554e+00 0.0000000000000000e+00 0 0 0 +4570 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.6013978977553860e+00 0.0000000000000000e+00 0 0 0 +4571 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.5943268299435207e+00 0.0000000000000000e+00 0 0 0 +4572 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.6013978977553860e+00 0.0000000000000000e+00 0 0 0 +4573 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.6155400333791166e+00 0.0000000000000000e+00 0 0 0 +4574 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.6084689655672513e+00 0.0000000000000000e+00 0 0 0 +4575 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.6155400333791166e+00 0.0000000000000000e+00 0 0 0 +4576 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.6296821690028480e+00 0.0000000000000000e+00 0 0 0 +4577 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.6226111011909827e+00 0.0000000000000000e+00 0 0 0 +4578 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.6296821690028480e+00 0.0000000000000000e+00 0 0 0 +4579 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.6438243046265786e+00 0.0000000000000000e+00 0 0 0 +4580 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.6367532368147133e+00 0.0000000000000000e+00 0 0 0 +4581 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.6438243046265786e+00 0.0000000000000000e+00 0 0 0 +4582 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.6579664402503100e+00 0.0000000000000000e+00 0 0 0 +4583 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.6508953724384448e+00 0.0000000000000000e+00 0 0 0 +4584 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.6579664402503100e+00 0.0000000000000000e+00 0 0 0 +4586 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.6650375080621753e+00 0.0000000000000000e+00 0 0 0 +4585 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.6721085758740406e+00 0.0000000000000000e+00 0 0 0 +4587 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.6721085758740406e+00 0.0000000000000000e+00 0 0 0 +4588 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.6862507114977721e+00 0.0000000000000000e+00 0 0 0 +4589 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.6791796436859059e+00 0.0000000000000000e+00 0 0 0 +4590 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.6862507114977721e+00 0.0000000000000000e+00 0 0 0 +4591 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7003928471215026e+00 0.0000000000000000e+00 0 0 0 +4592 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.6933217793096373e+00 0.0000000000000000e+00 0 0 0 +4593 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7003928471215026e+00 0.0000000000000000e+00 0 0 0 +4594 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7145349827452332e+00 0.0000000000000000e+00 0 0 0 +4595 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.7074639149333679e+00 0.0000000000000000e+00 0 0 0 +4596 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7145349827452332e+00 0.0000000000000000e+00 0 0 0 +4597 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7286771183689646e+00 0.0000000000000000e+00 0 0 0 +4598 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.7216060505570994e+00 0.0000000000000000e+00 0 0 0 +4599 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7286771183689646e+00 0.0000000000000000e+00 0 0 0 +4600 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7428192539926952e+00 0.0000000000000000e+00 0 0 0 +4601 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.7357481861808299e+00 0.0000000000000000e+00 0 0 0 +4602 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7428192539926952e+00 0.0000000000000000e+00 0 0 0 +4603 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7569613896164267e+00 0.0000000000000000e+00 0 0 0 +4604 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.7498903218045614e+00 0.0000000000000000e+00 0 0 0 +4605 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7569613896164267e+00 0.0000000000000000e+00 0 0 0 +4606 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7711035252401572e+00 0.0000000000000000e+00 0 0 0 +4607 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.7640324574282920e+00 0.0000000000000000e+00 0 0 0 +4608 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7711035252401572e+00 0.0000000000000000e+00 0 0 0 +4609 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7852456608638887e+00 0.0000000000000000e+00 0 0 0 +4610 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.7781745930520225e+00 0.0000000000000000e+00 0 0 0 +4611 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7852456608638887e+00 0.0000000000000000e+00 0 0 0 +4612 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.7993877964876193e+00 0.0000000000000000e+00 0 0 0 +4613 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.7923167286757540e+00 0.0000000000000000e+00 0 0 0 +4614 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.7993877964876193e+00 0.0000000000000000e+00 0 0 0 +4615 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.8135299321113498e+00 0.0000000000000000e+00 0 0 0 +4616 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.8064588642994845e+00 0.0000000000000000e+00 0 0 0 +4617 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.8135299321113498e+00 0.0000000000000000e+00 0 0 0 +4618 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.8276720677350813e+00 0.0000000000000000e+00 0 0 0 +4619 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.8206009999232160e+00 0.0000000000000000e+00 0 0 0 +4620 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.8276720677350813e+00 0.0000000000000000e+00 0 0 0 +4651 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0011121907579295e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4652 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0152543263816605e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4653 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0293964620053915e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4654 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0435385976291225e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4655 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0576807332528535e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4656 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0718228688765841e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4657 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0859650045003151e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4658 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1001071401240461e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4659 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4660 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4661 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4662 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4794 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0011121907579295e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4795 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0081832585697952e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4796 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0152543263816605e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4797 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0223253941935257e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4798 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0293964620053915e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4799 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0364675298172568e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4800 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0435385976291225e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4801 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0506096654409878e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4802 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0576807332528535e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4803 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0647518010647188e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4804 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0718228688765841e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4805 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0788939366884498e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4806 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0859650045003151e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4807 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.0930360723121808e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4808 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1001071401240461e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4809 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1071782079359118e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4810 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1142492757477771e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4811 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1213203435596424e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4812 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1283914113715081e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4813 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1354624791833734e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4814 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1425335469952391e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4815 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1496046148071044e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4816 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1566756826189701e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4817 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1637467504308354e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4663 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4664 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4665 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4666 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4667 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4668 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4669 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4670 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4671 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4672 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4673 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3122391744800104e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4674 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3263813101037414e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4818 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1708178182427011e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4819 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1778888860545664e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4820 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1849599538664317e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4821 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1920310216782974e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4822 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.1991020894901627e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4823 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2061731573020285e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4824 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2132442251138937e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4825 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2203152929257595e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4826 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2273863607376247e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4827 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2344574285494900e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4828 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2415284963613558e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4829 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2485995641732210e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4830 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2556706319850868e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4831 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2627416997969521e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4832 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2698127676088178e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4833 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2768838354206831e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4834 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2839549032325484e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4835 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2910259710444141e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4836 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.2980970388562794e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4837 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3051681066681451e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4838 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3122391744800104e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4839 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3193102422918761e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4840 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3263813101037414e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4841 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3334523779156067e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4675 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3405234457274724e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4676 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3546655813512034e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4677 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3688077169749344e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4678 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3829498525986650e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4679 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3970919882223960e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4680 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4112341238461270e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4681 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4253762594698580e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4682 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4395183950935890e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4683 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4536605307173200e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4684 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4678026663410511e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4685 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4819448019647821e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4686 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4960869375885126e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4842 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3405234457274724e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4843 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3475945135393377e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4844 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3546655813512034e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4845 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3617366491630687e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4846 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3688077169749344e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4847 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3758787847867997e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4848 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3829498525986650e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4849 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3900209204105307e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4850 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.3970919882223960e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4851 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4041630560342617e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4852 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4112341238461270e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4853 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4183051916579927e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4854 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4253762594698580e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4855 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4324473272817233e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4856 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4395183950935890e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4857 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4465894629054543e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4858 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4536605307173200e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4859 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4607315985291853e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4860 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4678026663410511e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4861 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4748737341529163e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4862 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4819448019647821e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4863 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4890158697766473e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4864 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.4960869375885126e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4687 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5102290732122436e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4688 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5243712088359747e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4689 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5385133444597057e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4690 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5526554800834367e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4691 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5667976157071677e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4692 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5809397513308987e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4693 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5950818869546293e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4694 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6092240225783603e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4695 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6233661582020913e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4696 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6375082938258223e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4697 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6516504294495533e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4698 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6657925650732843e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4865 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5031580054003784e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4866 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5102290732122436e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4867 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5173001410241094e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4868 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5243712088359747e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4869 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5314422766478404e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4870 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5385133444597057e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4871 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5455844122715710e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4872 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5526554800834367e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4873 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5597265478953020e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4874 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5667976157071677e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4875 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5738686835190330e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4876 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5809397513308987e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4877 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5880108191427640e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4878 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.5950818869546293e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4879 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6021529547664950e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4880 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6092240225783603e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4881 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6162950903902260e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4882 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6233661582020913e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4883 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6304372260139570e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4884 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6375082938258223e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4885 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6445793616376876e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4886 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6516504294495533e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4887 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6587214972614186e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4888 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6657925650732843e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4699 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6799347006970153e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4700 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6940768363207459e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4701 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7082189719444769e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4702 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7223611075682079e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4703 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7365032431919389e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4704 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7506453788156700e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4705 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7647875144394010e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4706 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7789296500631320e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4707 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7930717856868625e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4708 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8072139213105936e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4709 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8213560569343246e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4889 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6728636328851496e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4890 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6799347006970153e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4891 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6870057685088806e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4892 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.6940768363207459e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4893 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7011479041326116e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4894 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7082189719444769e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4895 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7152900397563426e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4896 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7223611075682079e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4897 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7294321753800737e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4898 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7365032431919389e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4899 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7435743110038042e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4900 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7506453788156700e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4901 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7577164466275352e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4902 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7647875144394010e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4903 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7718585822512662e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4904 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7789296500631320e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4905 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7860007178749973e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4906 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.7930717856868625e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4907 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8001428534987283e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4908 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8072139213105936e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4909 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8142849891224593e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4910 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8213560569343246e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4911 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8284271247461903e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4710 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8354981925580556e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4711 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8496403281817866e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4712 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8637824638055176e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4713 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8779245994292486e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4714 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8920667350529796e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4715 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9062088706767102e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4716 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9203510063004412e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4717 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9344931419241722e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4718 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9486352775479032e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4719 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9627774131716342e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4720 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9769195487953652e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4721 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9910616844190963e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4912 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8354981925580556e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4913 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8425692603699213e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4914 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8496403281817866e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4915 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8567113959936519e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4916 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8637824638055176e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4917 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8708535316173829e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4918 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8779245994292486e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4919 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8849956672411139e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4920 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8920667350529796e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4921 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.8991378028648449e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4922 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9062088706767102e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4923 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9132799384885759e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4924 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9203510063004412e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4925 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9274220741123069e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4926 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9344931419241722e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4927 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9415642097360379e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4928 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9486352775479032e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4929 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9557063453597685e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4930 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9627774131716342e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4931 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9698484809834995e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4932 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9769195487953652e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4933 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9839906166072305e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4934 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9910616844190963e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4935 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 2.9981327522309615e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4722 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0052038200428268e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4723 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0193459556665578e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4724 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0334880912902888e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4725 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0476302269140199e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4726 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0617723625377509e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4727 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0759144981614819e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4728 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0900566337852129e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4729 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1041987694089435e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4730 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1183409050326745e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4731 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1324830406564055e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4732 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1466251762801365e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4733 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1607673119038675e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4936 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0052038200428268e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4937 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0122748878546926e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4938 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0193459556665578e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4939 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0264170234784236e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4940 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0334880912902888e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4941 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0405591591021546e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4942 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0476302269140199e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4943 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0547012947258851e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4944 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0617723625377509e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4945 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0688434303496162e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4946 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0759144981614819e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4947 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0829855659733472e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4948 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0900566337852129e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4949 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.0971277015970782e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4950 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1041987694089435e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4951 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1112698372208092e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4952 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1183409050326745e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4953 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1254119728445402e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4954 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1324830406564055e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4955 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1395541084682712e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4956 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1466251762801365e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4957 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1536962440920022e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4958 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1607673119038675e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4734 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1749094475275985e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4735 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1890515831513295e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4736 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2031937187750605e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4737 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2173358543987911e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4738 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2314779900225221e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4739 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2456201256462531e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4740 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2597622612699841e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4741 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2739043968937152e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4742 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2880465325174462e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4743 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3021886681411772e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4744 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3163308037649077e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4745 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3304729393886388e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4959 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1678383797157328e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4960 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1749094475275985e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4961 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1819805153394638e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4962 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1890515831513295e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4963 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.1961226509631948e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4964 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2031937187750605e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4965 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2102647865869258e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4966 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2173358543987911e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4967 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2244069222106568e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4968 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2314779900225221e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4969 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2385490578343878e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4970 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2456201256462531e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4971 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2526911934581189e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4972 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2597622612699841e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4973 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2668333290818494e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4974 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2739043968937152e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4975 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2809754647055804e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4976 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2880465325174462e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4977 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.2951176003293114e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4978 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3021886681411772e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4979 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3092597359530425e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4980 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3163308037649077e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4981 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3234018715767735e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4982 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3304729393886388e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4746 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3446150750123698e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4747 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3587572106361008e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4748 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3728993462598318e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4749 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3870414818835628e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4750 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4011836175072938e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4751 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4153257531310244e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4752 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4294678887547554e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4753 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4436100243784864e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4754 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4577521600022174e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4755 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4718942956259484e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4756 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4860364312496794e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4757 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5001785668734104e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4983 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3375440072005045e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4984 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3446150750123698e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4985 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3516861428242355e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4986 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3587572106361008e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4987 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3658282784479661e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4988 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3728993462598318e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4989 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3799704140716971e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4990 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3870414818835628e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4991 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.3941125496954281e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4992 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4011836175072938e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4993 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4082546853191591e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4994 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4153257531310244e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4995 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4223968209428901e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4996 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4294678887547554e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4997 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4365389565666211e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4998 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4436100243784864e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4999 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4506810921903521e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5000 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4577521600022174e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5001 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4648232278140831e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5002 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4718942956259484e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5003 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4789653634378137e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5004 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4860364312496794e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5005 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.4931074990615447e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5006 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5001785668734104e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +4758 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5143207024971415e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4759 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5284628381208720e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4760 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5426049737446030e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4761 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5567471093683340e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4762 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5708892449920651e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4763 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5850313806157961e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4764 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5991735162395271e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4765 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6133156518632581e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4766 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6274577874869887e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4767 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6415999231107197e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4768 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6557420587344507e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +5007 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5072496346852757e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5008 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5143207024971415e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5009 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5213917703090067e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5010 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5284628381208720e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5011 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5355339059327378e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5012 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5426049737446030e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5013 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5496760415564688e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5014 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5567471093683340e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5015 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5638181771801998e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5016 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5708892449920651e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5017 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5779603128039303e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5018 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5850313806157961e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5019 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5921024484276614e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5020 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.5991735162395271e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5021 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6062445840513924e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5022 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6133156518632581e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5023 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6203867196751234e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5024 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6274577874869887e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5025 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6345288552988544e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5026 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6415999231107197e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5027 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6486709909225854e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5028 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6557420587344507e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5029 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6628131265463164e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4769 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6698841943581817e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4770 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6840263299819127e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4771 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6981684656056437e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4772 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7123106012293747e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4773 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7264527368531053e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4774 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7405948724768363e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4775 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7547370081005673e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4776 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7688791437242983e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4777 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7830212793480293e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4778 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7971634149717604e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4779 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4780 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +5030 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6698841943581817e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5031 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6769552621700470e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5032 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6840263299819127e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5033 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6910973977937780e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5034 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.6981684656056437e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5035 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7052395334175090e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5036 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7123106012293747e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5037 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7193816690412400e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5038 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7264527368531053e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5039 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7335238046649710e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5040 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7405948724768363e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5041 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7476659402887020e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5042 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7547370081005673e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5043 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7618080759124330e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5044 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7688791437242983e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5045 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7759502115361636e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5046 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7830212793480293e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5047 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7900923471598946e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5048 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.7971634149717604e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5049 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8042344827836256e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5050 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8113055505954914e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5051 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8183766184073566e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5052 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8254476862192224e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5053 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8325187540310877e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +4621 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.8418142033588119e+00 0.0000000000000000e+00 0 0 0 +4622 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.8347431355469466e+00 0.0000000000000000e+00 0 0 0 +4623 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.8418142033588119e+00 0.0000000000000000e+00 0 0 0 +4624 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.8559563389825433e+00 0.0000000000000000e+00 0 0 0 +4625 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.8488852711706780e+00 0.0000000000000000e+00 0 0 0 +4626 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.8559563389825433e+00 0.0000000000000000e+00 0 0 0 +4627 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.8700984746062739e+00 0.0000000000000000e+00 0 0 0 +4628 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.8630274067944086e+00 0.0000000000000000e+00 0 0 0 +4629 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.8700984746062739e+00 0.0000000000000000e+00 0 0 0 +4630 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.8842406102300053e+00 0.0000000000000000e+00 0 0 0 +4631 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.8771695424181392e+00 0.0000000000000000e+00 0 0 0 +4632 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.8842406102300053e+00 0.0000000000000000e+00 0 0 0 +4633 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.8983827458537359e+00 0.0000000000000000e+00 0 0 0 +4634 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.8913116780418706e+00 0.0000000000000000e+00 0 0 0 +4635 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.8983827458537359e+00 0.0000000000000000e+00 0 0 0 +4636 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.9125248814774674e+00 0.0000000000000000e+00 0 0 0 +4637 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.9054538136656012e+00 0.0000000000000000e+00 0 0 0 +4638 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.9125248814774674e+00 0.0000000000000000e+00 0 0 0 +4639 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.9266670171011979e+00 0.0000000000000000e+00 0 0 0 +4640 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.9195959492893326e+00 0.0000000000000000e+00 0 0 0 +4641 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.9266670171011979e+00 0.0000000000000000e+00 0 0 0 +4642 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.9408091527249285e+00 0.0000000000000000e+00 0 0 0 +4643 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.9337380849130632e+00 0.0000000000000000e+00 0 0 0 +4644 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.9408091527249285e+00 0.0000000000000000e+00 0 0 0 +4645 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.9549512883486599e+00 0.0000000000000000e+00 0 0 0 +4646 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.9478802205367947e+00 0.0000000000000000e+00 0 0 0 +4647 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.9549512883486599e+00 0.0000000000000000e+00 0 0 0 +4648 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.9690934239723905e+00 0.0000000000000000e+00 0 0 0 +4649 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.9620223561605252e+00 0.0000000000000000e+00 0 0 0 +4650 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.9690934239723905e+00 0.0000000000000000e+00 0 0 0 +4781 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4782 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4783 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4784 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4785 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4786 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4787 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4788 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4789 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4790 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4791 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +4792 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.9761644917842558e+00 0.0000000000000000e+00 0 0 0 +4793 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.9832355595961220e+00 0.0000000000000000e+00 0 0 0 +5054 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8395898218429529e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5055 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8466608896548187e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5056 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8537319574666840e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5057 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8608030252785497e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5058 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8678740930904150e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5059 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8749451609022807e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5060 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8820162287141460e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5061 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8890872965260113e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5062 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.8961583643378770e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5063 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9032294321497423e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5064 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9103004999616080e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5065 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9173715677734733e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5066 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9244426355853390e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5067 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9315137033972043e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5068 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9385847712090696e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5069 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9456558390209353e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5070 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9527269068328006e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5071 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9597979746446663e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5072 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9668690424565316e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5073 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9739401102683973e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5074 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9810111780802626e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 +5075 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9880822458921279e+00 7.9903066274079872e+00 0.0000000000000000e+00 0 0 0 +5076 2 1.0000000000000000e+03 0.0000000000000000e+00 1.0000000000000000e+00 3.9951533137039936e+00 7.9973776952198525e+00 0.0000000000000000e+00 0 0 0 + +Velocities + +1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +16 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +30 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +31 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +32 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +33 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +34 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +35 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +36 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +37 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +38 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +39 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +40 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +41 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +42 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +43 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +44 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +45 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +46 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +47 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +48 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +49 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +50 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +51 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +52 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +53 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +54 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +55 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +56 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +57 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +58 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +59 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +60 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +61 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +62 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +63 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +64 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +65 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +66 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +67 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +68 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +69 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +70 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +71 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +72 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +73 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +74 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +75 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +76 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +77 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +78 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +79 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +80 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +81 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +82 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +83 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +84 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +85 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +86 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +87 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +88 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +89 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +90 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +91 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +92 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +93 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +94 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +95 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +96 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +97 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +98 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +99 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +7999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +8989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +10949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +11929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +12999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +13998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +14967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +15702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +6000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +3999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +4793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 diff --git a/examples/USER/sph/water_collapse/water_collapse.lmp b/examples/USER/sph/water_collapse/water_collapse.lmp new file mode 100644 index 0000000000..f259da6a36 --- /dev/null +++ b/examples/USER/sph/water_collapse/water_collapse.lmp @@ -0,0 +1,49 @@ +processors 4 1 1 # manually assign processors to spatial regions +atom_style meso +dimension 2 +newton on +boundary f f p +units lj +read_data data.initial + +variable h equal 0.03 +variable c equal 10.0 # soundspeed for Tait's EOS +variable dt equal 0.1*${h}/${c} # upper limit of timestep based on CFL-like criterion +variable nrun equal 15.0/${dt} # roughly estimate number of timesteps needed for 7.5 seconds + +group bc type 2 # assign group name "bc" to boundary particles (type 2) +group water type 1 # assign group name "water" to water particles (type 1) + +# use hybrid pairstyle which does density summation with cutoff ${h} every timestep (1) +pair_style hybrid/overlay sph/rhosum 1 sph/taitwater +pair_coeff * * sph/taitwater 1000.0 ${c} 1.0 ${h} # use target density of 1000, soundspeed ${c} for Tait's EOS +pair_coeff 1 1 sph/rhosum ${h} + +fix gfix water gravity -9.81 vector 0 1 0 # add gravity. This fix also computes potential energy of mass in gravity field. +fix 2d_fix all enforce2d + +compute rho_peratom all meso_rho/atom +compute e_peratom all meso_e/atom +compute esph all reduce sum c_e_peratom +compute ke all ke +variable etot equal c_esph+c_ke+f_gfix + +# adjust nevery | min. allowed dt | max. allowed dt | max. travel distance per dt # // ${dt} ~= CFL criterion 0.1*h/c +fix dtfix all dt/reset 1 NULL ${dt} 0.0005 units box # use a variable timestep + +# time-integrate position, velocities, internal energy and density of water particles +fix integrate_water_fix water meso + +# time-integrate only internal energy and density of boundary particles +fix integrate_bc_fix bc meso/stationary +dump dump_id all custom 100 dump.lammpstrj id type xs ys zs c_rho_peratom c_e_peratom fx fy +dump_modify dump_id first yes +thermo 10 +thermo_style custom step ke c_esph v_etot f_gfix press f_dtfix[1] f_dtfix +thermo_modify norm no + +neigh_modify every 5 delay 0 check no +variable skin equal 0.3*${h} +neighbor ${skin} bin # set Verlet list skin distance + +run ${nrun} diff --git a/examples/dreiding/README b/examples/dreiding/README new file mode 100644 index 0000000000..351f7e9e5c --- /dev/null +++ b/examples/dreiding/README @@ -0,0 +1,5 @@ +The LAMMPS input script and data file were built to +match the Cerius Dreiding files included +in this directory (ch3oh.box.*) so that you +can compare LAMMPS output to a Dreiding implementation +in the Cerius code. diff --git a/examples/dreiding/ch3oh.box.dreiding.bgf b/examples/dreiding/ch3oh.box.dreiding.bgf new file mode 100644 index 0000000000..b9431153aa --- /dev/null +++ b/examples/dreiding/ch3oh.box.dreiding.bgf @@ -0,0 +1,780 @@ +XTLGRF 200 +DESCRP Model6 +REMARK BGF file created by Cerius2 +FORCEFIELD DREIDING +PERIOD 111 +AXES ZYX +SGNAME P 1 1 1 +CRYSTX 19.99689 19.12816 19.46971 90.00000 90.00000 90.00000 +CELLS -1 1 -1 1 -1 1 +FORMAT ATOM (a6,1x,i5,1x,a5,1x,a3,1x,a1,1x,a5,3f10.5,1x,a5, i3,i2,1x,f8.5) +HETATM 1 C1 RES A 444 9.75768 9.43603 9.44978 C_3 4 0 0.03193 +HETATM 2 O2 RES A 444 9.07001 9.89252 10.61030 O_3 2 2 -0.39965 +HETATM 3 H3 RES A 444 9.56169 8.37372 9.30573 H_ 1 0 0.05269 +HETATM 4 H4 RES A 444 9.40633 9.98872 8.57739 H_ 1 0 0.05269 +HETATM 5 H5 RES A 444 10.83081 9.58873 9.56849 H_ 1 0 0.05269 +HETATM 6 H6 RES A 444 9.28861 10.84826 10.67569 H___A 1 0 0.20964 +HETATM 7 C7 RES A 444 7.87790 6.57305 4.37926 C_3 4 0 0.03193 +HETATM 8 O8 RES A 444 9.21046 6.55811 3.88167 O_3 2 2 -0.39965 +HETATM 9 H9 RES A 444 7.42565 7.54437 4.17519 H_ 1 0 0.05269 +HETATM 10 H10 RES A 444 7.28908 5.79550 3.89029 H_ 1 0 0.05269 +HETATM 11 H11 RES A 444 7.88159 6.39628 5.45605 H_ 1 0 0.05269 +HETATM 12 H12 RES A 444 9.55621 5.66386 4.09964 H___A 1 0 0.20964 +HETATM 13 C13 RES A 444 19.38728 8.01844 0.29841 C_3 4 0 0.03193 +HETATM 14 O14 RES A 444 18.30059 8.67235 0.94403 O_3 2 2 -0.39965 +HETATM 15 H15 RES A 444 20.09420 7.66052 1.04704 H_ 1 0 0.05269 +HETATM 16 H16 RES A 444 19.01558 7.17130 -0.27928 H_ 1 0 0.05269 +HETATM 17 H17 RES A 444 19.89453 8.71684 -0.36839 H_ 1 0 0.05269 +HETATM 18 H18 RES A 444 17.72537 8.98355 0.21436 H___A 1 0 0.20964 +HETATM 19 C19 RES A 444 3.43963 14.29741 12.62221 C_3 4 0 0.03193 +HETATM 20 O20 RES A 444 3.07671 15.61822 12.23631 O_3 2 2 -0.39965 +HETATM 21 H21 RES A 444 4.27302 14.34187 13.32349 H_ 1 0 0.05269 +HETATM 22 H22 RES A 444 2.59308 13.81008 13.10508 H_ 1 0 0.05269 +HETATM 23 H23 RES A 444 3.73991 13.72415 11.74356 H_ 1 0 0.05269 +HETATM 24 H24 RES A 444 2.32966 15.52033 11.61130 H___A 1 0 0.20964 +HETATM 25 C25 RES A 444 16.06751 17.84957 14.39706 C_3 4 0 0.03193 +HETATM 26 O26 RES A 444 15.98970 19.07282 15.11734 O_3 2 2 -0.39965 +HETATM 27 H27 RES A 444 16.77526 17.18402 14.89204 H_ 1 0 0.05269 +HETATM 28 H28 RES A 444 15.08510 17.37867 14.36938 H_ 1 0 0.05269 +HETATM 29 H29 RES A 444 16.40684 18.04085 13.37809 H_ 1 0 0.05269 +HETATM 30 H30 RES A 444 15.35997 19.62900 14.61094 H___A 1 0 0.20964 +HETATM 31 C31 RES A 444 5.61540 13.90261 0.28024 C_3 4 0 0.03193 +HETATM 32 O32 RES A 444 6.96329 14.33980 0.39819 O_3 2 2 -0.39965 +HETATM 33 H33 RES A 444 5.39381 13.18200 1.06831 H_ 1 0 0.05269 +HETATM 34 H34 RES A 444 4.93854 14.75467 0.36989 H_ 1 0 0.05269 +HETATM 35 H35 RES A 444 5.46825 13.42632 -0.68848 H_ 1 0 0.05269 +HETATM 36 H36 RES A 444 7.08381 14.99923 -0.31851 H___A 1 0 0.20964 +HETATM 37 C37 RES A 444 10.38444 13.74977 1.74423 C_3 4 0 0.03193 +HETATM 38 O38 RES A 444 10.34865 13.00890 2.96031 O_3 2 2 -0.39965 +HETATM 39 H39 RES A 444 11.31498 14.30998 1.68756 H_ 1 0 0.05269 +HETATM 40 H40 RES A 444 10.32135 13.06875 0.89580 H_ 1 0 0.05269 +HETATM 41 H41 RES A 444 9.54190 14.44190 1.71309 H_ 1 0 0.05269 +HETATM 42 H42 RES A 444 9.45315 12.60486 2.98815 H___A 1 0 0.20964 +HETATM 43 C43 RES A 444 2.71877 -0.19852 13.91482 C_3 4 0 0.03193 +HETATM 44 O44 RES A 444 2.55981 1.00656 13.16980 O_3 2 2 -0.39965 +HETATM 45 H45 RES A 444 3.42887 -0.85053 13.40421 H_ 1 0 0.05269 +HETATM 46 H46 RES A 444 3.09835 0.02977 14.91227 H_ 1 0 0.05269 +HETATM 47 H47 RES A 444 1.76062 -0.71177 13.99933 H_ 1 0 0.05269 +HETATM 48 H48 RES A 444 1.92580 1.55260 13.68058 H___A 1 0 0.20964 +HETATM 49 C49 RES A 444 12.86271 12.87291 9.10254 C_3 4 0 0.03193 +HETATM 50 O50 RES A 444 12.72964 12.19590 7.85730 O_3 2 2 -0.39965 +HETATM 51 H51 RES A 444 11.91715 12.83126 9.64447 H_ 1 0 0.05269 +HETATM 52 H52 RES A 444 13.63913 12.39659 9.70188 H_ 1 0 0.05269 +HETATM 53 H53 RES A 444 13.12955 13.91577 8.92585 H_ 1 0 0.05269 +HETATM 54 H54 RES A 444 13.60640 12.28637 7.42000 H___A 1 0 0.20964 +HETATM 55 C55 RES A 444 0.91345 1.84436 7.21758 C_3 4 0 0.03193 +HETATM 56 O56 RES A 444 0.16704 0.83109 7.88260 O_3 2 2 -0.39965 +HETATM 57 H57 RES A 444 1.73149 1.39473 6.65448 H_ 1 0 0.05269 +HETATM 58 H58 RES A 444 0.25949 2.38287 6.53090 H_ 1 0 0.05269 +HETATM 59 H59 RES A 444 1.31674 2.54212 7.95173 H_ 1 0 0.05269 +HETATM 60 H60 RES A 444 0.79209 0.41480 8.51642 H___A 1 0 0.20964 +HETATM 61 C61 RES A 444 3.28235 16.40235 6.34784 C_3 4 0 0.03193 +HETATM 62 O62 RES A 444 4.40446 15.86811 5.64397 O_3 2 2 -0.39965 +HETATM 63 H63 RES A 444 3.52775 16.47384 7.40940 H_ 1 0 0.05269 +HETATM 64 H64 RES A 444 3.04852 17.39543 5.96551 H_ 1 0 0.05269 +HETATM 65 H65 RES A 444 2.41989 15.75077 6.22278 H_ 1 0 0.05269 +HETATM 66 H66 RES A 444 4.15040 15.88018 4.69552 H___A 1 0 0.20964 +HETATM 67 C67 RES A 444 14.28685 11.84833 2.69644 C_3 4 0 0.03193 +HETATM 68 O68 RES A 444 14.47540 12.00775 4.09802 O_3 2 2 -0.39965 +HETATM 69 H69 RES A 444 15.22519 11.52503 2.24449 H_ 1 0 0.05269 +HETATM 70 H70 RES A 444 13.51978 11.09713 2.50925 H_ 1 0 0.05269 +HETATM 71 H71 RES A 444 13.98187 12.79680 2.25228 H_ 1 0 0.05269 +HETATM 72 H72 RES A 444 13.60420 12.29868 4.44979 H___A 1 0 0.20964 +HETATM 73 C73 RES A 444 3.74650 0.37490 9.28202 C_3 4 0 0.03193 +HETATM 74 O74 RES A 444 4.68624 1.26369 8.68537 O_3 2 2 -0.39965 +HETATM 75 H75 RES A 444 4.28178 -0.38700 9.84868 H_ 1 0 0.05269 +HETATM 76 H76 RES A 444 3.08874 0.92642 9.95440 H_ 1 0 0.05269 +HETATM 77 H77 RES A 444 3.15691 -0.10643 8.50276 H_ 1 0 0.05269 +HETATM 78 H78 RES A 444 4.15269 1.92251 8.18619 H___A 1 0 0.20964 +HETATM 79 C79 RES A 444 17.93191 1.98830 17.28592 C_3 4 0 0.03193 +HETATM 80 O80 RES A 444 16.68990 1.36769 17.60090 O_3 2 2 -0.39965 +HETATM 81 H81 RES A 444 18.23740 2.63433 18.10865 H_ 1 0 0.05269 +HETATM 82 H82 RES A 444 18.69345 1.22519 17.12938 H_ 1 0 0.05269 +HETATM 83 H83 RES A 444 17.82727 2.59026 16.38313 H_ 1 0 0.05269 +HETATM 84 H84 RES A 444 16.45659 0.83462 16.81232 H___A 1 0 0.20964 +HETATM 85 C85 RES A 444 4.61466 10.52979 17.10957 C_3 4 0 0.03193 +HETATM 86 O86 RES A 444 3.62035 11.42538 17.60198 O_3 2 2 -0.39965 +HETATM 87 H87 RES A 444 5.60177 10.98718 17.19552 H_ 1 0 0.05269 +HETATM 88 H88 RES A 444 4.60514 9.60666 17.68872 H_ 1 0 0.05269 +HETATM 89 H89 RES A 444 4.42040 10.30112 16.06086 H_ 1 0 0.05269 +HETATM 90 H90 RES A 444 2.76200 10.96432 17.46823 H___A 1 0 0.20964 +HETATM 91 C91 RES A 444 4.21479 2.76452 1.93621 C_3 4 0 0.03193 +HETATM 92 O92 RES A 444 3.45640 2.43822 3.09183 O_3 2 2 -0.39965 +HETATM 93 H93 RES A 444 5.15561 3.22498 2.23935 H_ 1 0 0.05269 +HETATM 94 H94 RES A 444 4.42333 1.85922 1.36296 H_ 1 0 0.05269 +HETATM 95 H95 RES A 444 3.65868 3.46500 1.31342 H_ 1 0 0.05269 +HETATM 96 H96 RES A 444 2.68968 1.92747 2.75853 H___A 1 0 0.20964 +HETATM 97 C97 RES A 444 2.10781 10.76856 1.36312 C_3 4 0 0.03193 +HETATM 98 O98 RES A 444 0.80698 11.27394 1.07892 O_3 2 2 -0.39965 +HETATM 99 H99 RES A 444 2.85114 11.53660 1.14272 H_ 1 0 0.05269 +HETATM 100 H100 RES A 444 2.17873 10.49350 2.41651 H_ 1 0 0.05269 +HETATM 101 H101 RES A 444 2.31220 9.89096 0.74802 H_ 1 0 0.05269 +HETATM 102 H102 RES A 444 0.18009 10.55168 1.30975 H___A 1 0 0.20964 +HETATM 103 C103 RES A 444 16.26093 8.92927 6.57643 C_3 4 0 0.03193 +HETATM 104 O104 RES A 444 15.77968 8.06983 7.60177 O_3 2 2 -0.39965 +HETATM 105 H105 RES A 444 17.30509 9.17300 6.76897 H_ 1 0 0.05269 +HETATM 106 H106 RES A 444 16.18069 8.42876 5.61195 H_ 1 0 0.05269 +HETATM 107 H107 RES A 444 15.67380 9.84869 6.55835 H_ 1 0 0.05269 +HETATM 108 H108 RES A 444 14.84042 7.91008 7.37720 H___A 1 0 0.20964 +HETATM 109 C109 RES A 444 17.80004 2.06792 1.87371 C_3 4 0 0.03193 +HETATM 110 O110 RES A 444 18.48862 0.99081 1.24012 O_3 2 2 -0.39965 +HETATM 111 H111 RES A 444 18.23871 2.25534 2.85453 H_ 1 0 0.05269 +HETATM 112 H112 RES A 444 17.87937 2.96817 1.26859 H_ 1 0 0.05269 +HETATM 113 H113 RES A 444 16.74643 1.80633 1.99693 H_ 1 0 0.05269 +HETATM 114 H114 RES A 444 18.02202 0.85350 0.38356 H___A 1 0 0.20964 +HETATM 115 C115 RES A 444 13.75521 14.57173 15.42181 C_3 4 0 0.03193 +HETATM 116 O116 RES A 444 12.73183 15.48504 15.80455 O_3 2 2 -0.39965 +HETATM 117 H117 RES A 444 14.51862 14.53760 16.20019 H_ 1 0 0.05269 +HETATM 118 H118 RES A 444 13.33164 13.57618 15.29114 H_ 1 0 0.05269 +HETATM 119 H119 RES A 444 14.21175 14.89091 14.48437 H_ 1 0 0.05269 +HETATM 120 H120 RES A 444 12.11746 15.52768 15.03694 H___A 1 0 0.20964 +HETATM 121 C121 RES A 444 6.22569 16.46321 11.49168 C_3 4 0 0.03193 +HETATM 122 O122 RES A 444 7.37834 15.65849 11.27192 O_3 2 2 -0.39965 +HETATM 123 H123 RES A 444 6.47325 17.50688 11.31115 H_ 1 0 0.05269 +HETATM 124 H124 RES A 444 5.42639 16.16714 10.80967 H_ 1 0 0.05269 +HETATM 125 H125 RES A 444 5.88670 16.35324 12.52283 H_ 1 0 0.05269 +HETATM 126 H126 RES A 444 7.09224 14.73066 11.41776 H___A 1 0 0.20964 +HETATM 127 C127 RES A 444 20.01012 9.33317 4.86657 C_3 4 0 0.03193 +HETATM 128 O128 RES A 444 19.63827 8.14994 5.56401 O_3 2 2 -0.39965 +HETATM 129 H129 RES A 444 20.82510 9.82112 5.40128 H_ 1 0 0.05269 +HETATM 130 H130 RES A 444 20.34186 9.07963 3.85908 H_ 1 0 0.05269 +HETATM 131 H131 RES A 444 19.16051 10.01349 4.80673 H_ 1 0 0.05269 +HETATM 132 H132 RES A 444 18.86130 7.79949 5.07585 H___A 1 0 0.20964 +HETATM 133 C133 RES A 444 5.99486 1.97634 5.72513 C_3 4 0 0.03193 +HETATM 134 O134 RES A 444 6.74021 3.13466 6.08586 O_3 2 2 -0.39965 +HETATM 135 H135 RES A 444 4.92875 2.19578 5.79288 H_ 1 0 0.05269 +HETATM 136 H136 RES A 444 6.23376 1.68432 4.70221 H_ 1 0 0.05269 +HETATM 137 H137 RES A 444 6.23815 1.15441 6.40034 H_ 1 0 0.05269 +HETATM 138 H138 RES A 444 7.67684 2.83917 6.07790 H___A 1 0 0.20964 +HETATM 139 C139 RES A 444 13.03835 7.12913 5.28770 C_3 4 0 0.03193 +HETATM 140 O140 RES A 444 13.02644 7.55487 6.64544 O_3 2 2 -0.39965 +HETATM 141 H141 RES A 444 12.06949 6.70203 5.02747 H_ 1 0 0.05269 +HETATM 142 H142 RES A 444 13.24117 7.98172 4.63978 H_ 1 0 0.05269 +HETATM 143 H143 RES A 444 13.81531 6.37647 5.14697 H_ 1 0 0.05269 +HETATM 144 H144 RES A 444 12.38966 8.29858 6.65964 H___A 1 0 0.20964 +HETATM 145 C145 RES A 444 10.64649 1.42163 6.99575 C_3 4 0 0.03193 +HETATM 146 O146 RES A 444 11.32932 1.55767 8.23581 O_3 2 2 -0.39965 +HETATM 147 H147 RES A 444 9.77461 0.78340 7.13967 H_ 1 0 0.05269 +HETATM 148 H148 RES A 444 10.32031 2.40213 6.64261 H_ 1 0 0.05269 +HETATM 149 H149 RES A 444 11.30461 0.96891 6.25436 H_ 1 0 0.05269 +HETATM 150 H150 RES A 444 12.13048 2.09412 8.04749 H___A 1 0 0.20964 +HETATM 151 C151 RES A 444 7.70974 10.56643 0.43745 C_3 4 0 0.03193 +HETATM 152 O152 RES A 444 6.69643 10.25499 1.38817 O_3 2 2 -0.39965 +HETATM 153 H153 RES A 444 8.59868 10.91732 0.96199 H_ 1 0 0.05269 +HETATM 154 H154 RES A 444 7.96121 9.67471 -0.13665 H_ 1 0 0.05269 +HETATM 155 H155 RES A 444 7.36428 11.34806 -0.24011 H_ 1 0 0.05269 +HETATM 156 H156 RES A 444 5.94241 9.89154 0.87302 H___A 1 0 0.20964 +HETATM 157 C157 RES A 444 12.78344 1.18067 14.16301 C_3 4 0 0.03193 +HETATM 158 O158 RES A 444 14.01647 1.62010 13.60417 O_3 2 2 -0.39965 +HETATM 159 H159 RES A 444 12.98217 0.47776 14.97222 H_ 1 0 0.05269 +HETATM 160 H160 RES A 444 12.23227 2.03435 14.55662 H_ 1 0 0.05269 +HETATM 161 H161 RES A 444 12.18352 0.68832 13.39874 H_ 1 0 0.05269 +HETATM 162 H162 RES A 444 13.77530 2.26070 12.89474 H___A 1 0 0.20964 +HETATM 163 C163 RES A 444 16.94139 17.42253 1.05686 C_3 4 0 0.03193 +HETATM 164 O164 RES A 444 16.08424 16.29569 1.04946 O_3 2 2 -0.39965 +HETATM 165 H165 RES A 444 17.18791 17.69368 0.02960 H_ 1 0 0.05269 +HETATM 166 H166 RES A 444 16.43795 18.25970 1.54236 H_ 1 0 0.05269 +HETATM 167 H167 RES A 444 17.85566 17.18021 1.60025 H_ 1 0 0.05269 +HETATM 168 H168 RES A 444 15.85827 16.14412 1.99459 H___A 1 0 0.20964 +HETATM 169 C169 RES A 444 12.48878 18.07306 2.58158 C_3 4 0 0.03193 +HETATM 170 O170 RES A 444 13.76343 18.70451 2.65479 O_3 2 2 -0.39965 +HETATM 171 H171 RES A 444 12.02971 18.30966 1.62310 H_ 1 0 0.05269 +HETATM 172 H172 RES A 444 12.61189 16.99304 2.67149 H_ 1 0 0.05269 +HETATM 173 H173 RES A 444 11.85062 18.43623 3.38623 H_ 1 0 0.05269 +HETATM 174 H174 RES A 444 14.05960 18.54980 3.57438 H___A 1 0 0.20964 +HETATM 175 C175 RES A 444 19.92937 14.32320 3.09954 C_3 4 0 0.03193 +HETATM 176 O176 RES A 444 20.47921 14.98239 4.23349 O_3 2 2 -0.39965 +HETATM 177 H177 RES A 444 19.06424 14.88021 2.74247 H_ 1 0 0.05269 +HETATM 178 H178 RES A 444 20.67424 14.26863 2.30532 H_ 1 0 0.05269 +HETATM 179 H179 RES A 444 19.62003 13.31457 3.37662 H_ 1 0 0.05269 +HETATM 180 H180 RES A 444 21.24382 14.42340 4.50083 H___A 1 0 0.20964 +HETATM 181 C181 RES A 444 10.63009 10.62036 5.48247 C_3 4 0 0.03193 +HETATM 182 O182 RES A 444 11.32080 9.96459 6.53930 O_3 2 2 -0.39965 +HETATM 183 H183 RES A 444 9.97896 9.90801 4.97371 H_ 1 0 0.05269 +HETATM 184 H184 RES A 444 10.02580 11.43533 5.88411 H_ 1 0 0.05269 +HETATM 185 H185 RES A 444 11.34799 11.02578 4.76860 H_ 1 0 0.05269 +HETATM 186 H186 RES A 444 11.85790 10.67095 6.95281 H___A 1 0 0.20964 +HETATM 187 C187 RES A 444 15.65699 9.09727 17.99408 C_3 4 0 0.03193 +HETATM 188 O188 RES A 444 16.90142 9.78939 17.98916 O_3 2 2 -0.39965 +HETATM 189 H189 RES A 444 15.04412 9.44428 18.82685 H_ 1 0 0.05269 +HETATM 190 H190 RES A 444 15.12611 9.28242 17.05809 H_ 1 0 0.05269 +HETATM 191 H191 RES A 444 15.82887 8.02576 18.10423 H_ 1 0 0.05269 +HETATM 192 H192 RES A 444 17.40700 9.38003 17.24481 H___A 1 0 0.20964 +HETATM 193 C193 RES A 444 17.18063 5.09511 5.97377 C_3 4 0 0.03193 +HETATM 194 O194 RES A 444 17.00699 3.69621 6.16625 O_3 2 2 -0.39965 +HETATM 195 H195 RES A 444 16.80087 5.38050 4.99222 H_ 1 0 0.05269 +HETATM 196 H196 RES A 444 16.63290 5.63866 6.74297 H_ 1 0 0.05269 +HETATM 197 H197 RES A 444 18.23947 5.34654 6.03632 H_ 1 0 0.05269 +HETATM 198 H198 RES A 444 17.37922 3.51369 7.05728 H___A 1 0 0.20964 +HETATM 199 C199 RES A 444 9.27176 16.96360 18.60348 C_3 4 0 0.03193 +HETATM 200 O200 RES A 444 10.16048 17.88001 19.23027 O_3 2 2 -0.39965 +HETATM 201 H201 RES A 444 8.24372 17.25233 18.82182 H_ 1 0 0.05269 +HETATM 202 H202 RES A 444 9.42846 16.97594 17.52377 H_ 1 0 0.05269 +HETATM 203 H203 RES A 444 9.45162 15.95835 18.98512 H_ 1 0 0.05269 +HETATM 204 H204 RES A 444 11.05433 17.57777 18.98374 H___A 1 0 0.20964 +HETATM 205 C205 RES A 444 19.02698 11.32629 8.74382 C_3 4 0 0.03193 +HETATM 206 O206 RES A 444 19.55395 11.57496 7.44476 O_3 2 2 -0.39965 +HETATM 207 H207 RES A 444 19.84306 11.28874 9.46486 H_ 1 0 0.05269 +HETATM 208 H208 RES A 444 18.34041 12.12651 9.02172 H_ 1 0 0.05269 +HETATM 209 H209 RES A 444 18.49941 10.37268 8.75573 H_ 1 0 0.05269 +HETATM 210 H210 RES A 444 18.77484 11.55877 6.84653 H___A 1 0 0.20964 +HETATM 211 C211 RES A 444 13.70984 17.91381 18.18096 C_3 4 0 0.03193 +HETATM 212 O212 RES A 444 12.78082 16.86629 18.42949 O_3 2 2 -0.39965 +HETATM 213 H213 RES A 444 14.65264 17.49419 17.82801 H_ 1 0 0.05269 +HETATM 214 H214 RES A 444 13.30579 18.58561 17.42320 H_ 1 0 0.05269 +HETATM 215 H215 RES A 444 13.88737 18.47185 19.10049 H_ 1 0 0.05269 +HETATM 216 H216 RES A 444 12.70938 16.39241 17.57615 H___A 1 0 0.20964 +HETATM 217 C217 RES A 444 7.96084 1.88854 9.90132 C_3 4 0 0.03193 +HETATM 218 O218 RES A 444 7.16836 0.76877 10.27166 O_3 2 2 -0.39965 +HETATM 219 H219 RES A 444 8.08701 1.90679 8.82000 H_ 1 0 0.05269 +HETATM 220 H220 RES A 444 7.47244 2.80930 10.22050 H_ 1 0 0.05269 +HETATM 221 H221 RES A 444 8.93667 1.81039 10.37952 H_ 1 0 0.05269 +HETATM 222 H222 RES A 444 6.33219 0.87991 9.77220 H___A 1 0 0.20964 +HETATM 223 C223 RES A 444 8.67989 16.70958 5.83790 C_3 4 0 0.03193 +HETATM 224 O224 RES A 444 8.12024 17.60224 6.79460 O_3 2 2 -0.39965 +HETATM 225 H225 RES A 444 8.09228 16.75013 4.91967 H_ 1 0 0.05269 +HETATM 226 H226 RES A 444 9.70728 17.00048 5.62151 H_ 1 0 0.05269 +HETATM 227 H227 RES A 444 8.66415 15.69153 6.22812 H_ 1 0 0.05269 +HETATM 228 H228 RES A 444 8.61953 17.44038 7.62546 H___A 1 0 0.20964 +HETATM 229 C229 RES A 444 8.92912 4.00904 0.50900 C_3 4 0 0.03193 +HETATM 230 O230 RES A 444 8.96759 5.27857 -0.13058 O_3 2 2 -0.39965 +HETATM 231 H231 RES A 444 8.33969 4.08141 1.42278 H_ 1 0 0.05269 +HETATM 232 H232 RES A 444 8.47682 3.27429 -0.15833 H_ 1 0 0.05269 +HETATM 233 H233 RES A 444 9.94193 3.69036 0.75961 H_ 1 0 0.05269 +HETATM 234 H234 RES A 444 9.53405 5.14064 -0.92363 H___A 1 0 0.20964 +HETATM 235 C235 RES A 444 14.12006 6.78048 11.59632 C_3 4 0 0.03193 +HETATM 236 O236 RES A 444 13.07688 7.13628 10.69542 O_3 2 2 -0.39965 +HETATM 237 H237 RES A 444 14.86068 7.57932 11.63302 H_ 1 0 0.05269 +HETATM 238 H238 RES A 444 13.70582 6.62813 12.59405 H_ 1 0 0.05269 +HETATM 239 H239 RES A 444 14.60290 5.86276 11.26001 H_ 1 0 0.05269 +HETATM 240 H240 RES A 444 12.46641 6.36815 10.68540 H___A 1 0 0.20964 +HETATM 241 C241 RES A 444 11.17366 12.60541 17.35410 C_3 4 0 0.03193 +HETATM 242 O242 RES A 444 11.02139 13.96786 17.73395 O_3 2 2 -0.39965 +HETATM 243 H243 RES A 444 10.47704 11.99021 17.92352 H_ 1 0 0.05269 +HETATM 244 H244 RES A 444 10.96097 12.49402 16.29011 H_ 1 0 0.05269 +HETATM 245 H245 RES A 444 12.19388 12.27752 17.55780 H_ 1 0 0.05269 +HETATM 246 H246 RES A 444 11.62997 14.46572 17.15437 H___A 1 0 0.20964 +HETATM 247 C247 RES A 444 13.59375 17.68257 6.60725 C_3 4 0 0.03193 +HETATM 248 O248 RES A 444 14.41796 18.19915 5.56896 O_3 2 2 -0.39965 +HETATM 249 H249 RES A 444 12.56750 17.59958 6.25257 H_ 1 0 0.05269 +HETATM 250 H250 RES A 444 13.95140 16.69610 6.90350 H_ 1 0 0.05269 +HETATM 251 H251 RES A 444 13.62441 18.35441 7.46523 H_ 1 0 0.05269 +HETATM 252 H252 RES A 444 15.31701 18.26489 5.96089 H___A 1 0 0.20964 +HETATM 253 C253 RES A 444 5.00550 8.70879 7.93082 C_3 4 0 0.03193 +HETATM 254 O254 RES A 444 5.30633 7.53730 7.17920 O_3 2 2 -0.39965 +HETATM 255 H255 RES A 444 3.92410 8.80228 8.03546 H_ 1 0 0.05269 +HETATM 256 H256 RES A 444 5.45973 8.64206 8.92134 H_ 1 0 0.05269 +HETATM 257 H257 RES A 444 5.39337 9.58812 7.41497 H_ 1 0 0.05269 +HETATM 258 H258 RES A 444 6.28240 7.52607 7.08649 H___A 1 0 0.20964 +HETATM 259 C259 RES A 444 19.22046 1.28969 13.91270 C_3 4 0 0.03193 +HETATM 260 O260 RES A 444 20.08805 2.12898 14.66921 O_3 2 2 -0.39965 +HETATM 261 H261 RES A 444 18.36269 1.87059 13.57299 H_ 1 0 0.05269 +HETATM 262 H262 RES A 444 19.74873 0.89208 13.04541 H_ 1 0 0.05269 +HETATM 263 H263 RES A 444 18.87095 0.46148 14.53042 H_ 1 0 0.05269 +HETATM 264 H264 RES A 444 20.73583 1.52580 15.09558 H___A 1 0 0.20964 +HETATM 265 C265 RES A 444 5.65052 5.42047 10.40141 C_3 4 0 0.03193 +HETATM 266 O266 RES A 444 6.43233 5.15576 11.55959 O_3 2 2 -0.39965 +HETATM 267 H267 RES A 444 4.77591 4.76790 10.40245 H_ 1 0 0.05269 +HETATM 268 H268 RES A 444 5.31750 6.45945 10.40208 H_ 1 0 0.05269 +HETATM 269 H269 RES A 444 6.23775 5.22771 9.50311 H_ 1 0 0.05269 +HETATM 270 H270 RES A 444 7.22334 5.73649 11.49818 H___A 1 0 0.20964 +HETATM 271 C271 RES A 444 13.28289 5.81639 20.26495 C_3 4 0 0.03193 +HETATM 272 O272 RES A 444 14.46108 5.91020 19.47306 O_3 2 2 -0.39965 +HETATM 273 H273 RES A 444 12.54449 6.53149 19.89956 H_ 1 0 0.05269 +HETATM 274 H274 RES A 444 12.86565 4.81041 20.20085 H_ 1 0 0.05269 +HETATM 275 H275 RES A 444 13.51599 6.04282 21.30628 H_ 1 0 0.05269 +HETATM 276 H276 RES A 444 15.06689 5.21681 19.82048 H___A 1 0 0.20964 +HETATM 277 C277 RES A 444 8.93119 18.18764 13.28407 C_3 4 0 0.03193 +HETATM 278 O278 RES A 444 7.83369 17.94987 14.15258 O_3 2 2 -0.39965 +HETATM 279 H279 RES A 444 8.62256 18.85058 12.47662 H_ 1 0 0.05269 +HETATM 280 H280 RES A 444 9.74951 18.65521 13.83984 H_ 1 0 0.05269 +HETATM 281 H281 RES A 444 9.27914 17.24313 12.85839 H_ 1 0 0.05269 +HETATM 282 H282 RES A 444 8.18034 17.33710 14.83873 H___A 1 0 0.20964 +HETATM 283 C283 RES A 444 5.79456 2.19968 17.80701 C_3 4 0 0.03193 +HETATM 284 O284 RES A 444 6.24133 2.96696 16.69489 O_3 2 2 -0.39965 +HETATM 285 H285 RES A 444 5.95925 2.76662 18.72146 H_ 1 0 0.05269 +HETATM 286 H286 RES A 444 4.73133 1.97951 17.70368 H_ 1 0 0.05269 +HETATM 287 H287 RES A 444 6.35360 1.26369 17.85787 H_ 1 0 0.05269 +HETATM 288 H288 RES A 444 6.11167 2.36984 15.93032 H___A 1 0 0.20964 +HETATM 289 C289 RES A 444 7.02257 8.31146 13.32419 C_3 4 0 0.03193 +HETATM 290 O290 RES A 444 6.81830 9.58617 13.92250 O_3 2 2 -0.39965 +HETATM 291 H291 RES A 444 6.70351 7.53159 14.01772 H_ 1 0 0.05269 +HETATM 292 H292 RES A 444 6.43819 8.23664 12.40602 H_ 1 0 0.05269 +HETATM 293 H293 RES A 444 8.08019 8.17829 13.09255 H_ 1 0 0.05269 +HETATM 294 H294 RES A 444 7.15181 10.23194 13.26245 H___A 1 0 0.20964 +HETATM 295 C295 RES A 444 14.02631 3.46938 16.96774 C_3 4 0 0.03193 +HETATM 296 O296 RES A 444 13.54366 2.24600 17.51611 O_3 2 2 -0.39965 +HETATM 297 H297 RES A 444 13.77498 3.53066 15.91013 H_ 1 0 0.05269 +HETATM 298 H298 RES A 444 13.56595 4.30739 17.48900 H_ 1 0 0.05269 +HETATM 299 H299 RES A 444 15.10861 3.52592 17.07904 H_ 1 0 0.05269 +HETATM 300 H300 RES A 444 13.94305 2.20406 18.41525 H___A 1 0 0.20964 +HETATM 301 C301 RES A 444 1.20831 18.57486 2.95108 C_3 4 0 0.03193 +HETATM 302 O302 RES A 444 1.22576 19.81993 2.26075 O_3 2 2 -0.39965 +HETATM 303 H303 RES A 444 0.55458 18.64320 3.82147 H_ 1 0 0.05269 +HETATM 304 H304 RES A 444 0.84728 17.78646 2.28798 H_ 1 0 0.05269 +HETATM 305 H305 RES A 444 2.21813 18.32995 3.28130 H_ 1 0 0.05269 +HETATM 306 H306 RES A 444 0.30364 19.97372 1.97883 H___A 1 0 0.20964 +HETATM 307 C307 RES A 444 13.27354 18.56828 10.67719 C_3 4 0 0.03193 +HETATM 308 O308 RES A 444 12.48821 17.54334 10.07841 O_3 2 2 -0.39965 +HETATM 309 H309 RES A 444 12.67535 19.47728 10.75867 H_ 1 0 0.05269 +HETATM 310 H310 RES A 444 13.59103 18.25289 11.67155 H_ 1 0 0.05269 +HETATM 311 H311 RES A 444 14.15208 18.77184 10.06448 H_ 1 0 0.05269 +HETATM 312 H312 RES A 444 13.09935 16.78781 9.93641 H___A 1 0 0.20964 +HETATM 313 C313 RES A 444 6.36730 14.29234 8.10345 C_3 4 0 0.03193 +HETATM 314 O314 RES A 444 6.40678 13.98673 6.71535 O_3 2 2 -0.39965 +HETATM 315 H315 RES A 444 5.36805 14.09806 8.49177 H_ 1 0 0.05269 +HETATM 316 H316 RES A 444 7.08832 13.66856 8.63166 H_ 1 0 0.05269 +HETATM 317 H317 RES A 444 6.61905 15.34196 8.25886 H_ 1 0 0.05269 +HETATM 318 H318 RES A 444 5.76587 14.60457 6.30951 H___A 1 0 0.20964 +HETATM 319 C319 RES A 444 2.65328 9.08063 11.58358 C_3 4 0 0.03193 +HETATM 320 O320 RES A 444 2.00217 9.04988 10.31818 O_3 2 2 -0.39965 +HETATM 321 H321 RES A 444 2.77179 8.06201 11.95511 H_ 1 0 0.05269 +HETATM 322 H322 RES A 444 3.63556 9.54427 11.48302 H_ 1 0 0.05269 +HETATM 323 H323 RES A 444 2.05382 9.65342 12.29226 H_ 1 0 0.05269 +HETATM 324 H324 RES A 444 1.90245 9.98881 10.05330 H___A 1 0 0.20964 +HETATM 325 C325 RES A 444 16.09537 13.47946 18.75299 C_3 4 0 0.03193 +HETATM 326 O326 RES A 444 15.35647 12.29789 19.02596 O_3 2 2 -0.39965 +HETATM 327 H327 RES A 444 15.44738 14.34606 18.88103 H_ 1 0 0.05269 +HETATM 328 H328 RES A 444 16.93959 13.54850 19.44072 H_ 1 0 0.05269 +HETATM 329 H329 RES A 444 16.46394 13.45617 17.72675 H_ 1 0 0.05269 +HETATM 330 H330 RES A 444 15.94172 11.56097 18.74998 H___A 1 0 0.20964 +HETATM 331 C331 RES A 444 5.36713 6.40841 19.02468 C_3 4 0 0.03193 +HETATM 332 O332 RES A 444 6.23337 6.92207 18.01801 O_3 2 2 -0.39965 +HETATM 333 H333 RES A 444 4.33549 6.65297 18.77623 H_ 1 0 0.05269 +HETATM 334 H334 RES A 444 5.47707 5.32425 19.08654 H_ 1 0 0.05269 +HETATM 335 H335 RES A 444 5.62819 6.85675 19.98559 H_ 1 0 0.05269 +HETATM 336 H336 RES A 444 7.13950 6.67949 18.31120 H___A 1 0 0.20964 +HETATM 337 C337 RES A 444 1.77513 13.81811 9.21198 C_3 4 0 0.03193 +HETATM 338 O338 RES A 444 0.83100 14.28966 10.16552 O_3 2 2 -0.39965 +HETATM 339 H339 RES A 444 1.29728 13.75593 8.23483 H_ 1 0 0.05269 +HETATM 340 H340 RES A 444 2.62178 14.50388 9.15673 H_ 1 0 0.05269 +HETATM 341 H341 RES A 444 2.12880 12.82836 9.50371 H_ 1 0 0.05269 +HETATM 342 H342 RES A 444 1.30194 14.30478 11.02173 H___A 1 0 0.20964 +HETATM 343 C343 RES A 444 21.59943 4.06368 17.75073 C_3 4 0 0.03193 +HETATM 344 O344 RES A 444 21.85233 3.04768 18.71336 O_3 2 2 -0.39965 +HETATM 345 H345 RES A 444 22.11092 3.81498 16.82008 H_ 1 0 0.05269 +HETATM 346 H346 RES A 444 20.52800 4.13659 17.56408 H_ 1 0 0.05269 +HETATM 347 H347 RES A 444 21.97071 5.01986 18.11886 H_ 1 0 0.05269 +HETATM 348 H348 RES A 444 21.40074 3.34325 19.53474 H___A 1 0 0.20964 +HETATM 349 C349 RES A 444 16.52622 4.73908 13.63762 C_3 4 0 0.03193 +HETATM 350 O350 RES A 444 15.55282 5.45454 14.38889 O_3 2 2 -0.39965 +HETATM 351 H351 RES A 444 16.03370 3.96708 13.04616 H_ 1 0 0.05269 +HETATM 352 H352 RES A 444 17.05262 5.42291 12.96909 H_ 1 0 0.05269 +HETATM 353 H353 RES A 444 17.24076 4.27126 14.31456 H_ 1 0 0.05269 +HETATM 354 H354 RES A 444 16.06701 6.07053 14.95693 H___A 1 0 0.20964 +HETATM 355 C355 RES A 444 20.20141 14.20302 18.50889 C_3 4 0 0.03193 +HETATM 356 O356 RES A 444 21.44729 13.78288 19.04009 O_3 2 2 -0.39965 +HETATM 357 H357 RES A 444 20.32931 15.13613 17.95996 H_ 1 0 0.05269 +HETATM 358 H358 RES A 444 19.81275 13.43791 17.83324 H_ 1 0 0.05269 +HETATM 359 H359 RES A 444 19.48848 14.36395 19.32079 H_ 1 0 0.05269 +HETATM 360 H360 RES A 444 21.25026 12.96615 19.54627 H___A 1 0 0.20964 +HETATM 361 C361 RES A 444 3.32298 14.94425 16.50422 C_3 4 0 0.03193 +HETATM 362 O362 RES A 444 4.38694 14.00670 16.37303 O_3 2 2 -0.39965 +HETATM 363 H363 RES A 444 3.54498 15.83135 15.91086 H_ 1 0 0.05269 +HETATM 364 H364 RES A 444 2.39143 14.50263 16.15017 H_ 1 0 0.05269 +HETATM 365 H365 RES A 444 3.21366 15.23418 17.54978 H_ 1 0 0.05269 +HETATM 366 H366 RES A 444 4.09659 13.20452 16.85511 H___A 1 0 0.20964 +HETATM 367 C367 RES A 444 10.00891 1.19780 16.80998 C_3 4 0 0.03193 +HETATM 368 O368 RES A 444 10.58951 1.67540 18.01757 O_3 2 2 -0.39965 +HETATM 369 H369 RES A 444 8.95573 0.97837 16.97853 H_ 1 0 0.05269 +HETATM 370 H370 RES A 444 10.09279 1.95889 16.03422 H_ 1 0 0.05269 +HETATM 371 H371 RES A 444 10.51430 0.28729 16.48583 H_ 1 0 0.05269 +HETATM 372 H372 RES A 444 11.54632 1.78202 17.83462 H___A 1 0 0.20964 +HETATM 373 C373 RES A 444 1.31776 5.21190 2.64974 C_3 4 0 0.03193 +HETATM 374 O374 RES A 444 0.78156 4.20400 1.79964 O_3 2 2 -0.39965 +HETATM 375 H375 RES A 444 2.00060 5.84322 2.08036 H_ 1 0 0.05269 +HETATM 376 H376 RES A 444 0.50993 5.82499 3.05018 H_ 1 0 0.05269 +HETATM 377 H377 RES A 444 1.85905 4.74873 3.47448 H_ 1 0 0.05269 +HETATM 378 H378 RES A 444 0.20631 3.65922 2.38482 H___A 1 0 0.20964 +HETATM 379 C379 RES A 444 5.74906 1.64126 13.27894 C_3 4 0 0.03193 +HETATM 380 O380 RES A 444 5.74933 0.96366 14.53304 O_3 2 2 -0.39965 +HETATM 381 H381 RES A 444 5.05775 2.48272 13.31880 H_ 1 0 0.05269 +HETATM 382 H382 RES A 444 6.74849 2.01315 13.05234 H_ 1 0 0.05269 +HETATM 383 H383 RES A 444 5.43187 0.95557 12.49248 H_ 1 0 0.05269 +HETATM 384 H384 RES A 444 6.42516 0.25912 14.43537 H___A 1 0 0.20964 +FORMAT CONECT (a6,12i6) +CONECT 1 2 3 4 5 +CONECT 2 1 6 +CONECT 3 1 +CONECT 4 1 +CONECT 5 1 +CONECT 6 2 +CONECT 7 8 9 10 11 +CONECT 8 7 12 +CONECT 9 7 +CONECT 10 7 +CONECT 11 7 +CONECT 12 8 +CONECT 13 14 15 16 17 +CONECT 14 13 18 +CONECT 15 13 +CONECT 16 13 +CONECT 17 13 +CONECT 18 14 +CONECT 19 20 21 22 23 +CONECT 20 19 24 +CONECT 21 19 +CONECT 22 19 +CONECT 23 19 +CONECT 24 20 +CONECT 25 26 27 28 29 +CONECT 26 25 30 +CONECT 27 25 +CONECT 28 25 +CONECT 29 25 +CONECT 30 26 +CONECT 31 32 33 34 35 +CONECT 32 31 36 +CONECT 33 31 +CONECT 34 31 +CONECT 35 31 +CONECT 36 32 +CONECT 37 38 39 40 41 +CONECT 38 37 42 +CONECT 39 37 +CONECT 40 37 +CONECT 41 37 +CONECT 42 38 +CONECT 43 44 45 46 47 +CONECT 44 43 48 +CONECT 45 43 +CONECT 46 43 +CONECT 47 43 +CONECT 48 44 +CONECT 49 50 51 52 53 +CONECT 50 49 54 +CONECT 51 49 +CONECT 52 49 +CONECT 53 49 +CONECT 54 50 +CONECT 55 56 57 58 59 +CONECT 56 55 60 +CONECT 57 55 +CONECT 58 55 +CONECT 59 55 +CONECT 60 56 +CONECT 61 62 63 64 65 +CONECT 62 61 66 +CONECT 63 61 +CONECT 64 61 +CONECT 65 61 +CONECT 66 62 +CONECT 67 68 69 70 71 +CONECT 68 67 72 +CONECT 69 67 +CONECT 70 67 +CONECT 71 67 +CONECT 72 68 +CONECT 73 74 75 76 77 +CONECT 74 73 78 +CONECT 75 73 +CONECT 76 73 +CONECT 77 73 +CONECT 78 74 +CONECT 79 80 81 82 83 +CONECT 80 79 84 +CONECT 81 79 +CONECT 82 79 +CONECT 83 79 +CONECT 84 80 +CONECT 85 86 87 88 89 +CONECT 86 85 90 +CONECT 87 85 +CONECT 88 85 +CONECT 89 85 +CONECT 90 86 +CONECT 91 92 93 94 95 +CONECT 92 91 96 +CONECT 93 91 +CONECT 94 91 +CONECT 95 91 +CONECT 96 92 +CONECT 97 98 99 100 101 +CONECT 98 97 102 +CONECT 99 97 +CONECT 100 97 +CONECT 101 97 +CONECT 102 98 +CONECT 103 104 105 106 107 +CONECT 104 103 108 +CONECT 105 103 +CONECT 106 103 +CONECT 107 103 +CONECT 108 104 +CONECT 109 110 111 112 113 +CONECT 110 109 114 +CONECT 111 109 +CONECT 112 109 +CONECT 113 109 +CONECT 114 110 +CONECT 115 116 117 118 119 +CONECT 116 115 120 +CONECT 117 115 +CONECT 118 115 +CONECT 119 115 +CONECT 120 116 +CONECT 121 122 123 124 125 +CONECT 122 121 126 +CONECT 123 121 +CONECT 124 121 +CONECT 125 121 +CONECT 126 122 +CONECT 127 128 129 130 131 +CONECT 128 127 132 +CONECT 129 127 +CONECT 130 127 +CONECT 131 127 +CONECT 132 128 +CONECT 133 134 135 136 137 +CONECT 134 133 138 +CONECT 135 133 +CONECT 136 133 +CONECT 137 133 +CONECT 138 134 +CONECT 139 140 141 142 143 +CONECT 140 139 144 +CONECT 141 139 +CONECT 142 139 +CONECT 143 139 +CONECT 144 140 +CONECT 145 146 147 148 149 +CONECT 146 145 150 +CONECT 147 145 +CONECT 148 145 +CONECT 149 145 +CONECT 150 146 +CONECT 151 152 153 154 155 +CONECT 152 151 156 +CONECT 153 151 +CONECT 154 151 +CONECT 155 151 +CONECT 156 152 +CONECT 157 158 159 160 161 +CONECT 158 157 162 +CONECT 159 157 +CONECT 160 157 +CONECT 161 157 +CONECT 162 158 +CONECT 163 164 165 166 167 +CONECT 164 163 168 +CONECT 165 163 +CONECT 166 163 +CONECT 167 163 +CONECT 168 164 +CONECT 169 170 171 172 173 +CONECT 170 169 174 +CONECT 171 169 +CONECT 172 169 +CONECT 173 169 +CONECT 174 170 +CONECT 175 176 177 178 179 +CONECT 176 175 180 +CONECT 177 175 +CONECT 178 175 +CONECT 179 175 +CONECT 180 176 +CONECT 181 182 183 184 185 +CONECT 182 181 186 +CONECT 183 181 +CONECT 184 181 +CONECT 185 181 +CONECT 186 182 +CONECT 187 188 189 190 191 +CONECT 188 187 192 +CONECT 189 187 +CONECT 190 187 +CONECT 191 187 +CONECT 192 188 +CONECT 193 194 195 196 197 +CONECT 194 193 198 +CONECT 195 193 +CONECT 196 193 +CONECT 197 193 +CONECT 198 194 +CONECT 199 200 201 202 203 +CONECT 200 199 204 +CONECT 201 199 +CONECT 202 199 +CONECT 203 199 +CONECT 204 200 +CONECT 205 206 207 208 209 +CONECT 206 205 210 +CONECT 207 205 +CONECT 208 205 +CONECT 209 205 +CONECT 210 206 +CONECT 211 212 213 214 215 +CONECT 212 211 216 +CONECT 213 211 +CONECT 214 211 +CONECT 215 211 +CONECT 216 212 +CONECT 217 218 219 220 221 +CONECT 218 217 222 +CONECT 219 217 +CONECT 220 217 +CONECT 221 217 +CONECT 222 218 +CONECT 223 224 225 226 227 +CONECT 224 223 228 +CONECT 225 223 +CONECT 226 223 +CONECT 227 223 +CONECT 228 224 +CONECT 229 230 231 232 233 +CONECT 230 229 234 +CONECT 231 229 +CONECT 232 229 +CONECT 233 229 +CONECT 234 230 +CONECT 235 236 237 238 239 +CONECT 236 235 240 +CONECT 237 235 +CONECT 238 235 +CONECT 239 235 +CONECT 240 236 +CONECT 241 242 243 244 245 +CONECT 242 241 246 +CONECT 243 241 +CONECT 244 241 +CONECT 245 241 +CONECT 246 242 +CONECT 247 248 249 250 251 +CONECT 248 247 252 +CONECT 249 247 +CONECT 250 247 +CONECT 251 247 +CONECT 252 248 +CONECT 253 254 255 256 257 +CONECT 254 253 258 +CONECT 255 253 +CONECT 256 253 +CONECT 257 253 +CONECT 258 254 +CONECT 259 260 261 262 263 +CONECT 260 259 264 +CONECT 261 259 +CONECT 262 259 +CONECT 263 259 +CONECT 264 260 +CONECT 265 266 267 268 269 +CONECT 266 265 270 +CONECT 267 265 +CONECT 268 265 +CONECT 269 265 +CONECT 270 266 +CONECT 271 272 273 274 275 +CONECT 272 271 276 +CONECT 273 271 +CONECT 274 271 +CONECT 275 271 +CONECT 276 272 +CONECT 277 278 279 280 281 +CONECT 278 277 282 +CONECT 279 277 +CONECT 280 277 +CONECT 281 277 +CONECT 282 278 +CONECT 283 284 285 286 287 +CONECT 284 283 288 +CONECT 285 283 +CONECT 286 283 +CONECT 287 283 +CONECT 288 284 +CONECT 289 290 291 292 293 +CONECT 290 289 294 +CONECT 291 289 +CONECT 292 289 +CONECT 293 289 +CONECT 294 290 +CONECT 295 296 297 298 299 +CONECT 296 295 300 +CONECT 297 295 +CONECT 298 295 +CONECT 299 295 +CONECT 300 296 +CONECT 301 302 303 304 305 +CONECT 302 301 306 +CONECT 303 301 +CONECT 304 301 +CONECT 305 301 +CONECT 306 302 +CONECT 307 308 309 310 311 +CONECT 308 307 312 +CONECT 309 307 +CONECT 310 307 +CONECT 311 307 +CONECT 312 308 +CONECT 313 314 315 316 317 +CONECT 314 313 318 +CONECT 315 313 +CONECT 316 313 +CONECT 317 313 +CONECT 318 314 +CONECT 319 320 321 322 323 +CONECT 320 319 324 +CONECT 321 319 +CONECT 322 319 +CONECT 323 319 +CONECT 324 320 +CONECT 325 326 327 328 329 +CONECT 326 325 330 +CONECT 327 325 +CONECT 328 325 +CONECT 329 325 +CONECT 330 326 +CONECT 331 332 333 334 335 +CONECT 332 331 336 +CONECT 333 331 +CONECT 334 331 +CONECT 335 331 +CONECT 336 332 +CONECT 337 338 339 340 341 +CONECT 338 337 342 +CONECT 339 337 +CONECT 340 337 +CONECT 341 337 +CONECT 342 338 +CONECT 343 344 345 346 347 +CONECT 344 343 348 +CONECT 345 343 +CONECT 346 343 +CONECT 347 343 +CONECT 348 344 +CONECT 349 350 351 352 353 +CONECT 350 349 354 +CONECT 351 349 +CONECT 352 349 +CONECT 353 349 +CONECT 354 350 +CONECT 355 356 357 358 359 +CONECT 356 355 360 +CONECT 357 355 +CONECT 358 355 +CONECT 359 355 +CONECT 360 356 +CONECT 361 362 363 364 365 +CONECT 362 361 366 +CONECT 363 361 +CONECT 364 361 +CONECT 365 361 +CONECT 366 362 +CONECT 367 368 369 370 371 +CONECT 368 367 372 +CONECT 369 367 +CONECT 370 367 +CONECT 371 367 +CONECT 372 368 +CONECT 373 374 375 376 377 +CONECT 374 373 378 +CONECT 375 373 +CONECT 376 373 +CONECT 377 373 +CONECT 378 374 +CONECT 379 380 381 382 383 +CONECT 380 379 384 +CONECT 381 379 +CONECT 382 379 +CONECT 383 379 +CONECT 384 380 +END diff --git a/examples/dreiding/ch3oh.box.dreiding.cerius2.eng.dat b/examples/dreiding/ch3oh.box.dreiding.cerius2.eng.dat new file mode 100644 index 0000000000..b856598735 --- /dev/null +++ b/examples/dreiding/ch3oh.box.dreiding.cerius2.eng.dat @@ -0,0 +1,56 @@ +Energy expression created for 3D-periodic boundary conditions. + Cell information: + Density (g/cc): 0.4573 + Volume (A**3): 7447.2363 + A: 19.9969 Alpha: 90.0000 + B: 19.1282 Beta : 90.0000 + C: 19.4697 Gamma: 90.0000 + + Summary of the energy expression: + Movable atoms : 384 Fixed atoms : 0 + Polar atoms : 0 + Bonds : 320 Angles : 448 + Torsions : 192 Inversions : 0 + Urey-Bradley : 0 Bend-bend : 0 + Stretch-stretch : 0 Sep-stretch-stretch : 0 + Stretch-bend-stretch : 0 Torsion-stretch : 0 + Torsion-bend-bend : 0 Stretch-torsion-stretch: 0 + Bend-torsion-bend : 0 + Hydrogen-bond acceptors: 64 Hydrogen-bond donors : 64 + Nonbond exclusions : 768 Polar-polar exclusions : 0 + + Total charge : -0.001 Movable atoms only : -0.001 + Total mass : 2050.688 Movable atoms only : 2050.688 + +Automatically calculating Ewald parameters for Coulomb sum. + +Summary of Non-bond set up :- + Non-bond list cutoff radius : 13.530 (A) + Number of non-bond terms in list : 101788 + This has been updated 1 times since the energy expression was created. + + Using Ewald sums for Coulomb terms with: + Eta=3.932, Rcut=11.530, Kcut=0.298, Acc.=0.001 + +VDW terms truncated at : 8.500 (A) + +Diagonal VdW parameters combined using the arithmetic combination rule. + +Summary of H-bond set up using a h-bond list. + +There are 604 interactions within hbond cutoffs of + Donor-acceptor distances less than 6.500 (A) and + Donor-h-acceptor angles greater than 90.000 (degrees) + +************************************************************************ + Energy Decomposition + Valence Terms Nonbond Terms + Bonds : 0.535675 Van der Waals : -56.0592 + Angles : 1.28188 Electrostatic : 234.036 + Torsions : 1.23250 Hydrogen Bonds: -68.7337 + Inversions : 0.000000E+00 Restraints : 0.000000E+00 + Urey-Bradley : 0.000000E+00 3-Body : 0.000000E+00 + Cross-Terms : 0.000000E+00 + Total Energy : 112.293 +************************************************************************ + diff --git a/examples/dreiding/data.dreiding b/examples/dreiding/data.dreiding new file mode 100644 index 0000000000..f6d9bcf22d --- /dev/null +++ b/examples/dreiding/data.dreiding @@ -0,0 +1,1400 @@ +Created on Mon Oct 3 10:06:14 2011 + + 384 atoms + 320 bonds + 448 angles + 192 dihedrals + 0 impropers + + 4 atom types + 3 bond types + 2 angle types + 1 dihedral types + 0 improper types + + 0.000000 19.996890 xlo xhi + 0.000000 19.128160 ylo yhi + 0.000000 19.469710 zlo zhi + +Masses + + 1 1.0080 # H_ + 2 1.0080 # H___A + 3 12.0110 # C_3 + 4 15.9994 # O_3 + + +Bond Coeffs + + 1 350 1.42 # O_3 C_3 + 2 350 0.98 # O_3 H___A + 3 350 1.09 # C_3 H_ + +Angle Coeffs + + 1 50 104.51 # X O_3 X + 2 50 109.471 # X C_3 X + +Dihedral Coeffs + + 1 0.333333 1 3 # X O_3 C_3 X + +Atoms + + 1 444 3 0.03193 9.75768 9.43603 9.44978 0 0 0 + 2 444 4 -0.39965 9.07001 9.89252 10.61030 0 0 0 + 3 444 1 0.05269 9.56169 8.37372 9.30573 0 0 0 + 4 444 1 0.05269 9.40633 9.98872 8.57739 0 0 0 + 5 444 1 0.05269 10.83081 9.58873 9.56849 0 0 0 + 6 444 2 0.20964 9.28861 10.84826 10.67569 0 0 0 + 7 444 3 0.03193 7.87790 6.57305 4.37926 0 0 0 + 8 444 4 -0.39965 9.21046 6.55811 3.88167 0 0 0 + 9 444 1 0.05269 7.42565 7.54437 4.17519 0 0 0 + 10 444 1 0.05269 7.28908 5.79550 3.89029 0 0 0 + 11 444 1 0.05269 7.88159 6.39628 5.45605 0 0 0 + 12 444 2 0.20964 9.55621 5.66386 4.09964 0 0 0 + 13 444 3 0.03193 19.38728 8.01844 0.29841 0 0 0 + 14 444 4 -0.39965 18.30059 8.67235 0.94403 0 0 0 + 15 444 1 0.05269 20.09420 7.66052 1.04704 0 0 0 + 16 444 1 0.05269 19.01558 7.17130 -0.27928 0 0 0 + 17 444 1 0.05269 19.89453 8.71684 -0.36839 0 0 0 + 18 444 2 0.20964 17.72537 8.98355 0.21436 0 0 0 + 19 444 3 0.03193 3.43963 14.29741 12.62221 0 0 0 + 20 444 4 -0.39965 3.07671 15.61822 12.23631 0 0 0 + 21 444 1 0.05269 4.27302 14.34187 13.32349 0 0 0 + 22 444 1 0.05269 2.59308 13.81008 13.10508 0 0 0 + 23 444 1 0.05269 3.73991 13.72415 11.74356 0 0 0 + 24 444 2 0.20964 2.32966 15.52033 11.61130 0 0 0 + 25 444 3 0.03193 16.06751 17.84957 14.39706 0 0 0 + 26 444 4 -0.39965 15.98970 19.07282 15.11734 0 0 0 + 27 444 1 0.05269 16.77526 17.18402 14.89204 0 0 0 + 28 444 1 0.05269 15.08510 17.37867 14.36938 0 0 0 + 29 444 1 0.05269 16.40684 18.04085 13.37809 0 0 0 + 30 444 2 0.20964 15.35997 19.62900 14.61094 0 0 0 + 31 444 3 0.03193 5.61540 13.90261 0.28024 0 0 0 + 32 444 4 -0.39965 6.96329 14.33980 0.39819 0 0 0 + 33 444 1 0.05269 5.39381 13.18200 1.06831 0 0 0 + 34 444 1 0.05269 4.93854 14.75467 0.36989 0 0 0 + 35 444 1 0.05269 5.46825 13.42632 -0.68848 0 0 0 + 36 444 2 0.20964 7.08381 14.99923 -0.31851 0 0 0 + 37 444 3 0.03193 10.38444 13.74977 1.74423 0 0 0 + 38 444 4 -0.39965 10.34865 13.00890 2.96031 0 0 0 + 39 444 1 0.05269 11.31498 14.30998 1.68756 0 0 0 + 40 444 1 0.05269 10.32135 13.06875 0.89580 0 0 0 + 41 444 1 0.05269 9.54190 14.44190 1.71309 0 0 0 + 42 444 2 0.20964 9.45315 12.60486 2.98815 0 0 0 + 43 444 3 0.03193 2.71877 -0.19852 13.91482 0 0 0 + 44 444 4 -0.39965 2.55981 1.00656 13.16980 0 0 0 + 45 444 1 0.05269 3.42887 -0.85053 13.40421 0 0 0 + 46 444 1 0.05269 3.09835 0.02977 14.91227 0 0 0 + 47 444 1 0.05269 1.76062 -0.71177 13.99933 0 0 0 + 48 444 2 0.20964 1.92580 1.55260 13.68058 0 0 0 + 49 444 3 0.03193 12.86271 12.87291 9.10254 0 0 0 + 50 444 4 -0.39965 12.72964 12.19590 7.85730 0 0 0 + 51 444 1 0.05269 11.91715 12.83126 9.64447 0 0 0 + 52 444 1 0.05269 13.63913 12.39659 9.70188 0 0 0 + 53 444 1 0.05269 13.12955 13.91577 8.92585 0 0 0 + 54 444 2 0.20964 13.60640 12.28637 7.42000 0 0 0 + 55 444 3 0.03193 0.91345 1.84436 7.21758 0 0 0 + 56 444 4 -0.39965 0.16704 0.83109 7.88260 0 0 0 + 57 444 1 0.05269 1.73149 1.39473 6.65448 0 0 0 + 58 444 1 0.05269 0.25949 2.38287 6.53090 0 0 0 + 59 444 1 0.05269 1.31674 2.54212 7.95173 0 0 0 + 60 444 2 0.20964 0.79209 0.41480 8.51642 0 0 0 + 61 444 3 0.03193 3.28235 16.40235 6.34784 0 0 0 + 62 444 4 -0.39965 4.40446 15.86811 5.64397 0 0 0 + 63 444 1 0.05269 3.52775 16.47384 7.40940 0 0 0 + 64 444 1 0.05269 3.04852 17.39543 5.96551 0 0 0 + 65 444 1 0.05269 2.41989 15.75077 6.22278 0 0 0 + 66 444 2 0.20964 4.15040 15.88018 4.69552 0 0 0 + 67 444 3 0.03193 14.28685 11.84833 2.69644 0 0 0 + 68 444 4 -0.39965 14.47540 12.00775 4.09802 0 0 0 + 69 444 1 0.05269 15.22519 11.52503 2.24449 0 0 0 + 70 444 1 0.05269 13.51978 11.09713 2.50925 0 0 0 + 71 444 1 0.05269 13.98187 12.79680 2.25228 0 0 0 + 72 444 2 0.20964 13.60420 12.29868 4.44979 0 0 0 + 73 444 3 0.03193 3.74650 0.37490 9.28202 0 0 0 + 74 444 4 -0.39965 4.68624 1.26369 8.68537 0 0 0 + 75 444 1 0.05269 4.28178 -0.38700 9.84868 0 0 0 + 76 444 1 0.05269 3.08874 0.92642 9.95440 0 0 0 + 77 444 1 0.05269 3.15691 -0.10643 8.50276 0 0 0 + 78 444 2 0.20964 4.15269 1.92251 8.18619 0 0 0 + 79 444 3 0.03193 17.93191 1.98830 17.28592 0 0 0 + 80 444 4 -0.39965 16.68990 1.36769 17.60090 0 0 0 + 81 444 1 0.05269 18.23740 2.63433 18.10865 0 0 0 + 82 444 1 0.05269 18.69345 1.22519 17.12938 0 0 0 + 83 444 1 0.05269 17.82727 2.59026 16.38313 0 0 0 + 84 444 2 0.20964 16.45659 0.83462 16.81232 0 0 0 + 85 444 3 0.03193 4.61466 10.52979 17.10957 0 0 0 + 86 444 4 -0.39965 3.62035 11.42538 17.60198 0 0 0 + 87 444 1 0.05269 5.60177 10.98718 17.19552 0 0 0 + 88 444 1 0.05269 4.60514 9.60666 17.68872 0 0 0 + 89 444 1 0.05269 4.42040 10.30112 16.06086 0 0 0 + 90 444 2 0.20964 2.76200 10.96432 17.46823 0 0 0 + 91 444 3 0.03193 4.21479 2.76452 1.93621 0 0 0 + 92 444 4 -0.39965 3.45640 2.43822 3.09183 0 0 0 + 93 444 1 0.05269 5.15561 3.22498 2.23935 0 0 0 + 94 444 1 0.05269 4.42333 1.85922 1.36296 0 0 0 + 95 444 1 0.05269 3.65868 3.46500 1.31342 0 0 0 + 96 444 2 0.20964 2.68968 1.92747 2.75853 0 0 0 + 97 444 3 0.03193 2.10781 10.76856 1.36312 0 0 0 + 98 444 4 -0.39965 0.80698 11.27394 1.07892 0 0 0 + 99 444 1 0.05269 2.85114 11.53660 1.14272 0 0 0 + 100 444 1 0.05269 2.17873 10.49350 2.41651 0 0 0 + 101 444 1 0.05269 2.31220 9.89096 0.74802 0 0 0 + 102 444 2 0.20964 0.18009 10.55168 1.30975 0 0 0 + 103 444 3 0.03193 16.26093 8.92927 6.57643 0 0 0 + 104 444 4 -0.39965 15.77968 8.06983 7.60177 0 0 0 + 105 444 1 0.05269 17.30509 9.17300 6.76897 0 0 0 + 106 444 1 0.05269 16.18069 8.42876 5.61195 0 0 0 + 107 444 1 0.05269 15.67380 9.84869 6.55835 0 0 0 + 108 444 2 0.20964 14.84042 7.91008 7.37720 0 0 0 + 109 444 3 0.03193 17.80004 2.06792 1.87371 0 0 0 + 110 444 4 -0.39965 18.48862 0.99081 1.24012 0 0 0 + 111 444 1 0.05269 18.23871 2.25534 2.85453 0 0 0 + 112 444 1 0.05269 17.87937 2.96817 1.26859 0 0 0 + 113 444 1 0.05269 16.74643 1.80633 1.99693 0 0 0 + 114 444 2 0.20964 18.02202 0.85350 0.38356 0 0 0 + 115 444 3 0.03193 13.75521 14.57173 15.42181 0 0 0 + 116 444 4 -0.39965 12.73183 15.48504 15.80455 0 0 0 + 117 444 1 0.05269 14.51862 14.53760 16.20019 0 0 0 + 118 444 1 0.05269 13.33164 13.57618 15.29114 0 0 0 + 119 444 1 0.05269 14.21175 14.89091 14.48437 0 0 0 + 120 444 2 0.20964 12.11746 15.52768 15.03694 0 0 0 + 121 444 3 0.03193 6.22569 16.46321 11.49168 0 0 0 + 122 444 4 -0.39965 7.37834 15.65849 11.27192 0 0 0 + 123 444 1 0.05269 6.47325 17.50688 11.31115 0 0 0 + 124 444 1 0.05269 5.42639 16.16714 10.80967 0 0 0 + 125 444 1 0.05269 5.88670 16.35324 12.52283 0 0 0 + 126 444 2 0.20964 7.09224 14.73066 11.41776 0 0 0 + 127 444 3 0.03193 20.01012 9.33317 4.86657 0 0 0 + 128 444 4 -0.39965 19.63827 8.14994 5.56401 0 0 0 + 129 444 1 0.05269 20.82510 9.82112 5.40128 0 0 0 + 130 444 1 0.05269 20.34186 9.07963 3.85908 0 0 0 + 131 444 1 0.05269 19.16051 10.01349 4.80673 0 0 0 + 132 444 2 0.20964 18.86130 7.79949 5.07585 0 0 0 + 133 444 3 0.03193 5.99486 1.97634 5.72513 0 0 0 + 134 444 4 -0.39965 6.74021 3.13466 6.08586 0 0 0 + 135 444 1 0.05269 4.92875 2.19578 5.79288 0 0 0 + 136 444 1 0.05269 6.23376 1.68432 4.70221 0 0 0 + 137 444 1 0.05269 6.23815 1.15441 6.40034 0 0 0 + 138 444 2 0.20964 7.67684 2.83917 6.07790 0 0 0 + 139 444 3 0.03193 13.03835 7.12913 5.28770 0 0 0 + 140 444 4 -0.39965 13.02644 7.55487 6.64544 0 0 0 + 141 444 1 0.05269 12.06949 6.70203 5.02747 0 0 0 + 142 444 1 0.05269 13.24117 7.98172 4.63978 0 0 0 + 143 444 1 0.05269 13.81531 6.37647 5.14697 0 0 0 + 144 444 2 0.20964 12.38966 8.29858 6.65964 0 0 0 + 145 444 3 0.03193 10.64649 1.42163 6.99575 0 0 0 + 146 444 4 -0.39965 11.32932 1.55767 8.23581 0 0 0 + 147 444 1 0.05269 9.77461 0.78340 7.13967 0 0 0 + 148 444 1 0.05269 10.32031 2.40213 6.64261 0 0 0 + 149 444 1 0.05269 11.30461 0.96891 6.25436 0 0 0 + 150 444 2 0.20964 12.13048 2.09412 8.04749 0 0 0 + 151 444 3 0.03193 7.70974 10.56643 0.43745 0 0 0 + 152 444 4 -0.39965 6.69643 10.25499 1.38817 0 0 0 + 153 444 1 0.05269 8.59868 10.91732 0.96199 0 0 0 + 154 444 1 0.05269 7.96121 9.67471 -0.13665 0 0 0 + 155 444 1 0.05269 7.36428 11.34806 -0.24011 0 0 0 + 156 444 2 0.20964 5.94241 9.89154 0.87302 0 0 0 + 157 444 3 0.03193 12.78344 1.18067 14.16301 0 0 0 + 158 444 4 -0.39965 14.01647 1.62010 13.60417 0 0 0 + 159 444 1 0.05269 12.98217 0.47776 14.97222 0 0 0 + 160 444 1 0.05269 12.23227 2.03435 14.55662 0 0 0 + 161 444 1 0.05269 12.18352 0.68832 13.39874 0 0 0 + 162 444 2 0.20964 13.77530 2.26070 12.89474 0 0 0 + 163 444 3 0.03193 16.94139 17.42253 1.05686 0 0 0 + 164 444 4 -0.39965 16.08424 16.29569 1.04946 0 0 0 + 165 444 1 0.05269 17.18791 17.69368 0.02960 0 0 0 + 166 444 1 0.05269 16.43795 18.25970 1.54236 0 0 0 + 167 444 1 0.05269 17.85566 17.18021 1.60025 0 0 0 + 168 444 2 0.20964 15.85827 16.14412 1.99459 0 0 0 + 169 444 3 0.03193 12.48878 18.07306 2.58158 0 0 0 + 170 444 4 -0.39965 13.76343 18.70451 2.65479 0 0 0 + 171 444 1 0.05269 12.02971 18.30966 1.62310 0 0 0 + 172 444 1 0.05269 12.61189 16.99304 2.67149 0 0 0 + 173 444 1 0.05269 11.85062 18.43623 3.38623 0 0 0 + 174 444 2 0.20964 14.05960 18.54980 3.57438 0 0 0 + 175 444 3 0.03193 19.92937 14.32320 3.09954 0 0 0 + 176 444 4 -0.39965 20.47921 14.98239 4.23349 0 0 0 + 177 444 1 0.05269 19.06424 14.88021 2.74247 0 0 0 + 178 444 1 0.05269 20.67424 14.26863 2.30532 0 0 0 + 179 444 1 0.05269 19.62003 13.31457 3.37662 0 0 0 + 180 444 2 0.20964 21.24382 14.42340 4.50083 0 0 0 + 181 444 3 0.03193 10.63009 10.62036 5.48247 0 0 0 + 182 444 4 -0.39965 11.32080 9.96459 6.53930 0 0 0 + 183 444 1 0.05269 9.97896 9.90801 4.97371 0 0 0 + 184 444 1 0.05269 10.02580 11.43533 5.88411 0 0 0 + 185 444 1 0.05269 11.34799 11.02578 4.76860 0 0 0 + 186 444 2 0.20964 11.85790 10.67095 6.95281 0 0 0 + 187 444 3 0.03193 15.65699 9.09727 17.99408 0 0 0 + 188 444 4 -0.39965 16.90142 9.78939 17.98916 0 0 0 + 189 444 1 0.05269 15.04412 9.44428 18.82685 0 0 0 + 190 444 1 0.05269 15.12611 9.28242 17.05809 0 0 0 + 191 444 1 0.05269 15.82887 8.02576 18.10423 0 0 0 + 192 444 2 0.20964 17.40700 9.38003 17.24481 0 0 0 + 193 444 3 0.03193 17.18063 5.09511 5.97377 0 0 0 + 194 444 4 -0.39965 17.00699 3.69621 6.16625 0 0 0 + 195 444 1 0.05269 16.80087 5.38050 4.99222 0 0 0 + 196 444 1 0.05269 16.63290 5.63866 6.74297 0 0 0 + 197 444 1 0.05269 18.23947 5.34654 6.03632 0 0 0 + 198 444 2 0.20964 17.37922 3.51369 7.05728 0 0 0 + 199 444 3 0.03193 9.27176 16.96360 18.60348 0 0 0 + 200 444 4 -0.39965 10.16048 17.88001 19.23027 0 0 0 + 201 444 1 0.05269 8.24372 17.25233 18.82182 0 0 0 + 202 444 1 0.05269 9.42846 16.97594 17.52377 0 0 0 + 203 444 1 0.05269 9.45162 15.95835 18.98512 0 0 0 + 204 444 2 0.20964 11.05433 17.57777 18.98374 0 0 0 + 205 444 3 0.03193 19.02698 11.32629 8.74382 0 0 0 + 206 444 4 -0.39965 19.55395 11.57496 7.44476 0 0 0 + 207 444 1 0.05269 19.84306 11.28874 9.46486 0 0 0 + 208 444 1 0.05269 18.34041 12.12651 9.02172 0 0 0 + 209 444 1 0.05269 18.49941 10.37268 8.75573 0 0 0 + 210 444 2 0.20964 18.77484 11.55877 6.84653 0 0 0 + 211 444 3 0.03193 13.70984 17.91381 18.18096 0 0 0 + 212 444 4 -0.39965 12.78082 16.86629 18.42949 0 0 0 + 213 444 1 0.05269 14.65264 17.49419 17.82801 0 0 0 + 214 444 1 0.05269 13.30579 18.58561 17.42320 0 0 0 + 215 444 1 0.05269 13.88737 18.47185 19.10049 0 0 0 + 216 444 2 0.20964 12.70938 16.39241 17.57615 0 0 0 + 217 444 3 0.03193 7.96084 1.88854 9.90132 0 0 0 + 218 444 4 -0.39965 7.16836 0.76877 10.27166 0 0 0 + 219 444 1 0.05269 8.08701 1.90679 8.82000 0 0 0 + 220 444 1 0.05269 7.47244 2.80930 10.22050 0 0 0 + 221 444 1 0.05269 8.93667 1.81039 10.37952 0 0 0 + 222 444 2 0.20964 6.33219 0.87991 9.77220 0 0 0 + 223 444 3 0.03193 8.67989 16.70958 5.83790 0 0 0 + 224 444 4 -0.39965 8.12024 17.60224 6.79460 0 0 0 + 225 444 1 0.05269 8.09228 16.75013 4.91967 0 0 0 + 226 444 1 0.05269 9.70728 17.00048 5.62151 0 0 0 + 227 444 1 0.05269 8.66415 15.69153 6.22812 0 0 0 + 228 444 2 0.20964 8.61953 17.44038 7.62546 0 0 0 + 229 444 3 0.03193 8.92912 4.00904 0.50900 0 0 0 + 230 444 4 -0.39965 8.96759 5.27857 -0.13058 0 0 0 + 231 444 1 0.05269 8.33969 4.08141 1.42278 0 0 0 + 232 444 1 0.05269 8.47682 3.27429 -0.15833 0 0 0 + 233 444 1 0.05269 9.94193 3.69036 0.75961 0 0 0 + 234 444 2 0.20964 9.53405 5.14064 -0.92363 0 0 0 + 235 444 3 0.03193 14.12006 6.78048 11.59632 0 0 0 + 236 444 4 -0.39965 13.07688 7.13628 10.69542 0 0 0 + 237 444 1 0.05269 14.86068 7.57932 11.63302 0 0 0 + 238 444 1 0.05269 13.70582 6.62813 12.59405 0 0 0 + 239 444 1 0.05269 14.60290 5.86276 11.26001 0 0 0 + 240 444 2 0.20964 12.46641 6.36815 10.68540 0 0 0 + 241 444 3 0.03193 11.17366 12.60541 17.35410 0 0 0 + 242 444 4 -0.39965 11.02139 13.96786 17.73395 0 0 0 + 243 444 1 0.05269 10.47704 11.99021 17.92352 0 0 0 + 244 444 1 0.05269 10.96097 12.49402 16.29011 0 0 0 + 245 444 1 0.05269 12.19388 12.27752 17.55780 0 0 0 + 246 444 2 0.20964 11.62997 14.46572 17.15437 0 0 0 + 247 444 3 0.03193 13.59375 17.68257 6.60725 0 0 0 + 248 444 4 -0.39965 14.41796 18.19915 5.56896 0 0 0 + 249 444 1 0.05269 12.56750 17.59958 6.25257 0 0 0 + 250 444 1 0.05269 13.95140 16.69610 6.90350 0 0 0 + 251 444 1 0.05269 13.62441 18.35441 7.46523 0 0 0 + 252 444 2 0.20964 15.31701 18.26489 5.96089 0 0 0 + 253 444 3 0.03193 5.00550 8.70879 7.93082 0 0 0 + 254 444 4 -0.39965 5.30633 7.53730 7.17920 0 0 0 + 255 444 1 0.05269 3.92410 8.80228 8.03546 0 0 0 + 256 444 1 0.05269 5.45973 8.64206 8.92134 0 0 0 + 257 444 1 0.05269 5.39337 9.58812 7.41497 0 0 0 + 258 444 2 0.20964 6.28240 7.52607 7.08649 0 0 0 + 259 444 3 0.03193 19.22046 1.28969 13.91270 0 0 0 + 260 444 4 -0.39965 20.08805 2.12898 14.66921 0 0 0 + 261 444 1 0.05269 18.36269 1.87059 13.57299 0 0 0 + 262 444 1 0.05269 19.74873 0.89208 13.04541 0 0 0 + 263 444 1 0.05269 18.87095 0.46148 14.53042 0 0 0 + 264 444 2 0.20964 20.73583 1.52580 15.09558 0 0 0 + 265 444 3 0.03193 5.65052 5.42047 10.40141 0 0 0 + 266 444 4 -0.39965 6.43233 5.15576 11.55959 0 0 0 + 267 444 1 0.05269 4.77591 4.76790 10.40245 0 0 0 + 268 444 1 0.05269 5.31750 6.45945 10.40208 0 0 0 + 269 444 1 0.05269 6.23775 5.22771 9.50311 0 0 0 + 270 444 2 0.20964 7.22334 5.73649 11.49818 0 0 0 + 271 444 3 0.03193 13.28289 5.81639 20.26495 0 0 0 + 272 444 4 -0.39965 14.46108 5.91020 19.47306 0 0 0 + 273 444 1 0.05269 12.54449 6.53149 19.89956 0 0 0 + 274 444 1 0.05269 12.86565 4.81041 20.20085 0 0 0 + 275 444 1 0.05269 13.51599 6.04282 21.30628 0 0 0 + 276 444 2 0.20964 15.06689 5.21681 19.82048 0 0 0 + 277 444 3 0.03193 8.93119 18.18764 13.28407 0 0 0 + 278 444 4 -0.39965 7.83369 17.94987 14.15258 0 0 0 + 279 444 1 0.05269 8.62256 18.85058 12.47662 0 0 0 + 280 444 1 0.05269 9.74951 18.65521 13.83984 0 0 0 + 281 444 1 0.05269 9.27914 17.24313 12.85839 0 0 0 + 282 444 2 0.20964 8.18034 17.33710 14.83873 0 0 0 + 283 444 3 0.03193 5.79456 2.19968 17.80701 0 0 0 + 284 444 4 -0.39965 6.24133 2.96696 16.69489 0 0 0 + 285 444 1 0.05269 5.95925 2.76662 18.72146 0 0 0 + 286 444 1 0.05269 4.73133 1.97951 17.70368 0 0 0 + 287 444 1 0.05269 6.35360 1.26369 17.85787 0 0 0 + 288 444 2 0.20964 6.11167 2.36984 15.93032 0 0 0 + 289 444 3 0.03193 7.02257 8.31146 13.32419 0 0 0 + 290 444 4 -0.39965 6.81830 9.58617 13.92250 0 0 0 + 291 444 1 0.05269 6.70351 7.53159 14.01772 0 0 0 + 292 444 1 0.05269 6.43819 8.23664 12.40602 0 0 0 + 293 444 1 0.05269 8.08019 8.17829 13.09255 0 0 0 + 294 444 2 0.20964 7.15181 10.23194 13.26245 0 0 0 + 295 444 3 0.03193 14.02631 3.46938 16.96774 0 0 0 + 296 444 4 -0.39965 13.54366 2.24600 17.51611 0 0 0 + 297 444 1 0.05269 13.77498 3.53066 15.91013 0 0 0 + 298 444 1 0.05269 13.56595 4.30739 17.48900 0 0 0 + 299 444 1 0.05269 15.10861 3.52592 17.07904 0 0 0 + 300 444 2 0.20964 13.94305 2.20406 18.41525 0 0 0 + 301 444 3 0.03193 1.20831 18.57486 2.95108 0 0 0 + 302 444 4 -0.39965 1.22576 19.81993 2.26075 0 0 0 + 303 444 1 0.05269 0.55458 18.64320 3.82147 0 0 0 + 304 444 1 0.05269 0.84728 17.78646 2.28798 0 0 0 + 305 444 1 0.05269 2.21813 18.32995 3.28130 0 0 0 + 306 444 2 0.20964 0.30364 19.97372 1.97883 0 0 0 + 307 444 3 0.03193 13.27354 18.56828 10.67719 0 0 0 + 308 444 4 -0.39965 12.48821 17.54334 10.07841 0 0 0 + 309 444 1 0.05269 12.67535 19.47728 10.75867 0 0 0 + 310 444 1 0.05269 13.59103 18.25289 11.67155 0 0 0 + 311 444 1 0.05269 14.15208 18.77184 10.06448 0 0 0 + 312 444 2 0.20964 13.09935 16.78781 9.93641 0 0 0 + 313 444 3 0.03193 6.36730 14.29234 8.10345 0 0 0 + 314 444 4 -0.39965 6.40678 13.98673 6.71535 0 0 0 + 315 444 1 0.05269 5.36805 14.09806 8.49177 0 0 0 + 316 444 1 0.05269 7.08832 13.66856 8.63166 0 0 0 + 317 444 1 0.05269 6.61905 15.34196 8.25886 0 0 0 + 318 444 2 0.20964 5.76587 14.60457 6.30951 0 0 0 + 319 444 3 0.03193 2.65328 9.08063 11.58358 0 0 0 + 320 444 4 -0.39965 2.00217 9.04988 10.31818 0 0 0 + 321 444 1 0.05269 2.77179 8.06201 11.95511 0 0 0 + 322 444 1 0.05269 3.63556 9.54427 11.48302 0 0 0 + 323 444 1 0.05269 2.05382 9.65342 12.29226 0 0 0 + 324 444 2 0.20964 1.90245 9.98881 10.05330 0 0 0 + 325 444 3 0.03193 16.09537 13.47946 18.75299 0 0 0 + 326 444 4 -0.39965 15.35647 12.29789 19.02596 0 0 0 + 327 444 1 0.05269 15.44738 14.34606 18.88103 0 0 0 + 328 444 1 0.05269 16.93959 13.54850 19.44072 0 0 0 + 329 444 1 0.05269 16.46394 13.45617 17.72675 0 0 0 + 330 444 2 0.20964 15.94172 11.56097 18.74998 0 0 0 + 331 444 3 0.03193 5.36713 6.40841 19.02468 0 0 0 + 332 444 4 -0.39965 6.23337 6.92207 18.01801 0 0 0 + 333 444 1 0.05269 4.33549 6.65297 18.77623 0 0 0 + 334 444 1 0.05269 5.47707 5.32425 19.08654 0 0 0 + 335 444 1 0.05269 5.62819 6.85675 19.98559 0 0 0 + 336 444 2 0.20964 7.13950 6.67949 18.31120 0 0 0 + 337 444 3 0.03193 1.77513 13.81811 9.21198 0 0 0 + 338 444 4 -0.39965 0.83100 14.28966 10.16552 0 0 0 + 339 444 1 0.05269 1.29728 13.75593 8.23483 0 0 0 + 340 444 1 0.05269 2.62178 14.50388 9.15673 0 0 0 + 341 444 1 0.05269 2.12880 12.82836 9.50371 0 0 0 + 342 444 2 0.20964 1.30194 14.30478 11.02173 0 0 0 + 343 444 3 0.03193 21.59943 4.06368 17.75073 0 0 0 + 344 444 4 -0.39965 21.85233 3.04768 18.71336 0 0 0 + 345 444 1 0.05269 22.11092 3.81498 16.82008 0 0 0 + 346 444 1 0.05269 20.52800 4.13659 17.56408 0 0 0 + 347 444 1 0.05269 21.97071 5.01986 18.11886 0 0 0 + 348 444 2 0.20964 21.40074 3.34325 19.53474 0 0 0 + 349 444 3 0.03193 16.52622 4.73908 13.63762 0 0 0 + 350 444 4 -0.39965 15.55282 5.45454 14.38889 0 0 0 + 351 444 1 0.05269 16.03370 3.96708 13.04616 0 0 0 + 352 444 1 0.05269 17.05262 5.42291 12.96909 0 0 0 + 353 444 1 0.05269 17.24076 4.27126 14.31456 0 0 0 + 354 444 2 0.20964 16.06701 6.07053 14.95693 0 0 0 + 355 444 3 0.03193 20.20141 14.20302 18.50889 0 0 0 + 356 444 4 -0.39965 21.44729 13.78288 19.04009 0 0 0 + 357 444 1 0.05269 20.32931 15.13613 17.95996 0 0 0 + 358 444 1 0.05269 19.81275 13.43791 17.83324 0 0 0 + 359 444 1 0.05269 19.48848 14.36395 19.32079 0 0 0 + 360 444 2 0.20964 21.25026 12.96615 19.54627 0 0 0 + 361 444 3 0.03193 3.32298 14.94425 16.50422 0 0 0 + 362 444 4 -0.39965 4.38694 14.00670 16.37303 0 0 0 + 363 444 1 0.05269 3.54498 15.83135 15.91086 0 0 0 + 364 444 1 0.05269 2.39143 14.50263 16.15017 0 0 0 + 365 444 1 0.05269 3.21366 15.23418 17.54978 0 0 0 + 366 444 2 0.20964 4.09659 13.20452 16.85511 0 0 0 + 367 444 3 0.03193 10.00891 1.19780 16.80998 0 0 0 + 368 444 4 -0.39965 10.58951 1.67540 18.01757 0 0 0 + 369 444 1 0.05269 8.95573 0.97837 16.97853 0 0 0 + 370 444 1 0.05269 10.09279 1.95889 16.03422 0 0 0 + 371 444 1 0.05269 10.51430 0.28729 16.48583 0 0 0 + 372 444 2 0.20964 11.54632 1.78202 17.83462 0 0 0 + 373 444 3 0.03193 1.31776 5.21190 2.64974 0 0 0 + 374 444 4 -0.39965 0.78156 4.20400 1.79964 0 0 0 + 375 444 1 0.05269 2.00060 5.84322 2.08036 0 0 0 + 376 444 1 0.05269 0.50993 5.82499 3.05018 0 0 0 + 377 444 1 0.05269 1.85905 4.74873 3.47448 0 0 0 + 378 444 2 0.20964 0.20631 3.65922 2.38482 0 0 0 + 379 444 3 0.03193 5.74906 1.64126 13.27894 0 0 0 + 380 444 4 -0.39965 5.74933 0.96366 14.53304 0 0 0 + 381 444 1 0.05269 5.05775 2.48272 13.31880 0 0 0 + 382 444 1 0.05269 6.74849 2.01315 13.05234 0 0 0 + 383 444 1 0.05269 5.43187 0.95557 12.49248 0 0 0 + 384 444 2 0.20964 6.42516 0.25912 14.43537 0 0 0 + + +Bonds + + 1 1 1 2 + 2 3 1 3 + 3 3 1 4 + 4 3 1 5 + 5 2 2 6 + 6 1 7 8 + 7 3 7 9 + 8 3 7 10 + 9 3 7 11 + 10 2 8 12 + 11 1 13 14 + 12 3 13 15 + 13 3 13 16 + 14 3 13 17 + 15 2 14 18 + 16 1 19 20 + 17 3 19 21 + 18 3 19 22 + 19 3 19 23 + 20 2 20 24 + 21 1 25 26 + 22 3 25 27 + 23 3 25 28 + 24 3 25 29 + 25 2 26 30 + 26 1 31 32 + 27 3 31 33 + 28 3 31 34 + 29 3 31 35 + 30 2 32 36 + 31 1 37 38 + 32 3 37 39 + 33 3 37 40 + 34 3 37 41 + 35 2 38 42 + 36 1 43 44 + 37 3 43 45 + 38 3 43 46 + 39 3 43 47 + 40 2 44 48 + 41 1 49 50 + 42 3 49 51 + 43 3 49 52 + 44 3 49 53 + 45 2 50 54 + 46 1 55 56 + 47 3 55 57 + 48 3 55 58 + 49 3 55 59 + 50 2 56 60 + 51 1 61 62 + 52 3 61 63 + 53 3 61 64 + 54 3 61 65 + 55 2 62 66 + 56 1 67 68 + 57 3 67 69 + 58 3 67 70 + 59 3 67 71 + 60 2 68 72 + 61 1 73 74 + 62 3 73 75 + 63 3 73 76 + 64 3 73 77 + 65 2 74 78 + 66 1 79 80 + 67 3 79 81 + 68 3 79 82 + 69 3 79 83 + 70 2 80 84 + 71 1 85 86 + 72 3 85 87 + 73 3 85 88 + 74 3 85 89 + 75 2 86 90 + 76 1 91 92 + 77 3 91 93 + 78 3 91 94 + 79 3 91 95 + 80 2 92 96 + 81 1 97 98 + 82 3 97 99 + 83 3 97 100 + 84 3 97 101 + 85 2 98 102 + 86 1 103 104 + 87 3 103 105 + 88 3 103 106 + 89 3 103 107 + 90 2 104 108 + 91 1 109 110 + 92 3 109 111 + 93 3 109 112 + 94 3 109 113 + 95 2 110 114 + 96 1 115 116 + 97 3 115 117 + 98 3 115 118 + 99 3 115 119 + 100 2 116 120 + 101 1 121 122 + 102 3 121 123 + 103 3 121 124 + 104 3 121 125 + 105 2 122 126 + 106 1 127 128 + 107 3 127 129 + 108 3 127 130 + 109 3 127 131 + 110 2 128 132 + 111 1 133 134 + 112 3 133 135 + 113 3 133 136 + 114 3 133 137 + 115 2 134 138 + 116 1 139 140 + 117 3 139 141 + 118 3 139 142 + 119 3 139 143 + 120 2 140 144 + 121 1 145 146 + 122 3 145 147 + 123 3 145 148 + 124 3 145 149 + 125 2 146 150 + 126 1 151 152 + 127 3 151 153 + 128 3 151 154 + 129 3 151 155 + 130 2 152 156 + 131 1 157 158 + 132 3 157 159 + 133 3 157 160 + 134 3 157 161 + 135 2 158 162 + 136 1 163 164 + 137 3 163 165 + 138 3 163 166 + 139 3 163 167 + 140 2 164 168 + 141 1 169 170 + 142 3 169 171 + 143 3 169 172 + 144 3 169 173 + 145 2 170 174 + 146 1 175 176 + 147 3 175 177 + 148 3 175 178 + 149 3 175 179 + 150 2 176 180 + 151 1 181 182 + 152 3 181 183 + 153 3 181 184 + 154 3 181 185 + 155 2 182 186 + 156 1 187 188 + 157 3 187 189 + 158 3 187 190 + 159 3 187 191 + 160 2 188 192 + 161 1 193 194 + 162 3 193 195 + 163 3 193 196 + 164 3 193 197 + 165 2 194 198 + 166 1 199 200 + 167 3 199 201 + 168 3 199 202 + 169 3 199 203 + 170 2 200 204 + 171 1 205 206 + 172 3 205 207 + 173 3 205 208 + 174 3 205 209 + 175 2 206 210 + 176 1 211 212 + 177 3 211 213 + 178 3 211 214 + 179 3 211 215 + 180 2 212 216 + 181 1 217 218 + 182 3 217 219 + 183 3 217 220 + 184 3 217 221 + 185 2 218 222 + 186 1 223 224 + 187 3 223 225 + 188 3 223 226 + 189 3 223 227 + 190 2 224 228 + 191 1 229 230 + 192 3 229 231 + 193 3 229 232 + 194 3 229 233 + 195 2 230 234 + 196 1 235 236 + 197 3 235 237 + 198 3 235 238 + 199 3 235 239 + 200 2 236 240 + 201 1 241 242 + 202 3 241 243 + 203 3 241 244 + 204 3 241 245 + 205 2 242 246 + 206 1 247 248 + 207 3 247 249 + 208 3 247 250 + 209 3 247 251 + 210 2 248 252 + 211 1 253 254 + 212 3 253 255 + 213 3 253 256 + 214 3 253 257 + 215 2 254 258 + 216 1 259 260 + 217 3 259 261 + 218 3 259 262 + 219 3 259 263 + 220 2 260 264 + 221 1 265 266 + 222 3 265 267 + 223 3 265 268 + 224 3 265 269 + 225 2 266 270 + 226 1 271 272 + 227 3 271 273 + 228 3 271 274 + 229 3 271 275 + 230 2 272 276 + 231 1 277 278 + 232 3 277 279 + 233 3 277 280 + 234 3 277 281 + 235 2 278 282 + 236 1 283 284 + 237 3 283 285 + 238 3 283 286 + 239 3 283 287 + 240 2 284 288 + 241 1 289 290 + 242 3 289 291 + 243 3 289 292 + 244 3 289 293 + 245 2 290 294 + 246 1 295 296 + 247 3 295 297 + 248 3 295 298 + 249 3 295 299 + 250 2 296 300 + 251 1 301 302 + 252 3 301 303 + 253 3 301 304 + 254 3 301 305 + 255 2 302 306 + 256 1 307 308 + 257 3 307 309 + 258 3 307 310 + 259 3 307 311 + 260 2 308 312 + 261 1 313 314 + 262 3 313 315 + 263 3 313 316 + 264 3 313 317 + 265 2 314 318 + 266 1 319 320 + 267 3 319 321 + 268 3 319 322 + 269 3 319 323 + 270 2 320 324 + 271 1 325 326 + 272 3 325 327 + 273 3 325 328 + 274 3 325 329 + 275 2 326 330 + 276 1 331 332 + 277 3 331 333 + 278 3 331 334 + 279 3 331 335 + 280 2 332 336 + 281 1 337 338 + 282 3 337 339 + 283 3 337 340 + 284 3 337 341 + 285 2 338 342 + 286 1 343 344 + 287 3 343 345 + 288 3 343 346 + 289 3 343 347 + 290 2 344 348 + 291 1 349 350 + 292 3 349 351 + 293 3 349 352 + 294 3 349 353 + 295 2 350 354 + 296 1 355 356 + 297 3 355 357 + 298 3 355 358 + 299 3 355 359 + 300 2 356 360 + 301 1 361 362 + 302 3 361 363 + 303 3 361 364 + 304 3 361 365 + 305 2 362 366 + 306 1 367 368 + 307 3 367 369 + 308 3 367 370 + 309 3 367 371 + 310 2 368 372 + 311 1 373 374 + 312 3 373 375 + 313 3 373 376 + 314 3 373 377 + 315 2 374 378 + 316 1 379 380 + 317 3 379 381 + 318 3 379 382 + 319 3 379 383 + 320 2 380 384 + +Angles + + 1 2 3 1 2 + 2 2 4 1 2 + 3 2 4 1 3 + 4 2 5 1 2 + 5 2 5 1 3 + 6 2 5 1 4 + 7 1 6 2 1 + 8 1 7 8 12 + 9 2 8 7 10 + 10 2 8 7 11 + 11 2 9 7 8 + 12 2 9 7 10 + 13 2 9 7 11 + 14 2 11 7 10 + 15 2 15 13 14 + 16 2 16 13 14 + 17 2 16 13 15 + 18 2 17 13 14 + 19 2 17 13 15 + 20 2 17 13 16 + 21 1 18 14 13 + 22 2 21 19 20 + 23 2 22 19 20 + 24 2 22 19 21 + 25 2 23 19 20 + 26 2 23 19 21 + 27 2 23 19 22 + 28 1 24 20 19 + 29 2 27 25 26 + 30 2 28 25 26 + 31 2 28 25 27 + 32 2 29 25 26 + 33 2 29 25 27 + 34 2 29 25 28 + 35 1 30 26 25 + 36 2 33 31 32 + 37 2 34 31 32 + 38 2 34 31 33 + 39 2 35 31 32 + 40 2 35 31 33 + 41 2 35 31 34 + 42 1 36 32 31 + 43 2 39 37 38 + 44 2 40 37 38 + 45 2 40 37 39 + 46 2 41 37 38 + 47 2 41 37 39 + 48 2 41 37 40 + 49 1 42 38 37 + 50 2 45 43 44 + 51 2 46 43 44 + 52 2 46 43 45 + 53 2 47 43 44 + 54 2 47 43 45 + 55 2 47 43 46 + 56 1 48 44 43 + 57 2 51 49 50 + 58 2 52 49 50 + 59 2 52 49 51 + 60 2 53 49 50 + 61 2 53 49 51 + 62 2 53 49 52 + 63 1 54 50 49 + 64 2 57 55 56 + 65 2 58 55 56 + 66 2 58 55 57 + 67 2 59 55 56 + 68 2 59 55 57 + 69 2 59 55 58 + 70 1 60 56 55 + 71 2 63 61 62 + 72 2 64 61 62 + 73 2 64 61 63 + 74 2 65 61 62 + 75 2 65 61 63 + 76 2 65 61 64 + 77 1 66 62 61 + 78 2 69 67 68 + 79 2 70 67 68 + 80 2 70 67 69 + 81 2 71 67 68 + 82 2 71 67 69 + 83 2 71 67 70 + 84 1 72 68 67 + 85 2 75 73 74 + 86 2 76 73 74 + 87 2 76 73 75 + 88 2 77 73 74 + 89 2 77 73 75 + 90 2 77 73 76 + 91 1 78 74 73 + 92 2 81 79 80 + 93 2 82 79 80 + 94 2 82 79 81 + 95 2 83 79 80 + 96 2 83 79 81 + 97 2 83 79 82 + 98 1 84 80 79 + 99 2 87 85 86 + 100 2 88 85 86 + 101 2 88 85 87 + 102 2 89 85 86 + 103 2 89 85 87 + 104 2 89 85 88 + 105 1 90 86 85 + 106 2 93 91 92 + 107 2 94 91 92 + 108 2 94 91 93 + 109 2 95 91 92 + 110 2 95 91 93 + 111 2 95 91 94 + 112 1 96 92 91 + 113 1 97 98 102 + 114 2 98 97 100 + 115 2 98 97 101 + 116 2 99 97 98 + 117 2 99 97 100 + 118 2 99 97 101 + 119 2 101 97 100 + 120 2 105 103 104 + 121 2 106 103 104 + 122 2 106 103 105 + 123 2 107 103 104 + 124 2 107 103 105 + 125 2 107 103 106 + 126 1 108 104 103 + 127 2 111 109 110 + 128 2 112 109 110 + 129 2 112 109 111 + 130 2 113 109 110 + 131 2 113 109 111 + 132 2 113 109 112 + 133 1 114 110 109 + 134 2 117 115 116 + 135 2 118 115 116 + 136 2 118 115 117 + 137 2 119 115 116 + 138 2 119 115 117 + 139 2 119 115 118 + 140 1 120 116 115 + 141 2 123 121 122 + 142 2 124 121 122 + 143 2 124 121 123 + 144 2 125 121 122 + 145 2 125 121 123 + 146 2 125 121 124 + 147 1 126 122 121 + 148 2 129 127 128 + 149 2 130 127 128 + 150 2 130 127 129 + 151 2 131 127 128 + 152 2 131 127 129 + 153 2 131 127 130 + 154 1 132 128 127 + 155 2 135 133 134 + 156 2 136 133 134 + 157 2 136 133 135 + 158 2 137 133 134 + 159 2 137 133 135 + 160 2 137 133 136 + 161 1 138 134 133 + 162 2 141 139 140 + 163 2 142 139 140 + 164 2 142 139 141 + 165 2 143 139 140 + 166 2 143 139 141 + 167 2 143 139 142 + 168 1 144 140 139 + 169 2 147 145 146 + 170 2 148 145 146 + 171 2 148 145 147 + 172 2 149 145 146 + 173 2 149 145 147 + 174 2 149 145 148 + 175 1 150 146 145 + 176 2 153 151 152 + 177 2 154 151 152 + 178 2 154 151 153 + 179 2 155 151 152 + 180 2 155 151 153 + 181 2 155 151 154 + 182 1 156 152 151 + 183 2 159 157 158 + 184 2 160 157 158 + 185 2 160 157 159 + 186 2 161 157 158 + 187 2 161 157 159 + 188 2 161 157 160 + 189 1 162 158 157 + 190 2 165 163 164 + 191 2 166 163 164 + 192 2 166 163 165 + 193 2 167 163 164 + 194 2 167 163 165 + 195 2 167 163 166 + 196 1 168 164 163 + 197 2 171 169 170 + 198 2 172 169 170 + 199 2 172 169 171 + 200 2 173 169 170 + 201 2 173 169 171 + 202 2 173 169 172 + 203 1 174 170 169 + 204 2 177 175 176 + 205 2 178 175 176 + 206 2 178 175 177 + 207 2 179 175 176 + 208 2 179 175 177 + 209 2 179 175 178 + 210 1 180 176 175 + 211 2 183 181 182 + 212 2 184 181 182 + 213 2 184 181 183 + 214 2 185 181 182 + 215 2 185 181 183 + 216 2 185 181 184 + 217 1 186 182 181 + 218 2 189 187 188 + 219 2 190 187 188 + 220 2 190 187 189 + 221 2 191 187 188 + 222 2 191 187 189 + 223 2 191 187 190 + 224 1 192 188 187 + 225 2 195 193 194 + 226 2 196 193 194 + 227 2 196 193 195 + 228 2 197 193 194 + 229 2 197 193 195 + 230 2 197 193 196 + 231 1 198 194 193 + 232 2 201 199 200 + 233 2 202 199 200 + 234 2 202 199 201 + 235 2 203 199 200 + 236 2 203 199 201 + 237 2 203 199 202 + 238 1 204 200 199 + 239 2 207 205 206 + 240 2 208 205 206 + 241 2 208 205 207 + 242 2 209 205 206 + 243 2 209 205 207 + 244 2 209 205 208 + 245 1 210 206 205 + 246 2 213 211 212 + 247 2 214 211 212 + 248 2 214 211 213 + 249 2 215 211 212 + 250 2 215 211 213 + 251 2 215 211 214 + 252 1 216 212 211 + 253 2 219 217 218 + 254 2 220 217 218 + 255 2 220 217 219 + 256 2 221 217 218 + 257 2 221 217 219 + 258 2 221 217 220 + 259 1 222 218 217 + 260 2 225 223 224 + 261 2 226 223 224 + 262 2 226 223 225 + 263 2 227 223 224 + 264 2 227 223 225 + 265 2 227 223 226 + 266 1 228 224 223 + 267 2 231 229 230 + 268 2 232 229 230 + 269 2 232 229 231 + 270 2 233 229 230 + 271 2 233 229 231 + 272 2 233 229 232 + 273 1 234 230 229 + 274 2 237 235 236 + 275 2 238 235 236 + 276 2 238 235 237 + 277 2 239 235 236 + 278 2 239 235 237 + 279 2 239 235 238 + 280 1 240 236 235 + 281 2 243 241 242 + 282 2 244 241 242 + 283 2 244 241 243 + 284 2 245 241 242 + 285 2 245 241 243 + 286 2 245 241 244 + 287 1 246 242 241 + 288 2 249 247 248 + 289 2 250 247 248 + 290 2 250 247 249 + 291 2 251 247 248 + 292 2 251 247 249 + 293 2 251 247 250 + 294 1 252 248 247 + 295 2 255 253 254 + 296 2 256 253 254 + 297 2 256 253 255 + 298 2 257 253 254 + 299 2 257 253 255 + 300 2 257 253 256 + 301 1 258 254 253 + 302 2 261 259 260 + 303 2 262 259 260 + 304 2 262 259 261 + 305 2 263 259 260 + 306 2 263 259 261 + 307 2 263 259 262 + 308 1 264 260 259 + 309 2 267 265 266 + 310 2 268 265 266 + 311 2 268 265 267 + 312 2 269 265 266 + 313 2 269 265 267 + 314 2 269 265 268 + 315 1 270 266 265 + 316 2 273 271 272 + 317 2 274 271 272 + 318 2 274 271 273 + 319 2 275 271 272 + 320 2 275 271 273 + 321 2 275 271 274 + 322 1 276 272 271 + 323 2 279 277 278 + 324 2 280 277 278 + 325 2 280 277 279 + 326 2 281 277 278 + 327 2 281 277 279 + 328 2 281 277 280 + 329 1 282 278 277 + 330 2 285 283 284 + 331 2 286 283 284 + 332 2 286 283 285 + 333 2 287 283 284 + 334 2 287 283 285 + 335 2 287 283 286 + 336 1 288 284 283 + 337 2 291 289 290 + 338 2 292 289 290 + 339 2 292 289 291 + 340 2 293 289 290 + 341 2 293 289 291 + 342 2 293 289 292 + 343 1 294 290 289 + 344 2 297 295 296 + 345 2 298 295 296 + 346 2 298 295 297 + 347 2 299 295 296 + 348 2 299 295 297 + 349 2 299 295 298 + 350 1 300 296 295 + 351 2 303 301 302 + 352 2 304 301 302 + 353 2 304 301 303 + 354 2 305 301 302 + 355 2 305 301 303 + 356 2 305 301 304 + 357 1 306 302 301 + 358 2 309 307 308 + 359 2 310 307 308 + 360 2 310 307 309 + 361 2 311 307 308 + 362 2 311 307 309 + 363 2 311 307 310 + 364 1 312 308 307 + 365 2 315 313 314 + 366 2 316 313 314 + 367 2 316 313 315 + 368 2 317 313 314 + 369 2 317 313 315 + 370 2 317 313 316 + 371 1 318 314 313 + 372 2 321 319 320 + 373 2 322 319 320 + 374 2 322 319 321 + 375 2 323 319 320 + 376 2 323 319 321 + 377 2 323 319 322 + 378 1 324 320 319 + 379 2 327 325 326 + 380 2 328 325 326 + 381 2 328 325 327 + 382 2 329 325 326 + 383 2 329 325 327 + 384 2 329 325 328 + 385 1 330 326 325 + 386 2 333 331 332 + 387 2 334 331 332 + 388 2 334 331 333 + 389 2 335 331 332 + 390 2 335 331 333 + 391 2 335 331 334 + 392 1 336 332 331 + 393 2 339 337 338 + 394 2 340 337 338 + 395 2 340 337 339 + 396 2 341 337 338 + 397 2 341 337 339 + 398 2 341 337 340 + 399 1 342 338 337 + 400 2 345 343 344 + 401 2 346 343 344 + 402 2 346 343 345 + 403 2 347 343 344 + 404 2 347 343 345 + 405 2 347 343 346 + 406 1 348 344 343 + 407 2 351 349 350 + 408 2 352 349 350 + 409 2 352 349 351 + 410 2 353 349 350 + 411 2 353 349 351 + 412 2 353 349 352 + 413 1 354 350 349 + 414 2 357 355 356 + 415 2 358 355 356 + 416 2 358 355 357 + 417 2 359 355 356 + 418 2 359 355 357 + 419 2 359 355 358 + 420 1 360 356 355 + 421 2 363 361 362 + 422 2 364 361 362 + 423 2 364 361 363 + 424 2 365 361 362 + 425 2 365 361 363 + 426 2 365 361 364 + 427 1 366 362 361 + 428 2 369 367 368 + 429 2 370 367 368 + 430 2 370 367 369 + 431 2 371 367 368 + 432 2 371 367 369 + 433 2 371 367 370 + 434 1 372 368 367 + 435 2 375 373 374 + 436 2 376 373 374 + 437 2 376 373 375 + 438 2 377 373 374 + 439 2 377 373 375 + 440 2 377 373 376 + 441 1 378 374 373 + 442 2 381 379 380 + 443 2 382 379 380 + 444 2 382 379 381 + 445 2 383 379 380 + 446 2 383 379 381 + 447 2 383 379 382 + 448 1 384 380 379 + +Dihedrals + + 1 1 6 2 1 3 + 2 1 6 2 1 4 + 3 1 6 2 1 5 + 4 1 9 7 8 12 + 5 1 12 8 7 10 + 6 1 12 8 7 11 + 7 1 18 14 13 15 + 8 1 18 14 13 16 + 9 1 18 14 13 17 + 10 1 24 20 19 21 + 11 1 24 20 19 22 + 12 1 24 20 19 23 + 13 1 30 26 25 27 + 14 1 30 26 25 28 + 15 1 30 26 25 29 + 16 1 36 32 31 33 + 17 1 36 32 31 34 + 18 1 36 32 31 35 + 19 1 42 38 37 39 + 20 1 42 38 37 40 + 21 1 42 38 37 41 + 22 1 48 44 43 45 + 23 1 48 44 43 46 + 24 1 48 44 43 47 + 25 1 54 50 49 51 + 26 1 54 50 49 52 + 27 1 54 50 49 53 + 28 1 60 56 55 57 + 29 1 60 56 55 58 + 30 1 60 56 55 59 + 31 1 66 62 61 63 + 32 1 66 62 61 64 + 33 1 66 62 61 65 + 34 1 72 68 67 69 + 35 1 72 68 67 70 + 36 1 72 68 67 71 + 37 1 78 74 73 75 + 38 1 78 74 73 76 + 39 1 78 74 73 77 + 40 1 84 80 79 81 + 41 1 84 80 79 82 + 42 1 84 80 79 83 + 43 1 90 86 85 87 + 44 1 90 86 85 88 + 45 1 90 86 85 89 + 46 1 96 92 91 93 + 47 1 96 92 91 94 + 48 1 96 92 91 95 + 49 1 99 97 98 102 + 50 1 102 98 97 100 + 51 1 102 98 97 101 + 52 1 108 104 103 105 + 53 1 108 104 103 106 + 54 1 108 104 103 107 + 55 1 114 110 109 111 + 56 1 114 110 109 112 + 57 1 114 110 109 113 + 58 1 120 116 115 117 + 59 1 120 116 115 118 + 60 1 120 116 115 119 + 61 1 126 122 121 123 + 62 1 126 122 121 124 + 63 1 126 122 121 125 + 64 1 132 128 127 129 + 65 1 132 128 127 130 + 66 1 132 128 127 131 + 67 1 138 134 133 135 + 68 1 138 134 133 136 + 69 1 138 134 133 137 + 70 1 144 140 139 141 + 71 1 144 140 139 142 + 72 1 144 140 139 143 + 73 1 150 146 145 147 + 74 1 150 146 145 148 + 75 1 150 146 145 149 + 76 1 156 152 151 153 + 77 1 156 152 151 154 + 78 1 156 152 151 155 + 79 1 162 158 157 159 + 80 1 162 158 157 160 + 81 1 162 158 157 161 + 82 1 168 164 163 165 + 83 1 168 164 163 166 + 84 1 168 164 163 167 + 85 1 174 170 169 171 + 86 1 174 170 169 172 + 87 1 174 170 169 173 + 88 1 180 176 175 177 + 89 1 180 176 175 178 + 90 1 180 176 175 179 + 91 1 186 182 181 183 + 92 1 186 182 181 184 + 93 1 186 182 181 185 + 94 1 192 188 187 189 + 95 1 192 188 187 190 + 96 1 192 188 187 191 + 97 1 198 194 193 195 + 98 1 198 194 193 196 + 99 1 198 194 193 197 + 100 1 204 200 199 201 + 101 1 204 200 199 202 + 102 1 204 200 199 203 + 103 1 210 206 205 207 + 104 1 210 206 205 208 + 105 1 210 206 205 209 + 106 1 216 212 211 213 + 107 1 216 212 211 214 + 108 1 216 212 211 215 + 109 1 222 218 217 219 + 110 1 222 218 217 220 + 111 1 222 218 217 221 + 112 1 228 224 223 225 + 113 1 228 224 223 226 + 114 1 228 224 223 227 + 115 1 234 230 229 231 + 116 1 234 230 229 232 + 117 1 234 230 229 233 + 118 1 240 236 235 237 + 119 1 240 236 235 238 + 120 1 240 236 235 239 + 121 1 246 242 241 243 + 122 1 246 242 241 244 + 123 1 246 242 241 245 + 124 1 252 248 247 249 + 125 1 252 248 247 250 + 126 1 252 248 247 251 + 127 1 258 254 253 255 + 128 1 258 254 253 256 + 129 1 258 254 253 257 + 130 1 264 260 259 261 + 131 1 264 260 259 262 + 132 1 264 260 259 263 + 133 1 270 266 265 267 + 134 1 270 266 265 268 + 135 1 270 266 265 269 + 136 1 276 272 271 273 + 137 1 276 272 271 274 + 138 1 276 272 271 275 + 139 1 282 278 277 279 + 140 1 282 278 277 280 + 141 1 282 278 277 281 + 142 1 288 284 283 285 + 143 1 288 284 283 286 + 144 1 288 284 283 287 + 145 1 294 290 289 291 + 146 1 294 290 289 292 + 147 1 294 290 289 293 + 148 1 300 296 295 297 + 149 1 300 296 295 298 + 150 1 300 296 295 299 + 151 1 306 302 301 303 + 152 1 306 302 301 304 + 153 1 306 302 301 305 + 154 1 312 308 307 309 + 155 1 312 308 307 310 + 156 1 312 308 307 311 + 157 1 318 314 313 315 + 158 1 318 314 313 316 + 159 1 318 314 313 317 + 160 1 324 320 319 321 + 161 1 324 320 319 322 + 162 1 324 320 319 323 + 163 1 330 326 325 327 + 164 1 330 326 325 328 + 165 1 330 326 325 329 + 166 1 336 332 331 333 + 167 1 336 332 331 334 + 168 1 336 332 331 335 + 169 1 342 338 337 339 + 170 1 342 338 337 340 + 171 1 342 338 337 341 + 172 1 348 344 343 345 + 173 1 348 344 343 346 + 174 1 348 344 343 347 + 175 1 354 350 349 351 + 176 1 354 350 349 352 + 177 1 354 350 349 353 + 178 1 360 356 355 357 + 179 1 360 356 355 358 + 180 1 360 356 355 359 + 181 1 366 362 361 363 + 182 1 366 362 361 364 + 183 1 366 362 361 365 + 184 1 372 368 367 369 + 185 1 372 368 367 370 + 186 1 372 368 367 371 + 187 1 378 374 373 375 + 188 1 378 374 373 376 + 189 1 378 374 373 377 + 190 1 384 380 379 381 + 191 1 384 380 379 382 + 192 1 384 380 379 383 + +Impropers + diff --git a/examples/dreiding/in.dreiding b/examples/dreiding/in.dreiding new file mode 100644 index 0000000000..4b811248d4 --- /dev/null +++ b/examples/dreiding/in.dreiding @@ -0,0 +1,39 @@ +units real +atom_style full +boundary p p p +dielectric 1 +special_bonds lj/coul 0.0 0.0 1.0 + +pair_style hybrid/overlay hbond/dreiding/lj 2 6 6.5 90 lj/cut/coul/long 8.50000 11.5 +bond_style harmonic +angle_style harmonic +dihedral_style harmonic +improper_style none +kspace_style pppm 0.001 + +read_data data.dreiding + +pair_coeff 1 1 lj/cut/coul/long 0.015200000256300 2.846421344984478 +pair_coeff 1 2 lj/cut/coul/long 0.001232882795416 2.846421344984478 +pair_coeff 1 3 lj/cut/coul/long 0.038019995160237 3.159705878878677 +pair_coeff 1 4 lj/cut/coul/long 0.038139744011598 2.939787518071103 +pair_coeff 2 2 lj/cut/coul/long 9.99999974737875e-05 2.846421344984478 +pair_coeff 2 3 lj/cut/coul/long 0.003083828758188 3.159705878878677 +pair_coeff 2 4 lj/cut/coul/long 0.003093541672406 2.939787518071103 +pair_coeff 3 3 lj/cut/coul/long 0.095100000500679 3.472990412772877 +pair_coeff 3 4 lj/cut/coul/long 0.095399530150179 3.253072051965302 +pair_coeff 4 4 lj/cut/coul/long 0.095700003206730 3.033153691157727 +pair_coeff 4 4 hbond/dreiding/lj 2 i 0.4000E+01 2.750000000000000 4 +pair_modify mix arithmetic +neighbor 2.0 multi +neigh_modify every 2 delay 4 check yes +variable input index in.ch3oh.box.dreiding +variable sname index ch3oh.box.dreiding + +compute hb all pair hbond/dreiding/lj +variable C_hbond equal c_hb[1] #number hbonds +variable E_hbond equal c_hb[2] #hbond energy +thermo_style custom etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong v_E_hbond v_C_hbond press vol +thermo_modify line multi format float %14.6f + +run 0 diff --git a/examples/dreiding/log.dreiding.11Oct11.linux.1 b/examples/dreiding/log.dreiding.11Oct11.linux.1 new file mode 100644 index 0000000000..74267f98cc --- /dev/null +++ b/examples/dreiding/log.dreiding.11Oct11.linux.1 @@ -0,0 +1,97 @@ +LAMMPS (10 Oct 2011) +units real +atom_style full +boundary p p p +dielectric 1 +special_bonds lj/coul 0.0 0.0 1.0 + +pair_style hybrid/overlay hbond/dreiding/lj 2 6 6.5 90 lj/cut/coul/long 8.50000 11.5 +bond_style harmonic +angle_style harmonic +dihedral_style harmonic +improper_style none +kspace_style pppm 0.001 + +read_data data.dreiding + 4 = max bonds/atom + 6 = max angles/atom + 3 = max dihedrals/atom + 0 = max impropers/atom + orthogonal box = (0 0 0) to (19.9969 19.1282 19.4697) + 1 by 1 by 1 processor grid + 384 atoms + 320 bonds + 448 angles + 192 dihedrals + 0 impropers + 4 = max # of 1-2 neighbors + 3 = max # of 1-3 neighbors + 5 = max # of special neighbors + +pair_coeff 1 1 lj/cut/coul/long 0.015200000256300 2.846421344984478 +pair_coeff 1 2 lj/cut/coul/long 0.001232882795416 2.846421344984478 +pair_coeff 1 3 lj/cut/coul/long 0.038019995160237 3.159705878878677 +pair_coeff 1 4 lj/cut/coul/long 0.038139744011598 2.939787518071103 +pair_coeff 2 2 lj/cut/coul/long 9.99999974737875e-05 2.846421344984478 +pair_coeff 2 3 lj/cut/coul/long 0.003083828758188 3.159705878878677 +pair_coeff 2 4 lj/cut/coul/long 0.003093541672406 2.939787518071103 +pair_coeff 3 3 lj/cut/coul/long 0.095100000500679 3.472990412772877 +pair_coeff 3 4 lj/cut/coul/long 0.095399530150179 3.253072051965302 +pair_coeff 4 4 lj/cut/coul/long 0.095700003206730 3.033153691157727 +pair_coeff 4 4 hbond/dreiding/lj 2 i 0.4000E+01 2.750000000000000 4 +pair_modify mix arithmetic +neighbor 2.0 multi +neigh_modify every 2 delay 4 check yes +variable input index in.ch3oh.box.dreiding +variable sname index ch3oh.box.dreiding + +compute hb all pair hbond/dreiding/lj +variable C_hbond equal c_hb[1] #number hbonds +variable E_hbond equal c_hb[2] #hbond energy +thermo_style custom etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong v_E_hbond v_C_hbond press vol +thermo_modify line multi format float %14.6f + +run 0 +WARNING: No fixes defined, atoms won't move (verlet.cpp:52) +PPPM initialization ... +WARNING: System is not charge neutral, net charge = -0.00064 (pppm.cpp:204) + G vector = 0.142075 + grid = 3 3 3 + stencil order = 5 + RMS precision = 0.000329493 + using double precision FFTs + brick FFT buffer size/proc = 512 27 576 +Memory usage per processor = 7.9487 Mbytes +---------------- Step 0 ----- CPU = 0.0000 (sec) ---------------- +TotEng = 113.723443 KinEng = 0.000000 Temp = 0.000000 +PotEng = 113.723443 E_bond = 0.535673 E_angle = 1.281880 +E_dihed = 1.232497 E_impro = 0.000000 E_vdwl = -125.381324 +E_coul = 597.224193 E_long = -361.169476 E_hbond = -69.322152 +C_hbond = 235.000000 Press = -847.552598 Volume = 7447.236335 +Loop time of 0 on 1 procs for 0 steps with 384 atoms + +Pair time (%) = 0 (0) +Bond time (%) = 0 (0) +Kspce time (%) = 0 (0) +Neigh time (%) = 0 (0) +Comm time (%) = 0 (0) +Outpt time (%) = 0 (0) +Other time (%) = 0 (0) + +FFT time (% of Kspce) = 0 (0) +FFT Gflps 3d (1d only) = 0 0 + +Nlocal: 384 ave 384 max 384 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 4637 ave 4637 max 4637 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 101854 ave 101854 max 101854 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 203708 ave 203708 max 203708 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 203708 +Ave neighs/atom = 530.49 +Ave special neighs/atom = 4 +Neighbor list builds = 0 +Dangerous builds = 0 diff --git a/examples/dreiding/log.dreiding.11Oct11.linux.4 b/examples/dreiding/log.dreiding.11Oct11.linux.4 new file mode 100644 index 0000000000..3f0ac1c40d --- /dev/null +++ b/examples/dreiding/log.dreiding.11Oct11.linux.4 @@ -0,0 +1,121 @@ +LAMMPS (10 Oct 2011) +units real +atom_style full +boundary p p p +dielectric 1 +special_bonds lj/coul 0.0 0.0 1.0 + +pair_style hybrid/overlay hbond/dreiding/lj 2 6 6.5 90 lj/cut/coul/long 8.50000 11.5 +bond_style harmonic +angle_style harmonic +dihedral_style harmonic +improper_style none +kspace_style pppm 0.001 + +read_data data.dreiding + 4 = max bonds/atom + 6 = max angles/atom + 3 = max dihedrals/atom + 0 = max impropers/atom + orthogonal box = (0 0 0) to (19.9969 19.1282 19.4697) + 2 by 1 by 2 processor grid + 384 atoms + 320 bonds + 448 angles + 192 dihedrals + 0 impropers + 4 = max # of 1-2 neighbors + 3 = max # of 1-3 neighbors + 5 = max # of special neighbors + +pair_coeff 1 1 lj/cut/coul/long 0.015200000256300 2.846421344984478 +pair_coeff 1 2 lj/cut/coul/long 0.001232882795416 2.846421344984478 +pair_coeff 1 3 lj/cut/coul/long 0.038019995160237 3.159705878878677 +pair_coeff 1 4 lj/cut/coul/long 0.038139744011598 2.939787518071103 +pair_coeff 2 2 lj/cut/coul/long 9.99999974737875e-05 2.846421344984478 +pair_coeff 2 3 lj/cut/coul/long 0.003083828758188 3.159705878878677 +pair_coeff 2 4 lj/cut/coul/long 0.003093541672406 2.939787518071103 +pair_coeff 3 3 lj/cut/coul/long 0.095100000500679 3.472990412772877 +pair_coeff 3 4 lj/cut/coul/long 0.095399530150179 3.253072051965302 +pair_coeff 4 4 lj/cut/coul/long 0.095700003206730 3.033153691157727 +pair_coeff 4 4 hbond/dreiding/lj 2 i 0.4000E+01 2.750000000000000 4 +pair_modify mix arithmetic +neighbor 2.0 multi +neigh_modify every 2 delay 4 check yes +variable input index in.ch3oh.box.dreiding +variable sname index ch3oh.box.dreiding + +compute hb all pair hbond/dreiding/lj +variable C_hbond equal c_hb[1] #number hbonds +variable E_hbond equal c_hb[2] #hbond energy +thermo_style custom etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong v_E_hbond v_C_hbond press vol +thermo_modify line multi format float %14.6f + +run 0 +WARNING: No fixes defined, atoms won't move (verlet.cpp:52) +PPPM initialization ... +WARNING: System is not charge neutral, net charge = -0.00064 (pppm.cpp:204) + G vector = 0.142075 + grid = 3 3 3 + stencil order = 5 + RMS precision = 0.000329493 + using double precision FFTs +WARNING: Reducing PPPM order b/c stencil extends beyond neighbor processor (pppm.cpp:216) + G vector = 0.143211 + grid = 3 3 3 + stencil order = 4 + RMS precision = 0.000315601 + using double precision FFTs +WARNING: Reducing PPPM order b/c stencil extends beyond neighbor processor (pppm.cpp:216) + G vector = 0.140124 + grid = 3 3 3 + stencil order = 3 + RMS precision = 0.000354326 + using double precision FFTs +WARNING: Reducing PPPM order b/c stencil extends beyond neighbor processor (pppm.cpp:216) + G vector = 0.127333 + grid = 3 3 3 + stencil order = 2 + RMS precision = 0.00055716 + using double precision FFTs +WARNING: Reducing PPPM order b/c stencil extends beyond neighbor processor (pppm.cpp:216) + G vector = 0.113516 + grid = 9 9 9 + stencil order = 1 + RMS precision = 0.000864991 + using double precision FFTs + brick FFT buffer size/proc = 360 243 360 +Memory usage per processor = 6.52575 Mbytes +---------------- Step 0 ----- CPU = 0.0000 (sec) ---------------- +TotEng = 118.484313 KinEng = 0.000000 Temp = 0.000000 +PotEng = 118.484313 E_bond = 0.535673 E_angle = 1.281880 +E_dihed = 1.232497 E_impro = 0.000000 E_vdwl = -125.381324 +E_coul = 529.430008 E_long = -288.614421 E_hbond = -69.322152 +C_hbond = 235.000000 Press = -803.848888 Volume = 7447.236335 +Loop time of 1.43051e-06 on 4 procs for 0 steps with 384 atoms + +Pair time (%) = 0 (0) +Bond time (%) = 0 (0) +Kspce time (%) = 0 (0) +Neigh time (%) = 0 (0) +Comm time (%) = 0 (0) +Outpt time (%) = 0 (0) +Other time (%) = 1.43051e-06 (100) + +FFT time (% of Kspce) = 0 (0) +FFT Gflps 3d (1d only) = 0 0 + +Nlocal: 96 ave 104 max 87 min +Histogram: 1 1 0 0 0 0 0 0 0 2 +Nghost: 3063.25 ave 3108 max 3024 min +Histogram: 1 0 1 0 0 0 1 0 0 1 +Neighs: 25463.5 ave 28799 max 22471 min +Histogram: 1 0 0 1 0 1 0 0 0 1 +FullNghs: 50927 ave 55516 max 46073 min +Histogram: 1 1 0 0 0 0 0 0 0 2 + +Total # of neighbors = 203708 +Ave neighs/atom = 530.49 +Ave special neighs/atom = 4 +Neighbor list builds = 0 +Dangerous builds = 0 diff --git a/examples/hugoniostat/in.nphug b/examples/hugoniostat/in.nphug new file mode 100644 index 0000000000..a41c38d2b1 --- /dev/null +++ b/examples/hugoniostat/in.nphug @@ -0,0 +1,171 @@ +# This script reproduces stress trajectories from Fig. 1 in +# Ravelo, Holian, Germann, and Lomdahl, PRB 70 014103 (2004) +# +# Three thermostatting scenarios are visited: undamped (nodrag), +# damped (drag) and Nose-Hoover chain (nhchains). +# +# The axial and shear stress trajectories are printed to the +# file "stress_vs_t.dat". For the damped case, the original figure +# seems to be a plot of 2*tau, rather than tau. +# +# The script also demonstrates how to +# orient a crystal along <110>, +# and how to use the lj/cubic pair style. + +units lj +boundary p p p + +atom_style atomic + +# Set up FCC lattice with z axis along <110> + +lattice fcc 1.4142136 & + orient x 0 0 1 & + orient y 1 -1 0 & + orient z 1 1 0 + +region mycell block 0.0 5.0 0.0 5.0 0.0 5.0 units lattice +create_box 1 mycell +mass * 1.0 +create_atoms 1 box + +# Using units of Rmin, so sigma = 2^-1/6 = 0.8908987 + +pair_style lj/cubic +pair_coeff * * 1.0 0.8908987 + +# Relax box dimensions + +fix 3 all box/relax aniso 0.0 vmax 1.0e-4 nreset 100 + +thermo 100 +thermo_style custom step temp pe etotal pxx pyy pzz lx ly lz + +min_modify line quadratic +minimize 0.0 1.0e-6 10000 100000 + +# Define initial velocity + +velocity all create 0.01 87287 mom yes rot yes dist gaussian +write_restart restart.equil + +# Start Run #1 + +log log.nodrag + +clear +read_restart restart.equil + +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes +timestep 0.001 +reset_timestep 0 + +# Pzz = 40.0, drag/damping term off + +fix myhug all nphug temp 1.0 1.0 10.0 z 40.0 40.0 70.0 drag 0.0 tchain 1 pchain 0 + +# Specify reference state from paper, times 1000 atoms + +fix_modify myhug e0 -6334.0 p0 0.0 v0 680.73519 + +# Add fix energy to ouput etotal + +fix_modify myhug energy yes + +# Define output + +variable dele equal f_myhug[1] # energy delta [temperature] +variable us equal f_myhug[2] # shock velocity [distance/time] +variable up equal f_myhug[3] # particle velocity [distance/time] +variable pzz equal pzz # axial stress +variable tau equal 0.5*(pzz-0.5*(pxx+pyy)) # shear stress +variable time equal dt*step + +thermo 10 +thermo_style custom step temp ke epair etotal pzz v_tau lz f_myhug v_dele v_us v_up + +fix stress all print 10 "${time} ${pzz} ${tau} " screen no append stress_vs_t.dat title '#time pzz tau (no drag)' + +run 10000 + +# Start Run #2 + +log log.drag + +clear +read_restart restart.equil + +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes +timestep 0.001 +reset_timestep 0 + +# Pzz = 40.0, drag/damping term on + +fix myhug all nphug temp 1.0 1.0 1.0 z 40.0 40.0 70.0 drag 200.0 tchain 1 pchain 0 + +# Specify reference state from paper, times 1000 atoms + +fix_modify myhug e0 -6334.0 p0 0.0 v0 680.73519 + +# Add fix energy to ouput etotal + +fix_modify myhug energy yes + +# Define output + +variable dele equal f_myhug[1] # energy delta [temperature] +variable us equal f_myhug[2] # shock velocity [distance/time] +variable up equal f_myhug[3] # particle velocity [distance/time] +variable pzz equal pzz # axial stress +variable tau equal 0.5*(pzz-0.5*(pxx+pyy)) # shear stress +variable time equal dt*step + +thermo 10 +thermo_style custom step temp ke epair etotal pzz v_tau lz f_myhug v_dele v_us v_up + +fix stress all print 10 "${time} ${pzz} ${tau} " screen no append stress_vs_t.dat title '#time pzz tau (with drag)' + +run 10000 + +# Start Run #3 + +log log.nhchains + +clear +read_restart restart.equil + +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes +timestep 0.001 +reset_timestep 0 + +# Pzz = 40.0, drag/damping term off, Nose-Hoover chains + +fix myhug all nphug temp 1.0 1.0 1.0 z 40.0 40.0 70.0 + +# Specify reference state from paper, times 1000 atoms + +fix_modify myhug e0 -6334.0 p0 0.0 v0 680.73519 + +# Add fix energy to ouput etotal + +fix_modify myhug energy yes + +# Define output + +variable dele equal f_myhug[1] # energy delta [temperature] +variable us equal f_myhug[2] # shock velocity [distance/time] +variable up equal f_myhug[3] # particle velocity [distance/time] +variable pzz equal pzz # axial stress +variable tau equal 0.5*(pzz-0.5*(pxx+pyy)) # shear stress +variable time equal dt*step + +thermo 10 +thermo_style custom step temp ke epair etotal pzz v_tau lz f_myhug v_dele v_us v_up + +fix stress all print 10 "${time} ${pzz} ${tau} " screen no append stress_vs_t.dat title '#time pzz tau (Nose-Hoover chain)' + +run 10000 + diff --git a/examples/prd/in.prd b/examples/prd/in.prd index e6e1ed6bf5..09a6fd850b 100644 --- a/examples/prd/in.prd +++ b/examples/prd/in.prd @@ -3,6 +3,8 @@ # run this on multiple partitions as # mpirun -np 4 lmp_g++ -partition 4x1 -in in.prd +#log none + units metal atom_style atomic @@ -72,7 +74,7 @@ neigh_modify every 1 delay 10 check yes # equilibrate -run 1000 +run 100 # only output atoms near vacancy diff --git a/examples/reax/in.reax.rdx b/examples/reax/in.reax.rdx index 053546577e..7f3b8c0e67 100644 --- a/examples/reax/in.reax.rdx +++ b/examples/reax/in.reax.rdx @@ -32,11 +32,14 @@ neigh_modify every 10 delay 0 check no fix 1 all nve -thermo 10 +thermo 1 thermo_style custom step temp epair etotal press v_eb v_ea v_elp v_emol v_ev v_epen v_ecoa v_ehb v_et v_eco v_ew v_ep v_efi v_eqeq timestep 1.0 -dump 1 all atom 10 dump.reax.rdx +#dump 1 all atom 10 dump.reax.rdx +dump 1 all custom 1 dump.reax.rdx id type q xs ys zs + +reset_timestep 1000 run 100 diff --git a/examples/reax/in.reaxc.tatb b/examples/reax/in.reaxc.tatb index 0c959f30fe..b4cdcaa13e 100644 --- a/examples/reax/in.reaxc.tatb +++ b/examples/reax/in.reaxc.tatb @@ -40,5 +40,7 @@ timestep 0.0625 dump 1 all custom 100 dump.reax.tatb id type q x y z +reset_timestep 1000 + run 25 diff --git a/lib/cuda/Makefile.common b/lib/cuda/Makefile.common index 2ad47f1e72..1952fad37b 100644 --- a/lib/cuda/Makefile.common +++ b/lib/cuda/Makefile.common @@ -14,7 +14,7 @@ SHELL = /bin/sh # System-specific settings -CUDA_INSTALL_PATH = /usr/local/cuda-3.2 +CUDA_INSTALL_PATH = /usr/local/cuda # e.g. in Gentoo # CUDA_INSTALL_PATH = /opt/cuda @@ -35,8 +35,8 @@ endif #shell echo "Compiling with precision = " ${precision} ", arch = " ${arch} ", cufft = " ${cufft} ", dbg = " ${dbg} ", prec_timer = " ${prec_timer} -CUDA_FLAGS := -DUNIX -CUDA_USRLIB_CONDITIONAL := +CUDA_FLAGS := -I${CUDA_INSTALL_PATH}/include -DUNIX +CUDA_USRLIB_CONDITIONAL := -L${CUDA_INSTALL_PATH}/lib -L${CUDA_INSTALL_PATH}/lib64 # debug setting ifeq ($(strip $(dbg)), 1) diff --git a/lib/cuda/Makefile.cudalib b/lib/cuda/Makefile.cudalib index 4d69f80873..f21e95e686 100644 --- a/lib/cuda/Makefile.cudalib +++ b/lib/cuda/Makefile.cudalib @@ -45,6 +45,11 @@ endif include Makefile.common +tmp := $(shell sed -i '2 d' Makefile.lammps) +tmp := $(shell sed -i '2 d' Makefile.lammps) +tmp := $(shell sed -i '1a CUDA_FLAGS := ${CUDA_FLAGS}' Makefile.lammps) +tmp := $(shell sed -i '2a CUDA_USRLIB_CONDITIONAL := ${CUDA_USRLIB_CONDITIONAL}' Makefile.lammps) + # verbose nvcc output during compilation ifeq ($(verbose), 1) VERBOSE := diff --git a/lib/cuda/Makefile.defaults b/lib/cuda/Makefile.defaults index 3f39f7d606..ea0c53a349 100644 --- a/lib/cuda/Makefile.defaults +++ b/lib/cuda/Makefile.defaults @@ -3,7 +3,7 @@ precision ?= 1 #GPU architecture (compute capability): 13, 20, 21 -arch ?= 20 +arch ?= 21 #Using cufft (should not be changed) cufft ?= 1 diff --git a/lib/cuda/Makefile.lammps b/lib/cuda/Makefile.lammps index d4f3bc58ed..711e827a65 100644 --- a/lib/cuda/Makefile.lammps +++ b/lib/cuda/Makefile.lammps @@ -1,8 +1,8 @@ # Settings that the LAMMPS build will import when this package library is used +CUDA_FLAGS := -I/usr/local/cuda/include -DUNIX -DFFT_CUFFT -DCUDA_PRECISION=1 -DCUDA_ARCH=20 +CUDA_USRLIB_CONDITIONAL := -L/usr/local/cuda/lib -L/usr/local/cuda/lib64 -lcufft + + user-cuda_SYSINC = ${CUDA_FLAGS} + user-cuda_SYSLIB = -lcuda -lcudart -lrt + user-cuda_SYSPATH = $(CUDA_USRLIB_CONDITIONAL) -CUDA_INSATLL_PATH = /usr/local/cuda-3.2 -CUDA_USRLIB_CONDITIONAL = - -user-cuda_SYSINC = -I$(CUDA_INSTALL_PATH)/include -user-cuda_SYSLIB = -lcuda -lcudart -lrt -user-cuda_SYSPATH = -L$(CUDA_INSTALL_PATH)/lib64 -L$(CUDA_INSTALL_PATH)/lib $(CUDA_USRLIB_CONDITIONAL) diff --git a/lib/cuda/atom_vec_cuda.cu b/lib/cuda/atom_vec_cuda.cu index 187718dc36..3bee50d6ef 100644 --- a/lib/cuda/atom_vec_cuda.cu +++ b/lib/cuda/atom_vec_cuda.cu @@ -78,12 +78,12 @@ void Cuda_AtomVecCuda_UpdateNmax(cuda_shared_data* sdata) cudaMemcpyToSymbol(MY_CONST(type) , & sdata->atom.type .dev_data, sizeof(int*) ); cudaMemcpyToSymbol(MY_CONST(mask) , & sdata->atom.mask .dev_data, sizeof(int*) ); cudaMemcpyToSymbol(MY_CONST(image) , & sdata->atom.image.dev_data, sizeof(int*) ); - if(data_mask & Q_MASK) cudaMemcpyToSymbol(MY_CONST(q) , & sdata->atom.q .dev_data, sizeof(F_FLOAT*) ); - if(data_mask & MOLECULE_MASK) cudaMemcpyToSymbol(MY_CONST(molecule) , & sdata->atom.molecule.dev_data, sizeof(int*) ); - if(data_mask & RADIUS_MASK) cudaMemcpyToSymbol(MY_CONST(radius) , & sdata->atom.radius.dev_data, sizeof(int*) ); - if(data_mask & DENSITY_MASK) cudaMemcpyToSymbol(MY_CONST(density) , & sdata->atom.density.dev_data, sizeof(int*) ); - if(data_mask & RMASS_MASK) cudaMemcpyToSymbol(MY_CONST(rmass) , & sdata->atom.rmass.dev_data, sizeof(int*) ); - if(data_mask & OMEGA_MASK) cudaMemcpyToSymbol(MY_CONST(omega) , & sdata->atom.omega.dev_data, sizeof(int*) ); + if(data_mask & Q_MASK) cudaMemcpyToSymbolAsync(MY_CONST(q) , & sdata->atom.q .dev_data, sizeof(F_FLOAT*) ); + if(data_mask & MOLECULE_MASK) cudaMemcpyToSymbolAsync(MY_CONST(molecule) , & sdata->atom.molecule.dev_data, sizeof(int*) ); + if(data_mask & RADIUS_MASK) cudaMemcpyToSymbolAsync(MY_CONST(radius) , & sdata->atom.radius.dev_data, sizeof(int*) ); + if(data_mask & DENSITY_MASK) cudaMemcpyToSymbolAsync(MY_CONST(density) , & sdata->atom.density.dev_data, sizeof(int*) ); + if(data_mask & RMASS_MASK) cudaMemcpyToSymbolAsync(MY_CONST(rmass) , & sdata->atom.rmass.dev_data, sizeof(int*) ); + if(data_mask & OMEGA_MASK) cudaMemcpyToSymbolAsync(MY_CONST(omega) , & sdata->atom.omega.dev_data, sizeof(int*) ); //if(data_mask & NSPECIAL_MASK) cudaMemcpyToSymbol(MY_CONST(nspecial) , & sdata->atom.nspecial.dev_data, sizeof(int*) ); cudaMemcpyToSymbol(MY_CONST(flag) , & sdata->flag, sizeof(int*) ); } @@ -92,12 +92,16 @@ template void Cuda_AtomVecCuda_Init(cuda_shared_data* sdata) { MYDBG( printf("# CUDA: Cuda_AtomVecCuda_Init ... start\n"); ) + if(sdata->atom.update_nmax) Cuda_AtomVecCuda_UpdateNmax(sdata); + if(sdata->atom.update_nlocal) + cudaMemcpyToSymbolAsync(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); MYDBG( printf("# CUDA: Cuda_AtomVecCuda_Init ... post Nmax\n"); ) - cudaMemcpyToSymbol(MY_CONST(prd) , sdata->domain.prd, 3*sizeof(X_FLOAT)); - cudaMemcpyToSymbol(MY_CONST(sublo) , & sdata->domain.sublo, 3*sizeof(X_FLOAT) ); - cudaMemcpyToSymbol(MY_CONST(subhi) , & sdata->domain.subhi, 3*sizeof(X_FLOAT) ); - cudaMemcpyToSymbol(MY_CONST(flag) , & sdata->flag, sizeof(int*) ); + cudaMemcpyToSymbolAsync(MY_CONST(prd) , sdata->domain.prd, 3*sizeof(X_FLOAT)); + cudaMemcpyToSymbolAsync(MY_CONST(sublo) , & sdata->domain.sublo, 3*sizeof(X_FLOAT) ); + cudaMemcpyToSymbolAsync(MY_CONST(subhi) , & sdata->domain.subhi, 3*sizeof(X_FLOAT) ); + cudaMemcpyToSymbolAsync(MY_CONST(flag) , & sdata->flag, sizeof(int*) ); + cudaThreadSynchronize(); MYDBG( printf("# CUDA: Cuda_AtomVecCuda_Init ... end\n"); ) } @@ -110,7 +114,7 @@ int Cuda_AtomVecCuda_PackComm(cuda_shared_data* sdata,int n,int iswap,void* buf_ if(sdata->atom.update_nmax) Cuda_AtomVecCuda_UpdateNmax(sdata); if(sdata->atom.update_nlocal) - cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); + cudaMemcpyToSymbolAsync(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); int n_data_items=AtomVecCuda_CountDataItems(data_mask); int size=(n*n_data_items)*sizeof(X_FLOAT); if(sdata->buffer_new or (size>sdata->buffersize)) @@ -265,6 +269,7 @@ template int Cuda_AtomVecCuda_PackExchangeList(cuda_shared_data* sdata,int n,int dim,void* buf_send) { MYDBG( printf("# CUDA: Cuda_AtomVecCuda_PackExchangeList ... start dim %i \n",dim); ) + CUT_CHECK_ERROR("Cuda_AtomVecCuda_PackExchangeList: pre Kernel execution failed"); cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); Cuda_AtomVecCuda_Init(sdata); int size=n*sizeof(double); @@ -280,7 +285,7 @@ int Cuda_AtomVecCuda_PackExchangeList(cuda_shared_data* sdata,int n,int dim,void timespec time1,time2; clock_gettime(CLOCK_REALTIME,&time1); - Cuda_AtomVecCuda_PackExchangeList_Kernel<<>>(n-1,dim); + Cuda_AtomVecCuda_PackExchangeList_Kernel<<>>(n-1,dim); cudaThreadSynchronize(); CUT_CHECK_ERROR("Cuda_AtomVecCuda_PackExchangeList: Kernel execution failed"); @@ -290,7 +295,9 @@ int Cuda_AtomVecCuda_PackExchangeList(cuda_shared_data* sdata,int n,int dim,void cudaMemcpy(buf_send, sdata->buffer, sizeof(double), cudaMemcpyDeviceToHost); int return_value = ((int*) buf_send)[0]; - cudaMemcpy(buf_send, sdata->buffer, (1+return_value)*sizeof(double), cudaMemcpyDeviceToHost); + if(n>1+return_value) + cudaMemcpy(buf_send, sdata->buffer, (1+return_value)*sizeof(double), cudaMemcpyDeviceToHost); + CUT_CHECK_ERROR("Cuda_AtomVecCuda_PackExchangeList: return copy failed"); clock_gettime(CLOCK_REALTIME,&time1); sdata->cuda_timings.comm_exchange_download+= @@ -304,9 +311,11 @@ template int Cuda_AtomVecCuda_PackExchange(cuda_shared_data* sdata,int nsend,void* buf_send,void* copylist) { MYDBG( printf("# CUDA: Cuda_AtomVecCuda_PackExchange ... start \n"); ) + if(sdata->atom.update_nmax) Cuda_AtomVecCuda_UpdateNmax(sdata); + //if(sdata->atom.update_nlocal) cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); - + int n_data_items=AtomVecCuda_CountDataItems(data_mask)+1; int size=(nsend*n_data_items+1)*sizeof(double); if(sdata->buffer_new or (size>sdata->buffersize)) @@ -323,7 +332,7 @@ int Cuda_AtomVecCuda_PackExchange(cuda_shared_data* sdata,int nsend,void* buf_se Cuda_AtomVecCuda_PackExchange_Kernel<<>>(nsend,(int*) copylist); cudaThreadSynchronize(); - CUT_CHECK_ERROR("Cuda_AtomVecCuda_PackExchangeList: Kernel execution failed"); + CUT_CHECK_ERROR("Cuda_AtomVecCuda_PackExchange: Kernel execution failed"); clock_gettime(CLOCK_REALTIME,&time2); sdata->cuda_timings.comm_exchange_kernel_pack+= @@ -335,7 +344,7 @@ int Cuda_AtomVecCuda_PackExchange(cuda_shared_data* sdata,int nsend,void* buf_se sdata->cuda_timings.comm_exchange_download+= time1.tv_sec-time2.tv_sec+1.0*(time1.tv_nsec-time2.tv_nsec)/1000000000; - MYDBG( printf("# CUDA: Cuda_AtomVecCuda_PackExchangeList ... done\n"); ) + MYDBG( printf("# CUDA: Cuda_AtomVecCuda_PackExchange ... done\n"); ) return nsend*n_data_items+1; } @@ -393,6 +402,7 @@ int Cuda_AtomVecCuda_PackBorder(cuda_shared_data* sdata,int nsend,int iswap,void if(sdata->atom.update_nmax) Cuda_AtomVecCuda_UpdateNmax(sdata); + if(sdata->atom.update_nlocal) cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); clock_gettime(CLOCK_REALTIME,&atime2); sdata->cuda_timings.test1+= @@ -451,6 +461,7 @@ int Cuda_AtomVecCuda_PackBorder_Self(cuda_shared_data* sdata,int n,int iswap,int if(sdata->atom.update_nmax) Cuda_AtomVecCuda_UpdateNmax(sdata); + if(sdata->atom.update_nlocal) cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); int n_data_items=AtomVecCuda_CountDataItems(data_mask); @@ -503,7 +514,7 @@ int Cuda_AtomVecCuda_UnpackBorder(cuda_shared_data* sdata,int n,int first,void* if(sdata->atom.update_nmax) Cuda_AtomVecCuda_UpdateNmax(sdata); - //if(sdata->atom.update_nlocal) + if(sdata->atom.update_nlocal) cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); clock_gettime(CLOCK_REALTIME,&atime2); sdata->cuda_timings.test1+= diff --git a/lib/cuda/comm_cuda.cu b/lib/cuda/comm_cuda.cu index 0233f3ee13..dc7c01005d 100644 --- a/lib/cuda/comm_cuda.cu +++ b/lib/cuda/comm_cuda.cu @@ -50,12 +50,12 @@ void Cuda_CommCuda_UpdateBuffer(cuda_shared_data* sdata,int n) void Cuda_CommCuda_UpdateNmax(cuda_shared_data* sdata) { - cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); - cudaMemcpyToSymbol(MY_CONST(nmax) , & sdata->atom.nmax , sizeof(int) ); - cudaMemcpyToSymbol(MY_CONST(x) , & sdata->atom.x .dev_data, sizeof(X_FLOAT*) ); - cudaMemcpyToSymbol(MY_CONST(v) , & sdata->atom.v .dev_data, sizeof(X_FLOAT*) ); - cudaMemcpyToSymbol(MY_CONST(f) , & sdata->atom.f .dev_data, sizeof(F_FLOAT*) ); - cudaMemcpyToSymbol(MY_CONST(type) , & sdata->atom.type .dev_data, sizeof(int*) ); + cudaMemcpyToSymbolAsync(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); + cudaMemcpyToSymbolAsync(MY_CONST(nmax) , & sdata->atom.nmax , sizeof(int) ); + cudaMemcpyToSymbolAsync(MY_CONST(x) , & sdata->atom.x .dev_data, sizeof(X_FLOAT*) ); + cudaMemcpyToSymbolAsync(MY_CONST(v) , & sdata->atom.v .dev_data, sizeof(X_FLOAT*) ); + cudaMemcpyToSymbolAsync(MY_CONST(f) , & sdata->atom.f .dev_data, sizeof(F_FLOAT*) ); + cudaMemcpyToSymbolAsync(MY_CONST(type) , & sdata->atom.type .dev_data, sizeof(int*) ); } @@ -444,7 +444,9 @@ int Cuda_CommCuda_BuildSendlist(cuda_shared_data* sdata,int bordergroup,int inee { MYDBG(printf(" # CUDA: CommCuda_BuildSendlist\n");) timespec time1,time2; + if(sdata->atom.update_nmax) Cuda_CommCuda_UpdateNmax(sdata); + if(sdata->atom.update_nlocal) cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); if(sdata->buffer_new or (80>sdata->buffersize)) Cuda_CommCuda_UpdateBuffer(sdata,10); diff --git a/lib/cuda/compute_temp_cuda.cu b/lib/cuda/compute_temp_cuda.cu index bb3fa5ce2a..4ade926461 100644 --- a/lib/cuda/compute_temp_cuda.cu +++ b/lib/cuda/compute_temp_cuda.cu @@ -83,8 +83,9 @@ void Cuda_ComputeTempCuda_Vector(cuda_shared_data* sdata, int groupbit,ENERGY_FL cudaThreadSynchronize(); CUT_CHECK_ERROR("Cuda_ComputeTempCuda_Vector: compute_vector Kernel execution failed"); - int oldgrid=grid.x; + int oldgrid=grid.x*grid.y; grid.x=6; + grid.y=1; threads.x=512; Cuda_ComputeTempCuda_Reduce_Kernel<<>> (oldgrid,t); cudaThreadSynchronize(); @@ -111,8 +112,9 @@ void Cuda_ComputeTempCuda_Scalar(cuda_shared_data* sdata, int groupbit,ENERGY_FL cudaThreadSynchronize(); CUT_CHECK_ERROR("Cuda_ComputeTempCuda_Scalar: compute_scalar Kernel execution failed"); - int oldgrid=grid.x; + int oldgrid=grid.x*grid.y; grid.x=1; + grid.y=1; threads.x=512; Cuda_ComputeTempCuda_Reduce_Kernel<<>> (oldgrid,t); cudaThreadSynchronize(); diff --git a/lib/cuda/compute_temp_cuda_kernel.cu b/lib/cuda/compute_temp_cuda_kernel.cu index 3e97148f6b..c5de884cd1 100644 --- a/lib/cuda/compute_temp_cuda_kernel.cu +++ b/lib/cuda/compute_temp_cuda_kernel.cu @@ -42,7 +42,7 @@ __global__ void Cuda_ComputeTempCuda_Scalar_Kernel(int groupbit) ENERGY_FLOAT* buffer=(ENERGY_FLOAT*) _buffer; if(threadIdx.x==0) { - buffer[blockIdx.x]=sharedmem[0]; + buffer[(blockIdx.x*gridDim.y+blockIdx.y)]=sharedmem[0]; } } @@ -76,12 +76,12 @@ __global__ void Cuda_ComputeTempCuda_Vector_Kernel(int groupbit) ENERGY_FLOAT* buffer=(ENERGY_FLOAT*) _buffer; if(threadIdx.x==0) { - buffer[blockIdx.x]=sharedmem[0]; - buffer[blockIdx.x+gridDim.x]=sharedmem[blockDim.x]; - buffer[blockIdx.x+2*gridDim.x]=sharedmem[2*blockDim.x]; - buffer[blockIdx.x+3*gridDim.x]=sharedmem[3*blockDim.x]; - buffer[blockIdx.x+4*gridDim.x]=sharedmem[4*blockDim.x]; - buffer[blockIdx.x+5*gridDim.x]=sharedmem[5*blockDim.x]; + buffer[(blockIdx.x*gridDim.y+blockIdx.y)]=sharedmem[0]; + buffer[(blockIdx.x*gridDim.y+blockIdx.y)+gridDim.x*gridDim.y]=sharedmem[blockDim.x]; + buffer[(blockIdx.x*gridDim.y+blockIdx.y)+2*gridDim.x*gridDim.y]=sharedmem[2*blockDim.x]; + buffer[(blockIdx.x*gridDim.y+blockIdx.y)+3*gridDim.x*gridDim.y]=sharedmem[3*blockDim.x]; + buffer[(blockIdx.x*gridDim.y+blockIdx.y)+4*gridDim.x*gridDim.y]=sharedmem[4*blockDim.x]; + buffer[(blockIdx.x*gridDim.y+blockIdx.y)+5*gridDim.x*gridDim.y]=sharedmem[5*blockDim.x]; } } diff --git a/lib/cuda/compute_temp_partial_cuda.cu b/lib/cuda/compute_temp_partial_cuda.cu index 07e19936f1..94a4fa9ea3 100644 --- a/lib/cuda/compute_temp_partial_cuda.cu +++ b/lib/cuda/compute_temp_partial_cuda.cu @@ -83,7 +83,7 @@ void Cuda_ComputeTempPartialCuda_Vector(cuda_shared_data* sdata, int groupbit,EN cudaThreadSynchronize(); CUT_CHECK_ERROR("Cuda_ComputeTempPartialCuda_Vector: compute_vector Kernel execution failed"); - int oldgrid=grid.x; + int oldgrid=grid.x*grid.y; grid.x=6; threads.x=512; Cuda_ComputeTempPartialCuda_Reduce_Kernel<<>> (oldgrid,t); @@ -111,7 +111,7 @@ void Cuda_ComputeTempPartialCuda_Scalar(cuda_shared_data* sdata, int groupbit,EN cudaThreadSynchronize(); CUT_CHECK_ERROR("Cuda_ComputeTempPartialCuda_Scalar: compute_scalar Kernel execution failed"); - int oldgrid=grid.x; + int oldgrid=grid.x*grid.y; grid.x=1; threads.x=512; Cuda_ComputeTempPartialCuda_Reduce_Kernel<<>> (oldgrid,t); diff --git a/lib/cuda/compute_temp_partial_cuda_kernel.cu b/lib/cuda/compute_temp_partial_cuda_kernel.cu index c14c3a06a2..7c7895ca43 100644 --- a/lib/cuda/compute_temp_partial_cuda_kernel.cu +++ b/lib/cuda/compute_temp_partial_cuda_kernel.cu @@ -42,7 +42,7 @@ __global__ void Cuda_ComputeTempPartialCuda_Scalar_Kernel(int groupbit,int xflag ENERGY_FLOAT* buffer=(ENERGY_FLOAT*) _buffer; if(threadIdx.x==0) { - buffer[blockIdx.x]=sharedmem[0]; + buffer[blockIdx.x*gridDim.y+blockIdx.y]=sharedmem[0]; } } @@ -76,12 +76,12 @@ __global__ void Cuda_ComputeTempPartialCuda_Vector_Kernel(int groupbit,int xflag ENERGY_FLOAT* buffer=(ENERGY_FLOAT*) _buffer; if(threadIdx.x==0) { - buffer[blockIdx.x]=sharedmem[0]; - buffer[blockIdx.x+gridDim.x]=sharedmem[blockDim.x]; - buffer[blockIdx.x+2*gridDim.x]=sharedmem[2*blockDim.x]; - buffer[blockIdx.x+3*gridDim.x]=sharedmem[3*blockDim.x]; - buffer[blockIdx.x+4*gridDim.x]=sharedmem[4*blockDim.x]; - buffer[blockIdx.x+5*gridDim.x]=sharedmem[5*blockDim.x]; + buffer[blockIdx.x*gridDim.y+blockIdx.y]=sharedmem[0]; + buffer[blockIdx.x*gridDim.y+blockIdx.y+gridDim.x*gridDim.y]=sharedmem[blockDim.x]; + buffer[blockIdx.x*gridDim.y+blockIdx.y+2*gridDim.x*gridDim.y]=sharedmem[2*blockDim.x]; + buffer[blockIdx.x*gridDim.y+blockIdx.y+3*gridDim.x*gridDim.y]=sharedmem[3*blockDim.x]; + buffer[blockIdx.x*gridDim.y+blockIdx.y+4*gridDim.x*gridDim.y]=sharedmem[4*blockDim.x]; + buffer[blockIdx.x*gridDim.y+blockIdx.y+5*gridDim.x*gridDim.y]=sharedmem[5*blockDim.x]; } } diff --git a/src/USER-CUDA/cuda_common.h b/lib/cuda/cuda_common.h similarity index 100% rename from src/USER-CUDA/cuda_common.h rename to lib/cuda/cuda_common.h diff --git a/lib/cuda/cuda_pair.cu b/lib/cuda/cuda_pair.cu index 531db7e2b3..1d7a439220 100644 --- a/lib/cuda/cuda_pair.cu +++ b/lib/cuda/cuda_pair.cu @@ -36,6 +36,9 @@ enum COUL_FORCES {COUL_NONE,COUL_CHARMM,COUL_CHARMM_IMPLICIT,COUL_CUT,COUL_LONG, #define DATA_V_RADIUS 512 #define DATA_OMEGA_RMASS 1024 +#define SBBITS 30 +#define NEIGHMASK 0x3FFFFFFF + #define MY_PREFIX cuda_pair #define IncludeCommonNeigh #include "cuda_shared.h" @@ -205,29 +208,33 @@ void Cuda_UpdateBuffer(cuda_shared_data* sdata,int size) CUT_CHECK_ERROR("Cuda_Pair_UpdateBuffer_AllStyles failed"); } +void Cuda_Pair_UpdateNeighbor_AllStyles(cuda_shared_data* sdata, cuda_shared_neighlist* sneighlist) +{ + //Neighbor + cudaMemcpyToSymbol(MY_CONST(neighbor_maxlocal) , & sneighlist->firstneigh.dim[0] , sizeof(unsigned) ); + cudaMemcpyToSymbol(MY_CONST(firstneigh) , & sneighlist->firstneigh.dev_data, sizeof(int*) ); + cudaMemcpyToSymbol(MY_CONST(ilist) , & sneighlist->ilist .dev_data, sizeof(int*) ); + cudaMemcpyToSymbol(MY_CONST(inum) , & sneighlist->inum , sizeof(int) ); + cudaMemcpyToSymbol(MY_CONST(numneigh) , & sneighlist->numneigh .dev_data, sizeof(int*) ); + cudaMemcpyToSymbol(MY_CONST(neighbors) , & sneighlist->neighbors .dev_data, sizeof(int*) ); + cudaMemcpyToSymbol(MY_CONST(maxneighbors) , & sneighlist->maxneighbors , sizeof(int) ); + cudaMemcpyToSymbol(MY_CONST(overlap_comm) , & sdata->overlap_comm, sizeof(int) ); + +if(sdata->overlap_comm) +{ + cudaMemcpyToSymbol(MY_CONST(numneigh_border) , & sneighlist->numneigh_border .dev_data, sizeof(int*)); + cudaMemcpyToSymbol(MY_CONST(numneigh_inner) , & sneighlist->numneigh_inner .dev_data, sizeof(int*)); + cudaMemcpyToSymbol(MY_CONST(neighbors_border) , & sneighlist->neighbors_border.dev_data, sizeof(int*)); + cudaMemcpyToSymbol(MY_CONST(neighbors_inner) , & sneighlist->neighbors_inner .dev_data, sizeof(int*)); + cudaMemcpyToSymbol(MY_CONST(ilist_border) , & sneighlist->ilist_border .dev_data, sizeof(int*)); + cudaMemcpyToSymbol(MY_CONST(inum_border) , & sneighlist->inum_border .dev_data, sizeof(int*) ); +} + +} //Update constants after nmax change which are generally needed by all pair styles void Cuda_Pair_UpdateNmax_AllStyles(cuda_shared_data* sdata, cuda_shared_neighlist* sneighlist) { CUT_CHECK_ERROR("Cuda_Pair_UpdateNmax_AllStyles: Begin"); - //Neighbor - cudaMemcpyToSymbol(MY_CONST(neighbor_maxlocal) , & sneighlist->firstneigh.dim[0] , sizeof(unsigned) ); - cudaMemcpyToSymbol(MY_CONST(firstneigh) , & sneighlist->firstneigh.dev_data, sizeof(int*) ); - cudaMemcpyToSymbol(MY_CONST(ilist) , & sneighlist->ilist .dev_data, sizeof(int*) ); - cudaMemcpyToSymbol(MY_CONST(inum) , & sneighlist->inum , sizeof(int) ); - cudaMemcpyToSymbol(MY_CONST(numneigh) , & sneighlist->numneigh .dev_data, sizeof(int*) ); - cudaMemcpyToSymbol(MY_CONST(neighbors) , & sneighlist->neighbors .dev_data, sizeof(int*) ); - cudaMemcpyToSymbol(MY_CONST(maxneighbors) , & sneighlist->maxneighbors , sizeof(int) ); - cudaMemcpyToSymbol(MY_CONST(overlap_comm) , & sdata->overlap_comm, sizeof(int) ); - - if(sdata->overlap_comm) - { - cudaMemcpyToSymbol(MY_CONST(numneigh_border) , & sneighlist->numneigh_border .dev_data, sizeof(int*)); - cudaMemcpyToSymbol(MY_CONST(numneigh_inner) , & sneighlist->numneigh_inner .dev_data, sizeof(int*)); - cudaMemcpyToSymbol(MY_CONST(neighbors_border) , & sneighlist->neighbors_border.dev_data, sizeof(int*)); - cudaMemcpyToSymbol(MY_CONST(neighbors_inner) , & sneighlist->neighbors_inner .dev_data, sizeof(int*)); - cudaMemcpyToSymbol(MY_CONST(ilist_border) , & sneighlist->ilist_border .dev_data, sizeof(int*)); - cudaMemcpyToSymbol(MY_CONST(inum_border) , & sneighlist->inum_border .dev_data, sizeof(int*) ); - } //System cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); @@ -754,6 +761,8 @@ timespec startpairtime, endpairtime; //Function which is called prior to kernel invocation, determins grid, Binds Textures, updates constant memory if necessary void Cuda_Pair_PreKernel_AllStyles(cuda_shared_data* sdata, cuda_shared_neighlist* sneighlist,int eflag, int vflag, dim3& grid, dim3& threads, int& sharedperproc,bool need_q=false,int maxthreads=256) { + if(sdata->atom.update_neigh) + Cuda_Pair_UpdateNeighbor_AllStyles(sdata,sneighlist); if(sdata->atom.update_nmax) Cuda_Pair_UpdateNmax_AllStyles(sdata,sneighlist); if(sdata->atom.update_nlocal) @@ -858,6 +867,9 @@ void Cuda_Pair_PostKernel_AllStyles(cuda_shared_data* sdata, dim3& grid, int& sh #include "cuda_pair_kernel.cu" +#include "pair_manybody_const.h" +#include "pair_tersoff_cuda.cu" +#include "pair_sw_cuda.cu" void Cuda_Pair_UpdateNmax(cuda_shared_data* sdata) { @@ -874,7 +886,7 @@ void Cuda_Pair_UpdateNmax(cuda_shared_data* sdata) cudaMemcpyToSymbol(MY_CONST(v_radius) , & sdata->atom.v_radius .dev_data, sizeof(V_FLOAT4*) ); cudaMemcpyToSymbol(MY_CONST(omega) , & sdata->atom.omega .dev_data, sizeof(V_FLOAT*) ); cudaMemcpyToSymbol(MY_CONST(rmass) , & sdata->atom.rmass .dev_data, sizeof(V_FLOAT*) ); - cudaMemcpyToSymbol(MY_CONST(omega_rmass),& sdata->atom.omega_rmass.dev_data, sizeof(V_FLOAT4*) ); + cudaMemcpyToSymbol(MY_CONST(omega_rmass),& sdata->atom.omega_rmass.dev_data, sizeof(V_FLOAT4*) ); CUT_CHECK_ERROR("Cuda_Pair: updateNmax failed"); } @@ -882,9 +894,13 @@ void Cuda_Pair_UpdateNmax(cuda_shared_data* sdata) void Cuda_Pair_GenerateXType(cuda_shared_data* sdata) { MYDBG(printf(" # CUDA: GenerateXType ... start %i %i %i %p %p %p %p\n",sdata->atom.nlocal,sdata->atom.nall,sdata->atom.nmax,sdata->atom.x.dev_data,sdata->atom.x_type.dev_data,sdata->atom.xhold.dev_data,sdata->atom.type.dev_data); ) + if(sdata->atom.update_nmax) Cuda_Pair_UpdateNmax(sdata); - cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); - cudaMemcpyToSymbol(MY_CONST(nall) , & sdata->atom.nall , sizeof(int) ); + if(sdata->atom.update_nlocal) + { + cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); + cudaMemcpyToSymbol(MY_CONST(nall) , & sdata->atom.nall , sizeof(int) ); + } MYDBG(printf(" # CUDA: GenerateXType ... getgrid\n"); fflush(stdout); ) int3 layout=getgrid(sdata->atom.nall); @@ -901,6 +917,7 @@ void Cuda_Pair_GenerateXType(cuda_shared_data* sdata) void Cuda_Pair_RevertXType(cuda_shared_data* sdata) { MYDBG(printf(" # CUDA: RevertXType ... start\n"); ) + if(sdata->atom.update_nmax) Cuda_Pair_UpdateNmax(sdata); cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); cudaMemcpyToSymbol(MY_CONST(nall) , & sdata->atom.nall , sizeof(int) ); @@ -918,6 +935,7 @@ void Cuda_Pair_RevertXType(cuda_shared_data* sdata) void Cuda_Pair_GenerateVRadius(cuda_shared_data* sdata) { MYDBG(printf(" # CUDA: GenerateVRadius ... start %i %i %i %p %p %p %p\n",sdata->atom.nlocal,sdata->atom.nall,sdata->atom.nmax,sdata->atom.x.dev_data,sdata->atom.x_type.dev_data,sdata->atom.xhold.dev_data,sdata->atom.type.dev_data); ) + if(sdata->atom.update_nmax) Cuda_Pair_UpdateNmax(sdata); cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); cudaMemcpyToSymbol(MY_CONST(nall) , & sdata->atom.nall , sizeof(int) ); @@ -937,6 +955,7 @@ void Cuda_Pair_GenerateVRadius(cuda_shared_data* sdata) void Cuda_Pair_GenerateOmegaRmass(cuda_shared_data* sdata) { MYDBG(printf(" # CUDA: GenerateOmegaRmass ... start %i %i %i %p %p %p %p\n",sdata->atom.nlocal,sdata->atom.nall,sdata->atom.nmax,sdata->atom.x.dev_data,sdata->atom.x_type.dev_data,sdata->atom.xhold.dev_data,sdata->atom.type.dev_data); ) + if(sdata->atom.update_nmax) Cuda_Pair_UpdateNmax(sdata); cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); cudaMemcpyToSymbol(MY_CONST(nall) , & sdata->atom.nall , sizeof(int) ); @@ -955,6 +974,7 @@ void Cuda_Pair_GenerateOmegaRmass(cuda_shared_data* sdata) void Cuda_Pair_BuildXHold(cuda_shared_data* sdata) { + if(sdata->atom.update_nmax) Cuda_Pair_UpdateNmax(sdata); cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); cudaMemcpyToSymbol(MY_CONST(nall) , & sdata->atom.nall , sizeof(int) ); diff --git a/lib/cuda/cuda_pair_kernel.cu b/lib/cuda/cuda_pair_kernel.cu index fe7a38a782..35a0ef1f1a 100644 --- a/lib/cuda/cuda_pair_kernel.cu +++ b/lib/cuda/cuda_pair_kernel.cu @@ -20,7 +20,6 @@ This software is distributed under the GNU General Public License. ------------------------------------------------------------------------- */ - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -29,6 +28,10 @@ #define A4 -1.453152027 #define A5 1.061405429 +inline __device__ int sbmask(int j) { + return j >> SBBITS & 3; +} + template __global__ void Pair_Kernel_TpA(int eflag, int vflag,int eflag_atom,int vflag_atom) { @@ -88,8 +91,8 @@ __global__ void Pair_Kernel_TpA(int eflag, int vflag,int eflag_atom,int vflag_at fytmp = F_F(0.0); fztmp = F_F(0.0); - if(coul_type!=COUL_NONE) - qtmp = fetchQ(i); + if(coul_type!=COUL_NONE) + qtmp = fetchQ(i); jnum = _numneigh[i]; jlist = &_neighbors[i]; @@ -103,10 +106,10 @@ __global__ void Pair_Kernel_TpA(int eflag, int vflag,int eflag_atom,int vflag_at { fpair=F_F(0.0); j = jlist[jj*_nlocal]; - factor_lj = j<_nall ? F_F(1.0) : _special_lj[j/_nall]; - if(coul_type!=COUL_NONE) - factor_coul = j<_nall ? F_F(1.0) : _special_coul[j/_nall]; - j = j<_nall ? j : j % _nall; + factor_lj = _special_lj[sbmask(j)]; + if(coul_type!=COUL_NONE) + factor_coul = _special_coul[sbmask(j)]; + j &= NEIGHMASK; myxtype = fetchXType(j); delx = xtmp - myxtype.x; @@ -230,7 +233,6 @@ __global__ void Pair_Kernel_TpA(int eflag, int vflag,int eflag_atom,int vflag_at fpair += forcecoul*r2inv; } break; - } } in_cutoff=in_cutoff || in_coul_cutoff; @@ -388,12 +390,12 @@ template nex_mol|sneighlist->nex_group|sneighlist->nex_type; if(exclude) NeighborBuildFullBin_Kernel<1><<>> - (sneighlist->binned_id,sneighlist->bin_nmax,sneighlist->bin_dim[0],sneighlist->bin_dim[1],globcutoff,sdata->pair.use_block_per_atom); + (sneighlist->binned_id,sneighlist->bin_nmax,sneighlist->bin_dim[0],sneighlist->bin_dim[1],globcutoff,sdata->pair.use_block_per_atom,sdata->pair.neighall); else NeighborBuildFullBin_Kernel<0><<>> - (sneighlist->binned_id,sneighlist->bin_nmax,sneighlist->bin_dim[0],sneighlist->bin_dim[1],globcutoff,sdata->pair.use_block_per_atom); + (sneighlist->binned_id,sneighlist->bin_nmax,sneighlist->bin_dim[0],sneighlist->bin_dim[1],globcutoff,sdata->pair.use_block_per_atom,sdata->pair.neighall); } //NeighborBuildFullBin_Kernel_Restrict<<>> // (sneighlist->binned_id,sneighlist->bin_nmax,sneighlist->bin_dim[0],sneighlist->bin_dim[1],globcutoff); diff --git a/lib/cuda/neighbor_kernel.cu b/lib/cuda/neighbor_kernel.cu index ad1a6a8fe7..965aa2b1cf 100644 --- a/lib/cuda/neighbor_kernel.cu +++ b/lib/cuda/neighbor_kernel.cu @@ -21,6 +21,8 @@ This software is distributed under the GNU General Public License. ------------------------------------------------------------------------- */ +#define SBBITS 30 + __global__ void Binning_Kernel(int* binned_id,int bin_nmax,int bin_dim_x,int bin_dim_y,int bin_dim_z, CUDA_FLOAT rez_bin_size_x,CUDA_FLOAT rez_bin_size_y,CUDA_FLOAT rez_bin_size_z) { @@ -109,8 +111,9 @@ __device__ inline int find_special(int3 &n, int* list,int & tag,int3 flag) } template -__global__ void NeighborBuildFullBin_Kernel(int* binned_id,int bin_nmax,int bin_dim_x,int bin_dim_y,CUDA_FLOAT globcutoff,int block_style) +__global__ void NeighborBuildFullBin_Kernel(int* binned_id,int bin_nmax,int bin_dim_x,int bin_dim_y,CUDA_FLOAT globcutoff,int block_style, bool neighall) { + int natoms = neighall?_nall:_nlocal; //const bool domol=false; int bin_dim_z=gridDim.y; CUDA_FLOAT* binned_x=(CUDA_FLOAT*) _buffer; @@ -152,7 +155,7 @@ __global__ void NeighborBuildFullBin_Kernel(int* binned_id,int bin_nmax,int bin_ int jnum=0; int itype; - if(i<_nlocal) + if(i _maxneighbors) ((int*)_buffer)[0] = -jnum; - if(i<_nlocal) + if(i0) { if(block_style) - _neighbors[i*_maxneighbors+k]=j+which*_nall; + _neighbors[i*_maxneighbors+k]=j ^ (which << SBBITS); else - _neighbors[i+k*_nlocal]=j+which*_nall; + _neighbors[i+k*_nlocal]=j ^ (which << SBBITS); } else if(which<0) { diff --git a/lib/cuda/pair_eam_cuda.cu b/lib/cuda/pair_eam_cuda.cu index 29ad4af271..d97143a0c7 100644 --- a/lib/cuda/pair_eam_cuda.cu +++ b/lib/cuda/pair_eam_cuda.cu @@ -134,18 +134,22 @@ void Cuda_PairEAMCuda_UpdateBuffer(cuda_shared_data* sdata, cuda_shared_neighlis CUT_CHECK_ERROR("Cuda_PairEAMCuda: updateBuffer failed"); } +void Cuda_PairEAMCuda_UpdateNeighbor(cuda_shared_data* sdata, cuda_shared_neighlist* sneighlist) +{ +cudaMemcpyToSymbol(MY_CONST(neighbor_maxlocal) , & sneighlist->firstneigh.dim[0] , sizeof(unsigned) ); +cudaMemcpyToSymbol(MY_CONST(firstneigh), & sneighlist->firstneigh.dev_data, sizeof(int*) ); +cudaMemcpyToSymbol(MY_CONST(ilist) , & sneighlist->ilist .dev_data, sizeof(int*) ); +cudaMemcpyToSymbol(MY_CONST(inum) , & sneighlist->inum , sizeof(int) ); +cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); +cudaMemcpyToSymbol(MY_CONST(nmax) , & sdata->atom.nmax , sizeof(int) ); +cudaMemcpyToSymbol(MY_CONST(numneigh) , & sneighlist->numneigh .dev_data, sizeof(int*) ); +cudaMemcpyToSymbol(MY_CONST(neighbors) , & sneighlist->neighbors .dev_data, sizeof(int*) ); +cudaMemcpyToSymbol(MY_CONST(maxneighbors) , & sneighlist->maxneighbors , sizeof(int) ); +} + void Cuda_PairEAMCuda_UpdateNmax(cuda_shared_data* sdata, cuda_shared_neighlist* sneighlist) { CUT_CHECK_ERROR("Cuda_PairEAMCuda: before updateNmax failed"); - cudaMemcpyToSymbol(MY_CONST(neighbor_maxlocal) , & sneighlist->firstneigh.dim[0] , sizeof(unsigned) ); - cudaMemcpyToSymbol(MY_CONST(firstneigh), & sneighlist->firstneigh.dev_data, sizeof(int*) ); - cudaMemcpyToSymbol(MY_CONST(ilist) , & sneighlist->ilist .dev_data, sizeof(int*) ); - cudaMemcpyToSymbol(MY_CONST(inum) , & sneighlist->inum , sizeof(int) ); - cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); - cudaMemcpyToSymbol(MY_CONST(nmax) , & sdata->atom.nmax , sizeof(int) ); - cudaMemcpyToSymbol(MY_CONST(numneigh) , & sneighlist->numneigh .dev_data, sizeof(int*) ); - cudaMemcpyToSymbol(MY_CONST(neighbors) , & sneighlist->neighbors .dev_data, sizeof(int*) ); - cudaMemcpyToSymbol(MY_CONST(maxneighbors) , & sneighlist->maxneighbors , sizeof(int) ); cudaMemcpyToSymbol(MY_CONST(x) , & sdata->atom.x .dev_data, sizeof(X_FLOAT*) ); cudaMemcpyToSymbol(MY_CONST(x_type) , & sdata->atom.x_type .dev_data, sizeof(X_FLOAT4*) ); cudaMemcpyToSymbol(MY_CONST(f) , & sdata->atom.f .dev_data, sizeof(F_FLOAT*) ); @@ -228,6 +232,8 @@ void Cuda_PairEAM1Cuda(cuda_shared_data* sdata, cuda_shared_neighlist* sneighlis if(sdata->atom.update_nmax) Cuda_PairEAMCuda_UpdateNmax(sdata,sneighlist); + if(sdata->atom.update_neigh) + Cuda_PairEAMCuda_UpdateNeighbor(sdata,sneighlist); if(sdata->atom.update_nlocal) cudaMemcpyToSymbol(MY_CONST(nlocal) , & sdata->atom.nlocal , sizeof(int) ); if(sdata->buffer_new) diff --git a/lib/cuda/pair_manybody_const.h b/lib/cuda/pair_manybody_const.h new file mode 100644 index 0000000000..69bf32aead --- /dev/null +++ b/lib/cuda/pair_manybody_const.h @@ -0,0 +1,16 @@ +/* + * pair_manybody_const.h + * + * Created on: Oct 11, 2011 + * Author: chmu-tph + */ + +#define MANYBODY_NPAIR 3 + +__device__ __constant__ int elem2param[(MANYBODY_NPAIR+1)*(MANYBODY_NPAIR+1)*(MANYBODY_NPAIR+1)]; +__device__ __constant__ int nelements; +__device__ __constant__ int map[MANYBODY_NPAIR+2]; +__device__ __constant__ int* _glob_numneigh_red; //number of neighbors within force cutoff (as opposed to neighbor cutoff) +__device__ __constant__ int* _glob_neighbors_red; //indices of neighbors within force cutoff +__device__ __constant__ int* _glob_neightype_red; //type of neighbors within force cutoff + diff --git a/lib/cuda/pair_sw_cuda.cu b/lib/cuda/pair_sw_cuda.cu new file mode 100644 index 0000000000..f5b0807fcd --- /dev/null +++ b/lib/cuda/pair_sw_cuda.cu @@ -0,0 +1,140 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + + Original Version: + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. + + ----------------------------------------------------------------------- + + USER-CUDA Package and associated modifications: + https://sourceforge.net/projects/lammpscuda/ + + Christian Trott, christian.trott@tu-ilmenau.de + Lars Winterfeld, lars.winterfeld@tu-ilmenau.de + Theoretical Physics II, University of Technology Ilmenau, Germany + + See the README file in the USER-CUDA directory. + + This software is distributed under the GNU General Public License. +------------------------------------------------------------------------- */ + +#include + +#include "pair_sw_cuda_cu.h" +__device__ __constant__ ParamSW_Float params_sw[MANYBODY_NPAIR*MANYBODY_NPAIR*MANYBODY_NPAIR]; + +#include "pair_sw_cuda_kernel_nc.cu" + +#include + + +void Cuda_PairSWCuda_Init(cuda_shared_data* sdata,ParamSW_Float* params_host,void* map_host, void* elem2param_host,int nelements_h) +{ + unsigned cuda_ntypes = sdata->atom.ntypes + 1; + X_FLOAT box_size[3] = + { + sdata->domain.subhi[0] - sdata->domain.sublo[0], + sdata->domain.subhi[1] - sdata->domain.sublo[1], + sdata->domain.subhi[2] - sdata->domain.sublo[2] + }; + + cudaMemcpyToSymbol(MY_CONST(box_size) , box_size , sizeof(X_FLOAT)*3); + cudaMemcpyToSymbol(MY_CONST(cuda_ntypes) ,&cuda_ntypes , sizeof(unsigned) ); + cudaMemcpyToSymbol(MY_CONST(virial) ,&sdata->pair.virial.dev_data , sizeof(ENERGY_FLOAT*) ); + cudaMemcpyToSymbol(MY_CONST(eng_vdwl) ,&sdata->pair.eng_vdwl.dev_data , sizeof(ENERGY_FLOAT*) ); + cudaMemcpyToSymbol(MY_CONST(periodicity) , sdata->domain.periodicity , sizeof(int)*3 ); + cudaMemcpyToSymbol(MY_CONST(collect_forces_later), &sdata->pair.collect_forces_later , sizeof(int) ); + cudaMemcpyToSymbol("params_sw", params_host , sizeof(ParamSW_Float)*nelements_h*nelements_h*nelements_h ); + cudaMemcpyToSymbol("elem2param",elem2param_host , sizeof(int)*nelements_h*nelements_h*nelements_h ); + cudaMemcpyToSymbol("map",map_host , sizeof(int)*cuda_ntypes ); + cudaMemcpyToSymbol("nelements",&nelements_h, sizeof(int)); +} + +void Cuda_PairSWCuda(cuda_shared_data* sdata, cuda_shared_neighlist* sneighlist, int eflag, int vflag,int eflag_atom,int vflag_atom) +{ + static int glob_ij_size=0; + static F_FLOAT4* glob_r_ij=NULL; + static int* glob_numneigh_red=NULL; + static int* glob_neighbors_red=NULL; + static int* glob_neightype_red=NULL; + + if(glob_ij_size < sdata->atom.nall*sneighlist->maxneighbors*sizeof(F_FLOAT)) + { + glob_ij_size = sdata->atom.nall*sneighlist->maxneighbors*sizeof(F_FLOAT); + cudaFree(glob_r_ij); + cudaFree(glob_numneigh_red); + cudaFree(glob_neighbors_red); + cudaFree(glob_neightype_red); + cudaMalloc(&glob_r_ij,glob_ij_size*4); + cudaMalloc(&glob_numneigh_red,sdata->atom.nall*sizeof(int)); + cudaMalloc(&glob_neighbors_red,sdata->atom.nall*sneighlist->maxneighbors*sizeof(int)); + cudaMalloc(&glob_neightype_red,sdata->atom.nall*sneighlist->maxneighbors*sizeof(int)); + cudaMemcpyToSymbol("_glob_numneigh_red", &glob_numneigh_red , sizeof(int*) ); + cudaMemcpyToSymbol("_glob_neighbors_red", &glob_neighbors_red , sizeof(int*) ); + cudaMemcpyToSymbol("_glob_neightype_red", &glob_neightype_red , sizeof(int*) ); + cudaMemcpyToSymbol("_glob_r_ij", &glob_r_ij , sizeof(F_FLOAT4*) ); + } + dim3 grid,threads; + int sharedperproc; + + Cuda_Pair_PreKernel_AllStyles(sdata, sneighlist, eflag, vflag, grid, threads, sharedperproc,false,64); + cudaStream_t* streams = (cudaStream_t*) CudaWrapper_returnStreams(); + + + + dim3 grid2; + if(sdata->atom.nall<=256*64000){ + grid2.x = (sdata->atom.nall+255)/256; + grid2.y = 1; + } else { + grid2.x = (sdata->atom.nall+256*128-1)/(256*128); + grid2.y = 128; + } + grid2.z = 1; + dim3 threads2; + threads2.x = 256; + threads2.y = 1; + threads2.z = 1; + + timespec time1,time2; + + //pre-calculate all neighbordistances and zeta_ij + clock_gettime(CLOCK_REALTIME,&time1); + Pair_SW_Kernel_TpA_RIJ<<>>(); + cudaThreadSynchronize(); + clock_gettime(CLOCK_REALTIME,&time2); + sdata->cuda_timings.test1+= + time2.tv_sec-time1.tv_sec+1.0*(time2.tv_nsec-time1.tv_nsec)/1000000000; + clock_gettime(CLOCK_REALTIME,&time1); + + //actual force calculation + unsigned int sharedsize=(sharedperproc*sizeof(ENERGY_FLOAT)+4*sizeof(F_FLOAT))*threads.x; //extra 4 floats per thread used to reduce register pressure + if(eflag) + { + if(vflag) + Pair_SW_Kernel_TpA<1,1><<>> + (eflag_atom,vflag_atom); + else + Pair_SW_Kernel_TpA<1,0><<>> + (eflag_atom,vflag_atom); + } + else + { + if(vflag) + Pair_SW_Kernel_TpA<0,1><<>> + (eflag_atom,vflag_atom); + else + Pair_SW_Kernel_TpA<0,0><<>> + (eflag_atom,vflag_atom); + } + cudaThreadSynchronize(); + clock_gettime(CLOCK_REALTIME,&time2); + sdata->cuda_timings.test2+= + time2.tv_sec-time1.tv_sec+1.0*(time2.tv_nsec-time1.tv_nsec)/1000000000; + + Cuda_Pair_PostKernel_AllStyles(sdata, grid, sharedperproc, eflag, vflag); +} + diff --git a/lib/cuda/pair_sw_cuda_cu.h b/lib/cuda/pair_sw_cuda_cu.h new file mode 100644 index 0000000000..24e92689ff --- /dev/null +++ b/lib/cuda/pair_sw_cuda_cu.h @@ -0,0 +1,39 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + + Original Version: + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. + + ----------------------------------------------------------------------- + + USER-CUDA Package and associated modifications: + https://sourceforge.net/projects/lammpscuda/ + + Christian Trott, christian.trott@tu-ilmenau.de + Lars Winterfeld, lars.winterfeld@tu-ilmenau.de + Theoretical Physics II, University of Technology Ilmenau, Germany + + See the README file in the USER-CUDA directory. + + This software is distributed under the GNU General Public License. +------------------------------------------------------------------------- */ + +#include "cuda_shared.h" + + struct ParamSW_Float { + F_FLOAT epsilon,sigma; + F_FLOAT littlea,lambda,gamma,costheta; + F_FLOAT biga,bigb; + F_FLOAT powerp,powerq; + F_FLOAT tol; + F_FLOAT cut,cutsq; + F_FLOAT sigma_gamma,lambda_epsilon,lambda_epsilon2; + F_FLOAT c1,c2,c3,c4,c5,c6; + int ielement,jelement,kelement; + }; + +extern "C" void Cuda_PairSWCuda_Init(cuda_shared_data* sdata,ParamSW_Float* params_host,void* map_host, void* elem2param_host,int nelements_h); +extern "C" void Cuda_PairSWCuda(cuda_shared_data* sdata, cuda_shared_neighlist* sneighlist, int eflag, int vflag,int eflag_atom,int vflag_atom); diff --git a/lib/cuda/pair_sw_cuda_kernel_nc.cu b/lib/cuda/pair_sw_cuda_kernel_nc.cu new file mode 100644 index 0000000000..8072822559 --- /dev/null +++ b/lib/cuda/pair_sw_cuda_kernel_nc.cu @@ -0,0 +1,449 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + + Original Version: + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. + + ----------------------------------------------------------------------- + + USER-CUDA Package and associated modifications: + https://sourceforge.net/projects/lammpscuda/ + + Christian Trott, christian.trott@tu-ilmenau.de + Lars Winterfeld, lars.winterfeld@tu-ilmenau.de + Theoretical Physics II, University of Technology Ilmenau, Germany + + See the README file in the USER-CUDA directory. + + This software is distributed under the GNU General Public License. +------------------------------------------------------------------------- */ +#define Pi F_F(3.1415926535897932384626433832795) +#define PI Pi +#define PI2 F_F(0.5)*Pi +#define PI4 F_F(0.25)*Pi + + + +__device__ void twobody(int iparam, F_FLOAT rsq, F_FLOAT &fforce, + int eflag, ENERGY_FLOAT &eng) +{ + F_FLOAT r,rp,rq,rainv,expsrainv; + + r = sqrt(rsq); + rp = pow(r,-params_sw[iparam].powerp); + rq = pow(r,-params_sw[iparam].powerq); + rainv = 1.0 / (r - params_sw[iparam].cut); + expsrainv = exp(params_sw[iparam].sigma * rainv); + fforce = (params_sw[iparam].c1*rp - params_sw[iparam].c2*rq + + (params_sw[iparam].c3*rp -params_sw[iparam].c4*rq) * rainv*rainv*r) * expsrainv / rsq; + if (eflag) eng += (params_sw[iparam].c5*rp - params_sw[iparam].c6*rq) * expsrainv; +} + +__device__ void threebody(int paramij, int paramik, int paramijk, + F_FLOAT4& delr1, + F_FLOAT4& delr2, + F_FLOAT3& fj, F_FLOAT3& fk, int eflag,ENERGY_FLOAT &eng) +{ + F_FLOAT r1,rinvsq1,rainv1,gsrainv1,gsrainvsq1,expgsrainv1; + F_FLOAT r2,rinvsq2,rainv2,gsrainv2,gsrainvsq2,expgsrainv2; + F_FLOAT rinv12,cs,delcs,delcssq,facexp,facrad,frad1,frad2; + F_FLOAT facang,facang12,csfacang,csfac1,csfac2; + + r1 = sqrt(delr1.w); + rinvsq1 = F_F(1.0)/delr1.w; + rainv1 = F_F(1.0)/(r1 - params_sw[paramij].cut); + gsrainv1 = params_sw[paramij].sigma_gamma * rainv1; + gsrainvsq1 = gsrainv1*rainv1/r1; + expgsrainv1 = exp(gsrainv1); + + r2 = sqrt(delr2.w); + rinvsq2 = F_F(1.0)/delr2.w; + rainv2 = F_F(1.0)/(r2 - params_sw[paramik].cut); + gsrainv2 = params_sw[paramik].sigma_gamma * rainv2; + gsrainvsq2 = gsrainv2*rainv2/r2; + expgsrainv2 = exp(gsrainv2); + + rinv12 = F_F(1.0)/(r1*r2); + cs = (delr1.x*delr2.x + delr1.y*delr2.y + delr1.z*delr2.z) * rinv12; + delcs = cs - params_sw[paramijk].costheta; + delcssq = delcs*delcs; + + facexp = expgsrainv1*expgsrainv2; + + // facrad = sqrt(paramij->lambda_epsilon*paramik->lambda_epsilon) * + // facexp*delcssq; + + facrad = params_sw[paramijk].lambda_epsilon * facexp*delcssq; + frad1 = facrad*gsrainvsq1; + frad2 = facrad*gsrainvsq2; + facang = params_sw[paramijk].lambda_epsilon2 * facexp*delcs; + facang12 = rinv12*facang; + csfacang = cs*facang; + csfac1 = rinvsq1*csfacang; + + fj.x = delr1.x*(frad1+csfac1)-delr2.x*facang12; + fj.y = delr1.y*(frad1+csfac1)-delr2.y*facang12; + fj.z = delr1.z*(frad1+csfac1)-delr2.z*facang12; + + csfac2 = rinvsq2*csfacang; + + fk.x = delr2.x*(frad2+csfac2)-delr1.x*facang12; + fk.y = delr2.y*(frad2+csfac2)-delr1.y*facang12; + fk.z = delr2.z*(frad2+csfac2)-delr1.z*facang12; + + if (eflag) eng+= F_F(2.0)*facrad; +} + +__device__ void threebody_fj(int paramij, int paramik, int paramijk, + F_FLOAT4& delr1, + F_FLOAT4& delr2, + F_FLOAT3& fj) +{ + F_FLOAT r1,rinvsq1,rainv1,gsrainv1,gsrainvsq1,expgsrainv1; + F_FLOAT r2,rainv2,gsrainv2,expgsrainv2; + F_FLOAT rinv12,cs,delcs,delcssq,facexp,facrad,frad1; + F_FLOAT facang,facang12,csfacang,csfac1; + + r1 = sqrt(delr1.w); + rinvsq1 = F_F(1.0)/delr1.w; + rainv1 = F_F(1.0)/(r1 - params_sw[paramij].cut); + gsrainv1 = params_sw[paramij].sigma_gamma * rainv1; + gsrainvsq1 = gsrainv1*rainv1/r1; + expgsrainv1 = exp(gsrainv1); + + r2 = sqrt(delr2.w); + rainv2 = F_F(1.0)/(r2 - params_sw[paramik].cut); + gsrainv2 = params_sw[paramik].sigma_gamma * rainv2; + expgsrainv2 = exp(gsrainv2); + + rinv12 = F_F(1.0)/(r1*r2); + cs = (delr1.x*delr2.x + delr1.y*delr2.y + delr1.z*delr2.z) * rinv12; + delcs = cs - params_sw[paramijk].costheta; + delcssq = delcs*delcs; + + facexp = expgsrainv1*expgsrainv2; + + // facrad = sqrt(paramij->lambda_epsilon*paramik->lambda_epsilon) * + // facexp*delcssq; + + facrad = params_sw[paramijk].lambda_epsilon * facexp*delcssq; + frad1 = facrad*gsrainvsq1; + facang = params_sw[paramijk].lambda_epsilon2 * facexp*delcs; + facang12 = rinv12*facang; + csfacang = cs*facang; + csfac1 = rinvsq1*csfacang; + + fj.x = delr1.x*(frad1+csfac1)-delr2.x*facang12; + fj.y = delr1.y*(frad1+csfac1)-delr2.y*facang12; + fj.z = delr1.z*(frad1+csfac1)-delr2.z*facang12; +} + + +__global__ void Pair_SW_Kernel_TpA_RIJ()//F_FLOAT4* _glob_r_ij,int* _glob_numneigh_red,int* _glob_neighbors_red,int* _glob_neightype_red) +{ + int ii = (blockIdx.x*gridDim.y+blockIdx.y)*blockDim.x+threadIdx.x; + if( ii >= _nall ) return; + + X_FLOAT4 myxtype; + F_FLOAT4 delij; + F_FLOAT xtmp,ytmp,ztmp; + int itype,jnum,i,j; + int* jlist; + int neigh_red = 0; + i = ii;//_ilist[ii]; + myxtype = fetchXType(i); + + xtmp=myxtype.x; + ytmp=myxtype.y; + ztmp=myxtype.z; + itype=map[(static_cast (myxtype.w))]; + + jnum = _numneigh[i]; + jlist = &_neighbors[i]; + + __syncthreads(); + for (int jj = 0; jj < jnum; jj++) + { + if(jj (myxtype.w))]; + int iparam_ij = elem2param[(itype*nelements+jtype)*nelements+jtype]; + delij.w = vec3_dot(delij,delij); + if (delij.w < params_sw[iparam_ij].cutsq) + { + _glob_neighbors_red[i+neigh_red*_nall]=j; + _glob_neightype_red[i+neigh_red*_nall]=jtype; + _glob_r_ij[i+neigh_red*_nall]=delij; + neigh_red++; + } + } + } + _glob_numneigh_red[i]=neigh_red; +} + + + template + __global__ void Pair_SW_Kernel_TpA(int eflag_atom,int vflag_atom)//,F_FLOAT* _glob_zeta_ij,F_FLOAT4* _glob_r_ij,int* _glob_numneigh_red,int* _glob_neighbors_red,int* _glob_neightype_red) +{ + ENERGY_FLOAT evdwl = ENERGY_F(0.0); + + ENERGY_FLOAT* sharedE = &sharedmem[threadIdx.x]; + ENERGY_FLOAT* sharedV = &sharedmem[threadIdx.x]; + + F_FLOAT* shared_F_F = (F_FLOAT*) sharedmem; + if((eflag||eflag_atom)&&(vflagm||vflag_atom)) shared_F_F = (F_FLOAT*) &sharedmem[7*blockDim.x]; + else + if(eflag) shared_F_F = (F_FLOAT*) &sharedmem[blockDim.x]; + else + if(vflagm) shared_F_F = (F_FLOAT*) &sharedmem[6*blockDim.x]; + shared_F_F+=threadIdx.x; + + if(eflag_atom||eflag) + { + sharedE[0] = ENERGY_F(0.0); + sharedV += blockDim.x; + } + + if(vflagm||vflag_atom) + { + sharedV[0*blockDim.x] = ENERGY_F(0.0); + sharedV[1*blockDim.x] = ENERGY_F(0.0); + sharedV[2*blockDim.x] = ENERGY_F(0.0); + sharedV[3*blockDim.x] = ENERGY_F(0.0); + sharedV[4*blockDim.x] = ENERGY_F(0.0); + sharedV[5*blockDim.x] = ENERGY_F(0.0); + } + + int jnum_red=0; +#define fxtmp shared_F_F[0] +#define fytmp shared_F_F[blockDim.x] +#define fztmp shared_F_F[2*blockDim.x] +//#define jnum_red (static_cast (shared_F_F[3*blockDim.x])) + + int ii = (blockIdx.x*gridDim.y+blockIdx.y)*blockDim.x+threadIdx.x; + X_FLOAT4 myxtype_i,myxtype_j,myxtype_k; + F_FLOAT4 delij,delik,deljk; + F_FLOAT fpair; + + int itype,i,j; + int* jlist_red; + + if(ii < _inum) + { + i = _ilist[ii]; + + if(vflagm) + myxtype_i=fetchXType(i); + //itype=map[(static_cast (myxtype_i.w))]; + itype=map[_type[i]]; + + + fxtmp = F_F(0.0); + fytmp = F_F(0.0); + fztmp = F_F(0.0); + + + //shared_F_F[3*blockDim.x] = _glob_numneigh_red[i]; + jnum_red = _glob_numneigh_red[i]; + jlist_red = &_glob_neighbors_red[i]; + } + __syncthreads(); +#pragma unroll 1 + for (int jj = 0; jj < jnum_red; jj++) + { + if(i < _nlocal) + { + fpair=F_F(0.0); + j = jlist_red[jj*_nall]; + j &= NEIGHMASK; + + if(vflagm) + myxtype_j = fetchXType(j); + + int jtype = _glob_neightype_red[i+jj*_nall]; + delij = _glob_r_ij[i+jj*_nall]; + + volatile int iparam_ij = elem2param[(itype*nelements+jtype)*nelements+jtype]; + volatile int iparam_ji = elem2param[(jtype*nelements+itype)*nelements+itype]; + + if (delij.w(); +#undef fxtmp +#undef fytmp +#undef fztmp +//#undef jnum_red +} diff --git a/lib/cuda/pair_tersoff_cuda.cu b/lib/cuda/pair_tersoff_cuda.cu new file mode 100644 index 0000000000..abbf39ecf0 --- /dev/null +++ b/lib/cuda/pair_tersoff_cuda.cu @@ -0,0 +1,155 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + + Original Version: + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. + + ----------------------------------------------------------------------- + + USER-CUDA Package and associated modifications: + https://sourceforge.net/projects/lammpscuda/ + + Christian Trott, christian.trott@tu-ilmenau.de + Lars Winterfeld, lars.winterfeld@tu-ilmenau.de + Theoretical Physics II, University of Technology Ilmenau, Germany + + See the README file in the USER-CUDA directory. + + This software is distributed under the GNU General Public License. +------------------------------------------------------------------------- */ + +#include + + +#include "pair_tersoff_cuda_cu.h" +__device__ __constant__ Param_Float params[MANYBODY_NPAIR*MANYBODY_NPAIR*MANYBODY_NPAIR]; +__device__ __constant__ F_FLOAT* _glob_zeta_ij; //zeta_ij +__device__ __constant__ F_FLOAT4* _glob_r_ij; //r_ij (x,y,z,r^2) for pairs within force cutoff +__device__ __constant__ bool _zbl; //is tersoff zbl? + + +#include "pair_tersoff_cuda_kernel_nc.cu" + +#include + + +void Cuda_PairTersoffCuda_Init(cuda_shared_data* sdata,Param_Float* params_host,void* map_host, void* elem2param_host,int nelements_h,bool zbl) +{ + unsigned cuda_ntypes = sdata->atom.ntypes + 1; + X_FLOAT box_size[3] = + { + sdata->domain.subhi[0] - sdata->domain.sublo[0], + sdata->domain.subhi[1] - sdata->domain.sublo[1], + sdata->domain.subhi[2] - sdata->domain.sublo[2] + }; + + cudaMemcpyToSymbol(MY_CONST(box_size) , box_size , sizeof(X_FLOAT)*3); + cudaMemcpyToSymbol(MY_CONST(cuda_ntypes) ,&cuda_ntypes , sizeof(unsigned) ); + cudaMemcpyToSymbol(MY_CONST(virial) ,&sdata->pair.virial.dev_data , sizeof(ENERGY_FLOAT*) ); + cudaMemcpyToSymbol(MY_CONST(eng_vdwl) ,&sdata->pair.eng_vdwl.dev_data , sizeof(ENERGY_FLOAT*) ); + cudaMemcpyToSymbol(MY_CONST(periodicity) , sdata->domain.periodicity , sizeof(int)*3 ); + cudaMemcpyToSymbol(MY_CONST(collect_forces_later), &sdata->pair.collect_forces_later , sizeof(int) ); + cudaMemcpyToSymbol("params", params_host , sizeof(Param_Float)*nelements_h*nelements_h*nelements_h ); + cudaMemcpyToSymbol("elem2param",elem2param_host , sizeof(int)*nelements_h*nelements_h*nelements_h ); + cudaMemcpyToSymbol("map",map_host , sizeof(int)*cuda_ntypes ); + cudaMemcpyToSymbol("nelements",&nelements_h, sizeof(int)); + cudaMemcpyToSymbol("_zbl",&zbl,sizeof(bool)); + +} + +void Cuda_PairTersoffCuda(cuda_shared_data* sdata, cuda_shared_neighlist* sneighlist, int eflag, int vflag,int eflag_atom,int vflag_atom) +{ + static F_FLOAT* glob_zeta_ij=NULL; + static int glob_zeta_ij_size=0; + static F_FLOAT4* glob_r_ij=NULL; + static int* glob_numneigh_red=NULL; + static int* glob_neighbors_red=NULL; + static int* glob_neightype_red=NULL; + + if(glob_zeta_ij_size < sdata->atom.nall*sneighlist->maxneighbors*sizeof(F_FLOAT)) + { + glob_zeta_ij_size = sdata->atom.nall*sneighlist->maxneighbors*sizeof(F_FLOAT); + cudaFree(glob_zeta_ij); + cudaFree(glob_r_ij); + cudaFree(glob_numneigh_red); + cudaFree(glob_neighbors_red); + cudaFree(glob_neightype_red); + cudaMalloc(&glob_zeta_ij,glob_zeta_ij_size); + cudaMalloc(&glob_r_ij,glob_zeta_ij_size*4); + cudaMalloc(&glob_numneigh_red,sdata->atom.nall*sizeof(int)); + cudaMalloc(&glob_neighbors_red,sdata->atom.nall*sneighlist->maxneighbors*sizeof(int)); + cudaMalloc(&glob_neightype_red,sdata->atom.nall*sneighlist->maxneighbors*sizeof(int)); + cudaMemcpyToSymbol("_glob_numneigh_red", &glob_numneigh_red , sizeof(int*) ); + cudaMemcpyToSymbol("_glob_neighbors_red", &glob_neighbors_red , sizeof(int*) ); + cudaMemcpyToSymbol("_glob_neightype_red", &glob_neightype_red , sizeof(int*) ); + cudaMemcpyToSymbol("_glob_r_ij", &glob_r_ij , sizeof(F_FLOAT4*) ); + cudaMemcpyToSymbol("_glob_zeta_ij", &glob_zeta_ij , sizeof(F_FLOAT*) ); + } + dim3 grid,threads; + int sharedperproc; + + Cuda_Pair_PreKernel_AllStyles(sdata, sneighlist, eflag, vflag, grid, threads, sharedperproc,false,64); + cudaStream_t* streams = (cudaStream_t*) CudaWrapper_returnStreams(); + + + + dim3 grid2; + if(sdata->atom.nall<=256*64000){ + grid2.x = (sdata->atom.nall+255)/256; + grid2.y = 1; + } else { + grid2.x = (sdata->atom.nall+256*128-1)/(256*128); + grid2.y = 128; + } + grid2.z = 1; + dim3 threads2; + threads2.x = 256; + threads2.y = 1; + threads2.z = 1; + + timespec time1,time2; + + //pre-calculate all neighbordistances and zeta_ij + clock_gettime(CLOCK_REALTIME,&time1); + Pair_Tersoff_Kernel_TpA_RIJ<<>> + (); + cudaThreadSynchronize(); + Pair_Tersoff_Kernel_TpA_ZetaIJ<<>> + (); + cudaThreadSynchronize(); + clock_gettime(CLOCK_REALTIME,&time2); + sdata->cuda_timings.test1+= + time2.tv_sec-time1.tv_sec+1.0*(time2.tv_nsec-time1.tv_nsec)/1000000000; + clock_gettime(CLOCK_REALTIME,&time1); + + //actual force calculation + unsigned int sharedsize=(sharedperproc*sizeof(ENERGY_FLOAT)+4*sizeof(F_FLOAT))*threads.x; //extra 4 floats per thread used to reduce register pressure + if(eflag) + { + if(vflag) + Pair_Tersoff_Kernel_TpA<1,1><<>> + (eflag_atom,vflag_atom); + else + Pair_Tersoff_Kernel_TpA<1,0><<>> + (eflag_atom,vflag_atom); + } + else + { + if(vflag) + Pair_Tersoff_Kernel_TpA<0,1><<>> + (eflag_atom,vflag_atom); + else + Pair_Tersoff_Kernel_TpA<0,0><<>> + (eflag_atom,vflag_atom); + } + cudaThreadSynchronize(); + clock_gettime(CLOCK_REALTIME,&time2); + sdata->cuda_timings.test2+= + time2.tv_sec-time1.tv_sec+1.0*(time2.tv_nsec-time1.tv_nsec)/1000000000; + + Cuda_Pair_PostKernel_AllStyles(sdata, grid, sharedperproc, eflag, vflag); +} + diff --git a/lib/cuda/pair_tersoff_cuda_cu.h b/lib/cuda/pair_tersoff_cuda_cu.h new file mode 100644 index 0000000000..5276cd1c35 --- /dev/null +++ b/lib/cuda/pair_tersoff_cuda_cu.h @@ -0,0 +1,42 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + + Original Version: + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. + + ----------------------------------------------------------------------- + + USER-CUDA Package and associated modifications: + https://sourceforge.net/projects/lammpscuda/ + + Christian Trott, christian.trott@tu-ilmenau.de + Lars Winterfeld, lars.winterfeld@tu-ilmenau.de + Theoretical Physics II, University of Technology Ilmenau, Germany + + See the README file in the USER-CUDA directory. + + This software is distributed under the GNU General Public License. +------------------------------------------------------------------------- */ + +#include "cuda_shared.h" + + struct Param_Float { + F_FLOAT lam1,lam2,lam3; + F_FLOAT c,d,h; + F_FLOAT gamma,powerm; + F_FLOAT powern,beta; + F_FLOAT biga,bigb,bigd,bigr; + F_FLOAT cut,cutsq; + F_FLOAT c1,c2,c3,c4; + int ielement,jelement,kelement; + int powermint; + //F_FLOAT Z_i,Z_j; + F_FLOAT ZBLcut,ZBLexpscale; + F_FLOAT a_ij,premult; + }; + +extern "C" void Cuda_PairTersoffCuda_Init(cuda_shared_data* sdata,Param_Float* params_host,void* map_host, void* elem2param_host,int nelements_h,bool zbl); +extern "C" void Cuda_PairTersoffCuda(cuda_shared_data* sdata, cuda_shared_neighlist* sneighlist, int eflag, int vflag,int eflag_atom,int vflag_atom); diff --git a/lib/cuda/pair_tersoff_cuda_kernel_nc.cu b/lib/cuda/pair_tersoff_cuda_kernel_nc.cu new file mode 100644 index 0000000000..f94f35a587 --- /dev/null +++ b/lib/cuda/pair_tersoff_cuda_kernel_nc.cu @@ -0,0 +1,1054 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + + Original Version: + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. + + ----------------------------------------------------------------------- + + USER-CUDA Package and associated modifications: + https://sourceforge.net/projects/lammpscuda/ + + Christian Trott, christian.trott@tu-ilmenau.de + Lars Winterfeld, lars.winterfeld@tu-ilmenau.de + Theoretical Physics II, University of Technology Ilmenau, Germany + + See the README file in the USER-CUDA directory. + + This software is distributed under the GNU General Public License. +------------------------------------------------------------------------- */ +#define Pi F_F(3.1415926535897932384626433832795) +#define PI Pi +#define PI2 F_F(0.5)*Pi +#define PI4 F_F(0.25)*Pi +template +static inline __device__ void PairVirialCompute_A_Kernel_Template() +{ + __syncthreads(); + ENERGY_FLOAT* shared=sharedmem; + + if(eflag) + { + reduceBlock(shared); + shared+=blockDim.x; + } + if(vflag) + { + reduceBlock(shared + 0 * blockDim.x); + reduceBlock(shared + 1 * blockDim.x); + reduceBlock(shared + 2 * blockDim.x); + reduceBlock(shared + 3 * blockDim.x); + reduceBlock(shared + 4 * blockDim.x); + reduceBlock(shared + 5 * blockDim.x); + } + if(threadIdx.x == 0) + { + shared=sharedmem; + ENERGY_FLOAT* buffer = (ENERGY_FLOAT*) _buffer; + if(eflag) + { + buffer[blockIdx.x * gridDim.y + blockIdx.y] = ENERGY_F(0.5)*shared[0]; + shared+=blockDim.x; buffer+=gridDim.x * gridDim.y; + } + if(vflag) + { + buffer[blockIdx.x * gridDim.y + blockIdx.y + 0 * gridDim.x * gridDim.y] = ENERGY_F(0.5)*shared[0 * blockDim.x]; + buffer[blockIdx.x * gridDim.y + blockIdx.y + 1 * gridDim.x * gridDim.y] = ENERGY_F(0.5)*shared[1 * blockDim.x]; + buffer[blockIdx.x * gridDim.y + blockIdx.y + 2 * gridDim.x * gridDim.y] = ENERGY_F(0.5)*shared[2 * blockDim.x]; + buffer[blockIdx.x * gridDim.y + blockIdx.y + 3 * gridDim.x * gridDim.y] = ENERGY_F(0.5)*shared[3 * blockDim.x]; + buffer[blockIdx.x * gridDim.y + blockIdx.y + 4 * gridDim.x * gridDim.y] = ENERGY_F(0.5)*shared[4 * blockDim.x]; + buffer[blockIdx.x * gridDim.y + blockIdx.y + 5 * gridDim.x * gridDim.y] = ENERGY_F(0.5)*shared[5 * blockDim.x]; + } + } + __syncthreads(); +} + +__global__ void virial_fdotr_compute_kernel(int eflag) +{ + int i = (blockIdx.x*gridDim.y+blockIdx.y)*blockDim.x+threadIdx.x; + ENERGY_FLOAT* sharedE = (ENERGY_FLOAT*) &sharedmem[0]; + ENERGY_FLOAT* sharedVirial = (ENERGY_FLOAT*) &sharedE[blockDim.x]; + sharedE+=threadIdx.x; + sharedVirial+=threadIdx.x; + if(i<_nlocal) + { + + F_FLOAT x = _x[i]; + F_FLOAT y = _x[i+_nmax]; + F_FLOAT z = _x[i+2*_nmax]; + F_FLOAT fx = _f[i]; + F_FLOAT fy = _f[i+_nmax]; + F_FLOAT fz = _f[i+2*_nmax]; + //if(fz*z*fz*z>1e-5) printf("V %i %i %e %e %e %e %e %e\n",i,_tag[i],x,y,z,fx,fy,fz); + sharedVirial[0] = fx*x; + sharedVirial[1*blockDim.x] = fy*y; + sharedVirial[2*blockDim.x] = fz*z; + sharedVirial[3*blockDim.x] = fy*x; + sharedVirial[4*blockDim.x] = fz*x; + sharedVirial[5*blockDim.x] = fz*y; + } else { + sharedVirial[0] = 0; + sharedVirial[1*blockDim.x] = 0; + sharedVirial[2*blockDim.x] = 0; + sharedVirial[3*blockDim.x] = 0; + sharedVirial[4*blockDim.x] = 0; + sharedVirial[5*blockDim.x] = 0; + } + sharedVirial = (ENERGY_FLOAT*) &sharedmem[0]; + sharedVirial += blockDim.x; + reduceBlockP2(sharedVirial); + reduceBlockP2(&sharedVirial[1*blockDim.x]); + reduceBlockP2(&sharedVirial[2*blockDim.x]); + reduceBlockP2(&sharedVirial[3*blockDim.x]); + reduceBlockP2(&sharedVirial[4*blockDim.x]); + reduceBlockP2(&sharedVirial[5*blockDim.x]); + if(threadIdx.x<6) + { + ENERGY_FLOAT* buffer = (ENERGY_FLOAT*) _buffer; + if(eflag) buffer = &buffer[gridDim.x*gridDim.y]; + buffer[blockIdx.x * gridDim.y + blockIdx.y + threadIdx.x * gridDim.x * gridDim.y]= sharedVirial[threadIdx.x*blockDim.x]; + } +} + +/*#define vec3_scale(K,X,Y) Y.x = K*X.x; Y.y = K*X.y; Y.z = K*X.z; +#define vec3_scaleadd(K,X,Y,Z) Z.x = K*X.x+Y.x; Z.y = K*X.y+Y.y; Z.z = K*X.z+Y.z; +#define vec3_add(X,Y,Z) Z.x = X.x+Y.x; Z.y = X.y+Y.y; Z.z = X.z+Y.z; +#define vec3_dot(X,Y) (X.x*Y.x + X.y*Y.y + X.z*Y.z)*/ + +__device__ inline void vec3_scale(F_FLOAT k, F_FLOAT3& x, F_FLOAT3& y) { + y.x = k*x.x; y.y = k*x.y; y.z = k*x.z; +} + +__device__ inline void vec3_scale(F_FLOAT k, F_FLOAT4& x, F_FLOAT3& y) { + y.x = k*x.x; y.y = k*x.y; y.z = k*x.z; +} + +__device__ inline void vec3_scale(F_FLOAT k, F_FLOAT4& x, F_FLOAT4& y) { + y.x = k*x.x; y.y = k*x.y; y.z = k*x.z; +} + +__device__ inline void vec3_scaleadd(F_FLOAT k, F_FLOAT3& x, F_FLOAT3& y, F_FLOAT3& z) { + z.x = k*x.x+y.x; z.y = k*x.y+y.y; z.z = k*x.z+y.z; +} + +__device__ inline void vec3_add(F_FLOAT3& x, F_FLOAT3& y, F_FLOAT3& z) { + z.x = x.x+y.x; z.y = x.y+y.y; z.z = x.z+y.z; +} + +__device__ inline F_FLOAT vec3_dot(F_FLOAT3 x, F_FLOAT3 y) { + return x.x*y.x + x.y*y.y + x.z*y.z; +} + +__device__ inline F_FLOAT vec3_dot(F_FLOAT4 x, F_FLOAT4 y) { + return x.x*y.x + x.y*y.y + x.z*y.z; +} + +/* ---------------------------------------------------------------------- + Fermi-like smoothing function +------------------------------------------------------------------------- */ + +__device__ inline F_FLOAT F_fermi(F_FLOAT &r, int &iparam) +{ + return F_F(1.0) / (F_F(1.0) + exp(-params[iparam].ZBLexpscale*(r-params[iparam].ZBLcut))); +} + +/* ---------------------------------------------------------------------- + Fermi-like smoothing function derivative with respect to r +------------------------------------------------------------------------- */ + +__device__ inline F_FLOAT F_fermi_d(F_FLOAT &r, int &iparam) +{ + volatile const F_FLOAT tmp = exp(-params[iparam].ZBLexpscale*(r-params[iparam].ZBLcut)); + return params[iparam].ZBLexpscale*tmp / + ((F_F(1.0) +tmp)*(F_F(1.0) +tmp)); +} + +__device__ inline F_FLOAT ters_fc(F_FLOAT r, F_FLOAT ters_R, F_FLOAT ters_D) +{ + return (r < ters_R-ters_D)?F_F(1.0):((r > ters_R+ters_D)? + F_F(0.0):F_F(0.5)*(F_F(1.0) - sin(PI2*(r - ters_R)/ters_D))); +} + +__device__ inline F_FLOAT ters_fc_d(F_FLOAT r, F_FLOAT ters_R, F_FLOAT ters_D) +{ + return ((r < ters_R-ters_D)||(r > ters_R+ters_D))? + F_F(0.0):-(PI4/ters_D) * cos(PI2*(r - ters_R)/ters_D); +} + + +__device__ inline F_FLOAT ters_gijk(F_FLOAT& cos_theta, int iparam) +{ + F_FLOAT ters_c = params[iparam].c; + F_FLOAT ters_d = params[iparam].d; + + return params[iparam].gamma*(F_F(1.0) + pow(params[iparam].c/params[iparam].d,F_F(2.0)) - + pow(ters_c,F_F(2.0)) / (pow(ters_d,F_F(2.0)) + pow(params[iparam].h - cos_theta,F_F(2.0)))); +} + +__device__ F_FLOAT ters_gijk2(F_FLOAT& cos_theta, int iparam) +{ + F_FLOAT ters_c = params[iparam].c; + F_FLOAT ters_d = params[iparam].d; + + return params[iparam].gamma*(F_F(1.0) + pow(ters_c/ters_d,F_F(2.0)) - + pow(ters_c,F_F(2.0)) / (pow(ters_d,F_F(2.0)) + pow(params[iparam].h - cos_theta,F_F(2.0)))); +} + +__device__ inline F_FLOAT ters_gijk_d(F_FLOAT costheta, int iparam) +{ + F_FLOAT numerator = -F_F(2.0) * pow(params[iparam].c,F_F(2.0)) * (params[iparam].h - costheta); + F_FLOAT denominator = pow(pow(params[iparam].d,F_F(2.0)) + + pow(params[iparam].h - costheta,F_F(2.0)),F_F(2.0)); + return params[iparam].gamma*numerator/denominator; +} + +__device__ inline F_FLOAT zeta(int iparam, const F_FLOAT rsqij, const F_FLOAT rsqik, + F_FLOAT3& delij, F_FLOAT3& delik) +{ + F_FLOAT rij,rik,costheta,arg,ex_delr; + + rij = sqrt(rsqij); + rik = sqrt(rsqik); + costheta = vec3_dot(delij,delik) / (rij*rik); + + arg = (params[iparam].powermint == 3)? (params[iparam].lam3 * (rij-rik)*params[iparam].lam3 * (rij-rik)*params[iparam].lam3 * (rij-rik)) : params[iparam].lam3 * (rij-rik); + + if (arg > F_F(69.0776)) ex_delr = F_F(1.e30); + else if (arg < -F_F(69.0776)) ex_delr = F_F(0.0); + else ex_delr = exp(arg); + + return ters_fc(rik,params[iparam].bigr,params[iparam].bigd) * ex_delr * params[iparam].gamma*(F_F(1.0) + (params[iparam].c*params[iparam].c/(params[iparam].d*params[iparam].d)) - + (params[iparam].c*params[iparam].c) / ((params[iparam].d*params[iparam].d) + (params[iparam].h - costheta)*(params[iparam].h - costheta))); +} + +__device__ void repulsive(int iparam, F_FLOAT rsq, F_FLOAT &fforce, + int eflag, ENERGY_FLOAT &eng) +{ + F_FLOAT r,tmp_fc,tmp_fc_d,tmp_exp; + + F_FLOAT ters_R = params[iparam].bigr; + F_FLOAT ters_D = params[iparam].bigd; + r = sqrt(rsq); + tmp_fc = ters_fc(r,ters_R,ters_D); + tmp_fc_d = ters_fc_d(r,ters_R,ters_D); + tmp_exp = exp(-params[iparam].lam1 * r); + if(!_zbl) + { + fforce = -params[iparam].biga * tmp_exp * (tmp_fc_d - tmp_fc*params[iparam].lam1) / r; + if (eflag) eng += tmp_fc * params[iparam].biga * tmp_exp; + } + else + { + F_FLOAT const fforce_ters = params[iparam].biga * tmp_exp * (tmp_fc_d - tmp_fc*params[iparam].lam1); + ENERGY_FLOAT eng_ters = tmp_fc * params[iparam].biga * tmp_exp; + + F_FLOAT r_ov_a = r/params[iparam].a_ij; + F_FLOAT phi = F_F(0.1818)*exp(-F_F(3.2)*r_ov_a) + F_F(0.5099)*exp(-F_F(0.9423)*r_ov_a) + + F_F(0.2802)*exp(-F_F(0.4029)*r_ov_a) + F_F(0.02817)*exp(-F_F(0.2016)*r_ov_a); + F_FLOAT dphi = (F_F(1.0)/params[iparam].a_ij) * (-F_F(3.2)*F_F(0.1818)*exp(-F_F(3.2)*r_ov_a) - + F_F(0.9423)*F_F(0.5099)*exp(-F_F(0.9423)*r_ov_a) - + F_F(0.4029)*F_F(0.2802)*exp(-F_F(0.4029)*r_ov_a) - + F_F(0.2016)*F_F(0.02817)*exp(-F_F(0.2016)*r_ov_a)); + F_FLOAT fforce_ZBL = params[iparam].premult/(-r*r)* phi + params[iparam].premult/r*dphi; + ENERGY_FLOAT eng_ZBL = params[iparam].premult*(F_F(1.0)/r)*phi; + + fforce = -(-F_fermi_d(r,iparam) * (eng_ZBL - eng_ters) + fforce_ZBL + F_fermi(r,iparam)*(fforce_ters-fforce_ZBL))/r; + if(eflag) + eng += eng_ZBL + F_fermi(r,iparam)*(eng_ters-eng_ZBL); + } + + +} + +/* ---------------------------------------------------------------------- */ + +__device__ inline F_FLOAT ters_fa(F_FLOAT r, int iparam, F_FLOAT ters_R, F_FLOAT ters_D) +{ + if (r > ters_R + ters_D) return F_F(0.0); + if(_zbl) + return -params[iparam].bigb * exp(-params[iparam].lam2 * r) * ters_fc(r,ters_R,ters_D) * F_fermi(r,iparam); + else + return -params[iparam].bigb * exp(-params[iparam].lam2 * r) * ters_fc(r,ters_R,ters_D); +} + +/* ---------------------------------------------------------------------- */ + +__device__ inline F_FLOAT ters_fa_d(F_FLOAT r, int iparam, F_FLOAT ters_R, F_FLOAT ters_D) +{ + if (r > ters_R + ters_D) return F_F(0.0); + if(_zbl) + return params[iparam].bigb * exp(-params[iparam].lam2 * r) * + ((params[iparam].lam2 * ters_fc(r,ters_R,ters_D) - ters_fc_d(r,ters_R,ters_D))*F_fermi(r,iparam) + -ters_fc(r,ters_R,ters_D)*F_fermi_d(r,iparam)); + else + return params[iparam].bigb * exp(-params[iparam].lam2 * r) * + (params[iparam].lam2 * ters_fc(r,ters_R,ters_D) - ters_fc_d(r,ters_R,ters_D)); +} + +/* ---------------------------------------------------------------------- */ + +__device__ inline F_FLOAT ters_bij(F_FLOAT zeta, int iparam) +{ + F_FLOAT tmp = params[iparam].beta * zeta; + if (tmp > params[iparam].c1) return F_F(1.0)/sqrt(tmp); + if (tmp > params[iparam].c2) + return (F_F(1.0) - pow(tmp,-params[iparam].powern) / (F_F(2.0)*params[iparam].powern))/sqrt(tmp); + if (tmp < params[iparam].c4) return F_F(1.0); + if (tmp < params[iparam].c3) + return F_F(1.0) - pow(tmp,params[iparam].powern)/(F_F(2.0)*params[iparam].powern); + return pow(F_F(1.0) + pow(tmp,params[iparam].powern), -F_F(1.0)/(F_F(2.0)*params[iparam].powern)); +} + +/* ---------------------------------------------------------------------- */ + +__device__ inline F_FLOAT ters_bij_d(F_FLOAT zeta, int iparam) +{ + F_FLOAT tmp = params[iparam].beta * zeta; + if (tmp > params[iparam].c1) return params[iparam].beta * -F_F(0.5)*pow(tmp,-F_F(1.5)); + if (tmp > params[iparam].c2) + return params[iparam].beta * (-F_F(0.5)*pow(tmp,-F_F(1.5)) * + (F_F(1.0) - F_F(0.5)*(F_F(1.0) + F_F(1.0)/(F_F(2.0)*params[iparam].powern)) * + pow(tmp,-params[iparam].powern))); + if (tmp < params[iparam].c4) return F_F(0.0); + if (tmp < params[iparam].c3) + return -F_F(0.5)*params[iparam].beta * pow(tmp,params[iparam].powern-F_F(1.0)); + + F_FLOAT tmp_n = pow(tmp,params[iparam].powern); + return -F_F(0.5) * pow(F_F(1.0)+tmp_n, -F_F(1.0)-(F_F(1.0)/(F_F(2.0)*params[iparam].powern)))*tmp_n / zeta; +} + +__device__ void force_zeta(int iparam, F_FLOAT rsq, F_FLOAT zeta_ij, + F_FLOAT &fforce, F_FLOAT &prefactor, + int eflag, F_FLOAT &eng) +{ + F_FLOAT r,fa,fa_d,bij; + F_FLOAT ters_R = params[iparam].bigr; + F_FLOAT ters_D = params[iparam].bigd; + r = sqrt(rsq); + fa = ters_fa(r,iparam,ters_R,ters_D); + fa_d = ters_fa_d(r,iparam,ters_R,ters_D); + bij = ters_bij(zeta_ij,iparam); + fforce = F_F(0.5)*bij*fa_d / r; + prefactor = -F_F(0.5)*fa * ters_bij_d(zeta_ij,iparam); + if (eflag) eng += bij*fa; +} + +__device__ void force_zeta_prefactor_force(int iparam, F_FLOAT rsq, F_FLOAT zeta_ij, + F_FLOAT &fforce, F_FLOAT &prefactor) +{ + F_FLOAT r,fa,fa_d,bij; + F_FLOAT ters_R = params[iparam].bigr; + F_FLOAT ters_D = params[iparam].bigd; + r = sqrt(rsq); + fa = ters_fa(r,iparam,ters_R,ters_D); + fa_d = ters_fa_d(r,iparam,ters_R,ters_D); + bij = ters_bij(zeta_ij,iparam); + fforce = F_F(0.5)*bij*fa_d / r; + prefactor = -F_F(0.5)*fa * ters_bij_d(zeta_ij,iparam); +} + +__device__ void force_zeta_prefactor(int iparam, F_FLOAT rsq, F_FLOAT zeta_ij, + F_FLOAT &prefactor) +{ + F_FLOAT r,fa; + r = sqrt(rsq); + fa = ters_fa(r,iparam,params[iparam].bigr,params[iparam].bigd); + prefactor = -F_F(0.5)*fa*ters_bij_d(zeta_ij,iparam); +} + + +__device__ void costheta_d(F_FLOAT3& rij_hat, F_FLOAT& rij, + F_FLOAT3& rik_hat, F_FLOAT& rik, + F_FLOAT3& dri, F_FLOAT3& drj, F_FLOAT3& drk) +{ + // first element is derivative wrt Ri, second wrt Rj, third wrt Rk + + F_FLOAT cos_theta = vec3_dot(rij_hat,rik_hat); + + vec3_scaleadd(-cos_theta,rij_hat,rik_hat,drj); + vec3_scale(F_F(1.0)/rij,drj,drj); + vec3_scaleadd(-cos_theta,rik_hat,rij_hat,drk); + vec3_scale(F_F(1.0)/rik,drk,drk); + vec3_add(drj,drk,dri); + vec3_scale(-F_F(1.0),dri,dri); +} + +__device__ void ters_zetaterm_d(F_FLOAT prefactor, + F_FLOAT3& rij_hat, F_FLOAT rij, + F_FLOAT3& rik_hat, F_FLOAT rik, + F_FLOAT3& dri, F_FLOAT3& drj, F_FLOAT3& drk, + int iparam) +{ + F_FLOAT ex_delr,ex_delr_d,tmp; + F_FLOAT3 dcosdri,dcosdrj,dcosdrk; + + if (params[iparam].powermint == 3) tmp = (params[iparam].lam3 * (rij-rik)*params[iparam].lam3 * (rij-rik)*params[iparam].lam3 * (rij-rik)); + else tmp = params[iparam].lam3 * (rij-rik); + + if (tmp > F_F(69.0776)) ex_delr = F_F(1.e30); + else if (tmp < -F_F(69.0776)) ex_delr = F_F(0.0); + else ex_delr = exp(tmp); + + if (params[iparam].powermint == 3) + ex_delr_d = F_F(3.0)*(params[iparam].lam3*params[iparam].lam3*params[iparam].lam3) * (rij-rik)*(rij-rik)*ex_delr; + else ex_delr_d = params[iparam].lam3 * ex_delr; + + + const F_FLOAT cos_theta = vec3_dot(rij_hat,rik_hat); + costheta_d(rij_hat,rij,rik_hat,rik,dcosdri,dcosdrj,dcosdrk); + + const F_FLOAT gijk = params[iparam].gamma*(F_F(1.0) + (params[iparam].c*params[iparam].c)/(params[iparam].d*params[iparam].d) - + (params[iparam].c*params[iparam].c) / (params[iparam].d*params[iparam].d + (params[iparam].h - cos_theta)*(params[iparam].h - cos_theta))); + const F_FLOAT numerator = -F_F(2.0) * params[iparam].c*params[iparam].c * (params[iparam].h - cos_theta); + const F_FLOAT denominator = (params[iparam].d*params[iparam].d) + + (params[iparam].h - cos_theta)*(params[iparam].h - cos_theta); + const F_FLOAT gijk_d = params[iparam].gamma*numerator/(denominator*denominator); // compute the derivative wrt Ri + // dri = -dfc*gijk*ex_delr*rik_hat; + // dri += fc*gijk_d*ex_delr*dcosdri; + // dri += fc*gijk*ex_delr_d*(rik_hat - rij_hat); + const F_FLOAT fc = ters_fc(rik,params[iparam].bigr,params[iparam].bigd); + const F_FLOAT dfc = ters_fc_d(rik,params[iparam].bigr,params[iparam].bigd); + + + vec3_scale(-dfc*gijk*ex_delr,rik_hat,dri); + vec3_scaleadd(fc*gijk_d*ex_delr,dcosdri,dri,dri); + vec3_scaleadd(fc*gijk*ex_delr_d,rik_hat,dri,dri); + vec3_scaleadd(-fc*gijk*ex_delr_d,rij_hat,dri,dri); + vec3_scale(prefactor,dri,dri); + // compute the derivative wrt Rj + // drj = fc*gijk_d*ex_delr*dcosdrj; + // drj += fc*gijk*ex_delr_d*rij_hat; + + vec3_scale(fc*gijk_d*ex_delr,dcosdrj,drj); + vec3_scaleadd(fc*gijk*ex_delr_d,rij_hat,drj,drj); + vec3_scale(prefactor,drj,drj); + + // compute the derivative wrt Rk + // drk = dfc*gijk*ex_delr*rik_hat; + // drk += fc*gijk_d*ex_delr*dcosdrk; + // drk += -fc*gijk*ex_delr_d*rik_hat; + + vec3_scale(dfc*gijk*ex_delr,rik_hat,drk); + vec3_scaleadd(fc*gijk_d*ex_delr,dcosdrk,drk,drk); + vec3_scaleadd(-fc*gijk*ex_delr_d,rik_hat,drk,drk); + vec3_scale(prefactor,drk,drk); +} + +__device__ void ters_zetaterm_d_fi(F_FLOAT &prefactor, + F_FLOAT3& rij_hat, F_FLOAT &rij, + F_FLOAT3& rik_hat, F_FLOAT &rik, + F_FLOAT3& dri, int &iparam) +{ + F_FLOAT ex_delr,ex_delr_d,tmp; + + if (params[iparam].powermint == 3) tmp = (params[iparam].lam3 * (rij-rik)*params[iparam].lam3 * (rij-rik)*params[iparam].lam3 * (rij-rik)); + else tmp = params[iparam].lam3 * (rij-rik); + + if (tmp > F_F(69.0776)) ex_delr = F_F(1.e30); + else if (tmp < -F_F(69.0776)) ex_delr = F_F(0.0); + else ex_delr = exp(tmp); + + if (params[iparam].powermint == 3) + ex_delr_d = F_F(3.0)*(params[iparam].lam3*params[iparam].lam3*params[iparam].lam3) * (rij-rik)*(rij-rik)*ex_delr; + else ex_delr_d = params[iparam].lam3 * ex_delr; + + const F_FLOAT cos_theta = vec3_dot(rij_hat,rik_hat); + //costheta_d(rij_hat,rij,rik_hat,rik,dcosdri,dcosdrj,dcosdrk); + + + F_FLOAT3 dcosdri; + vec3_scaleadd(-cos_theta,rij_hat,rik_hat,dri); + vec3_scale(F_F(1.0)/rij,dri,dri); + vec3_scaleadd(-cos_theta,rik_hat,rij_hat,dcosdri); + vec3_scale(F_F(1.0)/rik,dcosdri,dcosdri); + vec3_add(dri,dcosdri,dcosdri); + vec3_scale(-F_F(1.0),dcosdri,dcosdri); + + const F_FLOAT gijk = params[iparam].gamma*(F_F(1.0) + (params[iparam].c*params[iparam].c)/(params[iparam].d*params[iparam].d) - + (params[iparam].c*params[iparam].c) / (params[iparam].d*params[iparam].d + (params[iparam].h - cos_theta)*(params[iparam].h - cos_theta))); + const F_FLOAT numerator = -F_F(2.0) * params[iparam].c*params[iparam].c * (params[iparam].h - cos_theta); + const F_FLOAT denominator = (params[iparam].d*params[iparam].d) + + (params[iparam].h - cos_theta)*(params[iparam].h - cos_theta); + const F_FLOAT gijk_d = params[iparam].gamma*numerator/(denominator*denominator); // compute the derivative wrt Ri +// + const F_FLOAT fc = ters_fc(rik,params[iparam].bigr,params[iparam].bigd); + const F_FLOAT dfc = ters_fc_d(rik,params[iparam].bigr,params[iparam].bigd); + + vec3_scale(-dfc*gijk*ex_delr,rik_hat,dri); + vec3_scaleadd(fc*gijk_d*ex_delr,dcosdri,dri,dri); + vec3_scaleadd(fc*gijk*ex_delr_d,rik_hat,dri,dri); + vec3_scaleadd(-fc*gijk*ex_delr_d,rij_hat,dri,dri); + vec3_scale(prefactor,dri,dri); + +} + +__device__ void ters_zetaterm_d_fj(F_FLOAT &prefactor, + F_FLOAT3& rij_hat, F_FLOAT &rij, + F_FLOAT3& rik_hat, F_FLOAT &rik, + F_FLOAT3& drj, int &iparam) +{ + F_FLOAT ex_delr,ex_delr_d,tmp; + + if (params[iparam].powermint == 3) tmp = (params[iparam].lam3 * (rij-rik)*params[iparam].lam3 * (rij-rik)*params[iparam].lam3 * (rij-rik)); + else tmp = params[iparam].lam3 * (rij-rik); + + if (tmp > F_F(69.0776)) ex_delr = F_F(1.e30); + else if (tmp < -F_F(69.0776)) ex_delr = F_F(0.0); + else ex_delr = exp(tmp); + + if (params[iparam].powermint == 3) + ex_delr_d = F_F(3.0)*(params[iparam].lam3*params[iparam].lam3*params[iparam].lam3) * (rij-rik)*(rij-rik)*ex_delr; + else ex_delr_d = params[iparam].lam3 * ex_delr; + + const F_FLOAT cos_theta = vec3_dot(rij_hat,rik_hat); + vec3_scaleadd(-cos_theta,rij_hat,rik_hat,drj); + vec3_scale(F_F(1.0)/rij,drj,drj); + + const F_FLOAT gijk = params[iparam].gamma*(F_F(1.0) + (params[iparam].c*params[iparam].c)/(params[iparam].d*params[iparam].d) - + (params[iparam].c*params[iparam].c) / (params[iparam].d*params[iparam].d + (params[iparam].h - cos_theta)*(params[iparam].h - cos_theta))); + const F_FLOAT numerator = -F_F(2.0) * params[iparam].c*params[iparam].c * (params[iparam].h - cos_theta); + const F_FLOAT denominator = (params[iparam].d*params[iparam].d) + + (params[iparam].h - cos_theta)*(params[iparam].h - cos_theta); + const F_FLOAT gijk_d = params[iparam].gamma*numerator/(denominator*denominator); // compute the derivative wrt Ri + + const F_FLOAT fc = ters_fc(rik,params[iparam].bigr,params[iparam].bigd); + + vec3_scale(fc*gijk_d*ex_delr,drj,drj); + vec3_scaleadd(fc*gijk*ex_delr_d,rij_hat,drj,drj); + vec3_scale(prefactor,drj,drj); +} + +__device__ void ters_zetaterm_d_fk(F_FLOAT &prefactor, + F_FLOAT3& rij_hat, F_FLOAT &rij, + F_FLOAT3& rik_hat, F_FLOAT &rik, + F_FLOAT3& drk, int &iparam) +{ + F_FLOAT ex_delr,ex_delr_d,tmp; + + if (params[iparam].powermint == 3) tmp = (params[iparam].lam3 * (rij-rik)*params[iparam].lam3 * (rij-rik)*params[iparam].lam3 * (rij-rik)); + else tmp = params[iparam].lam3 * (rij-rik); + + if (tmp > F_F(69.0776)) ex_delr = F_F(1.e30); + else if (tmp < -F_F(69.0776)) ex_delr = F_F(0.0); + else ex_delr = exp(tmp); + + if (params[iparam].powermint == 3) + ex_delr_d = F_F(3.0)*(params[iparam].lam3*params[iparam].lam3*params[iparam].lam3) * (rij-rik)*(rij-rik)*ex_delr; + else ex_delr_d = params[iparam].lam3 * ex_delr; + + const F_FLOAT cos_theta = vec3_dot(rij_hat,rik_hat); + vec3_scaleadd(-cos_theta,rik_hat,rij_hat,drk); + vec3_scale(F_F(1.0)/rik,drk,drk); + + const F_FLOAT gijk = params[iparam].gamma*(F_F(1.0) + (params[iparam].c*params[iparam].c)/(params[iparam].d*params[iparam].d) - + (params[iparam].c*params[iparam].c) / (params[iparam].d*params[iparam].d + (params[iparam].h - cos_theta)*(params[iparam].h - cos_theta))); + const F_FLOAT numerator = -F_F(2.0) * params[iparam].c*params[iparam].c * (params[iparam].h - cos_theta); + const F_FLOAT denominator = (params[iparam].d*params[iparam].d) + + (params[iparam].h - cos_theta)*(params[iparam].h - cos_theta); + const F_FLOAT gijk_d = params[iparam].gamma*numerator/(denominator*denominator); // compute the derivative wrt Ri + + const F_FLOAT fc = ters_fc(rik,params[iparam].bigr,params[iparam].bigd); + const F_FLOAT dfc = ters_fc_d(rik,params[iparam].bigr,params[iparam].bigd); + + vec3_scale(fc*gijk_d*ex_delr,drk,drk); + vec3_scaleadd(dfc*gijk*ex_delr,rik_hat,drk,drk); + vec3_scaleadd(-fc*gijk*ex_delr_d,rik_hat,drk,drk); + vec3_scale(prefactor,drk,drk); +} + +__device__ void attractive(int iparam, F_FLOAT prefactor, + F_FLOAT4& delij, + F_FLOAT4& delik, + F_FLOAT3& fi, F_FLOAT3& fj, F_FLOAT3& fk) +{ + F_FLOAT3 rij_hat,rik_hat; + F_FLOAT rij,rijinv,rik,rikinv; + + rij = sqrt(delij.w); + rijinv = F_F(1.0)/rij; + vec3_scale(rijinv,delij,rij_hat); + + rik = sqrt(delik.w); + rikinv = F_F(1.0)/rik; + vec3_scale(rikinv,delik,rik_hat); + + ters_zetaterm_d(prefactor,rij_hat,rij,rik_hat,rik,fi,fj,fk,iparam); +} + +__device__ void attractive_fi(int& iparam, F_FLOAT& prefactor, + F_FLOAT4& delij, + F_FLOAT4& delik, + F_FLOAT3& f) +{ + F_FLOAT3 rij_hat,rik_hat; + F_FLOAT rij,rijinv,rik,rikinv; + + rij = sqrt(delij.w); + rijinv = F_F(1.0)/rij; + vec3_scale(rijinv,delij,rij_hat); + + rik = sqrt(delik.w); + rikinv = F_F(1.0)/rik; + vec3_scale(rikinv,delik,rik_hat); + + ters_zetaterm_d_fi(prefactor,rij_hat,rij,rik_hat,rik,f,iparam); +} + +__device__ void attractive_fj(int iparam, F_FLOAT prefactor, + F_FLOAT4& delij, + F_FLOAT4& delik, + F_FLOAT3& f) +{ + F_FLOAT3 rij_hat,rik_hat; + F_FLOAT rij,rijinv,rik,rikinv; + + rij = sqrt(delij.w); + rijinv = F_F(1.0)/rij; + vec3_scale(rijinv,delij,rij_hat); + + rik = sqrt(delik.w); + rikinv = F_F(1.0)/rik; + vec3_scale(rikinv,delik,rik_hat); + + ters_zetaterm_d_fj(prefactor,rij_hat,rij,rik_hat,rik,f,iparam); +} + +__device__ void attractive_fk(int iparam, F_FLOAT prefactor, + F_FLOAT4& delij, + F_FLOAT4& delik, + F_FLOAT3& f) +{ + F_FLOAT3 rij_hat,rik_hat; + F_FLOAT rij,rijinv,rik,rikinv; + + rij = sqrt(delij.w); + rijinv = F_F(1.0)/rij; + vec3_scale(rijinv,delij,rij_hat); + + rik = sqrt(delik.w); + rikinv = F_F(1.0)/rik; + vec3_scale(rikinv,delik,rik_hat); + + ters_zetaterm_d_fk(prefactor,rij_hat,rij,rik_hat,rik,f,iparam); +} + +__global__ void Pair_Tersoff_Kernel_TpA_RIJ()//F_FLOAT4* _glob_r_ij,int* _glob_numneigh_red,int* _glob_neighbors_red,int* _glob_neightype_red) +{ + int ii = (blockIdx.x*gridDim.y+blockIdx.y)*blockDim.x+threadIdx.x; + if( ii >= _nall ) return; + + X_FLOAT4 myxtype; + F_FLOAT4 delij; + F_FLOAT xtmp,ytmp,ztmp; + int itype,jnum,i,j; + int* jlist; + int neigh_red = 0; + i = ii;//_ilist[ii]; + myxtype = fetchXType(i); + + xtmp=myxtype.x; + ytmp=myxtype.y; + ztmp=myxtype.z; + itype=map[(static_cast (myxtype.w))]; + + jnum = _numneigh[i]; + jlist = &_neighbors[i]; + + __syncthreads(); + for (int jj = 0; jj < jnum; jj++) + { + if(jj (myxtype.w))]; + int iparam_ij = elem2param[(itype*nelements+jtype)*nelements+jtype]; + delij.w = vec3_dot(delij,delij); + if (delij.w < params[iparam_ij].cutsq) + { + _glob_neighbors_red[i+neigh_red*_nall]=j; + _glob_neightype_red[i+neigh_red*_nall]=jtype; + _glob_r_ij[i+neigh_red*_nall]=delij; + neigh_red++; + } + } + } + _glob_numneigh_red[i]=neigh_red; +} + + + __global__ void Pair_Tersoff_Kernel_TpA_ZetaIJ()//F_FLOAT* _glob_zeta_ij,F_FLOAT4* _glob_r_ij,int* _glob_numneigh_red,int* _glob_neighbors_red,int* _glob_neightype_red) + { + + int ii = (blockIdx.x*gridDim.y+blockIdx.y)*blockDim.x+threadIdx.x; + if( ii >= _nall ) return; + + + F_FLOAT4 delij; + F_FLOAT4 delik; + + int itype,jnum,i,j; + int* jlist; + i = ii; + itype=map[(static_cast (_type[i]))]; + + jnum = _glob_numneigh_red[i]; + jlist = &_glob_neighbors_red[i]; + + __syncthreads(); + for (int jj = 0; jj < jnum; jj++) + { + if(jj + __global__ void Pair_Tersoff_Kernel_TpA(int eflag_atom,int vflag_atom)//,F_FLOAT* _glob_zeta_ij,F_FLOAT4* _glob_r_ij,int* _glob_numneigh_red,int* _glob_neighbors_red,int* _glob_neightype_red) +{ + ENERGY_FLOAT evdwl = ENERGY_F(0.0); + + ENERGY_FLOAT* sharedE = &sharedmem[threadIdx.x]; + ENERGY_FLOAT* sharedV = &sharedmem[threadIdx.x]; + + F_FLOAT* shared_F_F = (F_FLOAT*) sharedmem; + if((eflag||eflag_atom)&&(vflagm||vflag_atom)) shared_F_F = (F_FLOAT*) &sharedmem[7*blockDim.x]; + else + if(eflag) shared_F_F = (F_FLOAT*) &sharedmem[blockDim.x]; + else + if(vflagm) shared_F_F = (F_FLOAT*) &sharedmem[6*blockDim.x]; + shared_F_F+=threadIdx.x; + + if(eflag_atom||eflag) + { + sharedE[0] = ENERGY_F(0.0); + sharedV += blockDim.x; + } + + if(vflagm||vflag_atom) + { + sharedV[0*blockDim.x] = ENERGY_F(0.0); + sharedV[1*blockDim.x] = ENERGY_F(0.0); + sharedV[2*blockDim.x] = ENERGY_F(0.0); + sharedV[3*blockDim.x] = ENERGY_F(0.0); + sharedV[4*blockDim.x] = ENERGY_F(0.0); + sharedV[5*blockDim.x] = ENERGY_F(0.0); + } + + int jnum_red=0; +#define fxtmp shared_F_F[0] +#define fytmp shared_F_F[blockDim.x] +#define fztmp shared_F_F[2*blockDim.x] +//#define jnum_red (static_cast (shared_F_F[3*blockDim.x])) + + int ii = (blockIdx.x*gridDim.y+blockIdx.y)*blockDim.x+threadIdx.x; + + X_FLOAT4 myxtype_i,myxtype_j,myxtype_k; + F_FLOAT4 delij,delik,deljk; + F_FLOAT fpair; + F_FLOAT prefactor_ij,prefactor_ji; + + int itype,i,j; + int* jlist_red; + + if(ii < _inum) + { + i = _ilist[ii]; + + if(vflagm) + myxtype_i=fetchXType(i); + //itype=map[(static_cast (myxtype_i.w))]; + itype=map[_type[i]]; + + + fxtmp = F_F(0.0); + fytmp = F_F(0.0); + fztmp = F_F(0.0); + + + //shared_F_F[3*blockDim.x] = _glob_numneigh_red[i]; + jnum_red = _glob_numneigh_red[i]; + jlist_red = &_glob_neighbors_red[i]; + } + __syncthreads(); + +#pragma unroll 1 + for (int jj = 0; jj < jnum_red; jj++) + { + if(i < _nlocal) + { + fpair=F_F(0.0); + j = jlist_red[jj*_nall]; + j &= NEIGHMASK; + + if(vflagm) + myxtype_j = fetchXType(j); + + int jtype = _glob_neightype_red[i+jj*_nall]; + delij = _glob_r_ij[i+jj*_nall]; + + volatile int iparam_ij = elem2param[(itype*nelements+jtype)*nelements+jtype]; + volatile int iparam_ji = elem2param[(jtype*nelements+itype)*nelements+itype]; + + if (delij.w(); +#undef fxtmp +#undef fytmp +#undef fztmp +//#undef jnum_red +} diff --git a/lib/gpu/Makefile.linux b/lib/gpu/Makefile.linux index a8827d6e8b..8be59ca8ac 100644 --- a/lib/gpu/Makefile.linux +++ b/lib/gpu/Makefile.linux @@ -6,8 +6,10 @@ CUDA_HOME = /usr/local/cuda NVCC = nvcc +# Tesla CUDA +CUDA_ARCH = -arch=sm_21 # newer CUDA -CUDA_ARCH = -arch=sm_13 +#CUDA_ARCH = -arch=sm_13 # older CUDA #CUDA_ARCH = -arch=sm_10 -DCUDA_PRE_THREE diff --git a/lib/gpu/README b/lib/gpu/README index 022cb1e91d..a3c87df2f6 100644 --- a/lib/gpu/README +++ b/lib/gpu/README @@ -89,7 +89,7 @@ LAMMPS user manual for details on running with GPU acceleration. -------------------------------- To build, edit the CUDA_ARCH, CUDA_PRECISION, CUDA_HOME variables in one of -the Makefiles. CUDA_ARCH should be set based on the compute capability of +the Makefiles. CUDA_ARCH should be set based on the compute capability of your GPU. This can be verified by running the nvc_get_devices executable after the build is complete. Additionally, the GPU package must be installed and compiled for LAMMPS. This may require editing the gpu_SYSPATH variable in the @@ -121,10 +121,12 @@ NOTE: Double precision is only supported on certain GPUs (with with -DFFT_SINGLE. For details on configuring FFT support in LAMMPS, see http://lammps.sandia.gov/doc/Section_start.html#2_2_4 -NOTE: For Tesla and other graphics cards with compute capability>=1.3, +NOTE: For graphics cards with compute capability>=1.3 (e.g. Tesla C1060), make sure that -arch=sm_13 is set on the CUDA_ARCH line. -NOTE: For Fermi, make sure that -arch=sm_20 is set on the CUDA_ARCH line. +NOTE: For newer graphics card (a.k.a. "Fermi", e.g. Tesla C2050), make + sure that either -arch=sm_20 or -arch=sm_21 is set on the + CUDA_ARCH line, depending on hardware and CUDA toolkit version. NOTE: The gayberne/gpu pair style will only be installed if the ASPHERE package has been installed. @@ -132,12 +134,10 @@ NOTE: The gayberne/gpu pair style will only be installed if the ASPHERE NOTE: The cg/cmm/gpu and cg/cmm/coul/long/gpu pair styles will only be installed if the USER-CG-CMM package has been installed. -NOTE: The lj/cut/coul/long/gpu, cg/cmm/coul/long/gpu, coul/long/gpu, - and pppm/gpu styles will only be installed if the KSPACE package - has been installed. +NOTE: The lj/cut/coul/long/gpu, cg/cmm/coul/long/gpu, coul/long/gpu, + lj/charmm/coul/long/gpu and pppm/gpu styles will only be installed + if the KSPACE package has been installed. -NOTE: The lj/charmm/coul/long will only be installed if the MOLECULE package - has been installed. EXAMPLE BUILD PROCESS diff --git a/lib/gpu/coul_long_gpu.cpp b/lib/gpu/coul_long_gpu.cpp new file mode 100644 index 0000000000..60c0d35d7d --- /dev/null +++ b/lib/gpu/coul_long_gpu.cpp @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------- + 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: Mike Brown (ORNL), brownw@ornl.gov +------------------------------------------------------------------------- */ + +#include +#include +#include + +#include "coul_long_gpu_memory.h" + +using namespace std; + +static CL_GPU_Memory CLMF; + +// --------------------------------------------------------------------------- +// Allocate memory on host and device and copy constants to device +// --------------------------------------------------------------------------- +int cl_gpu_init(const int inum, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, int &gpu_mode, + FILE *screen, double host_cut_coulsq, double *host_special_coul, + const double qqrd2e, const double g_ewald) { + CLMF.clear(); + gpu_mode=CLMF.device->gpu_mode(); + double gpu_split=CLMF.device->particle_split(); + int first_gpu=CLMF.device->first_device(); + int last_gpu=CLMF.device->last_device(); + int world_me=CLMF.device->world_me(); + int gpu_rank=CLMF.device->gpu_rank(); + int procs_per_gpu=CLMF.device->procs_per_gpu(); + + CLMF.device->init_message(screen,"coul/long",first_gpu,last_gpu); + + bool message=false; + if (CLMF.device->replica_me()==0 && screen) + message=true; + + if (message) { + fprintf(screen,"Initializing GPU and compiling on process 0..."); + fflush(screen); + } + + int init_ok=0; + if (world_me==0) + init_ok=CLMF.init(inum, nall, 300, maxspecial, cell_size, gpu_split, + screen, host_cut_coulsq, host_special_coul, qqrd2e, + g_ewald); + + CLMF.device->world_barrier(); + if (message) + fprintf(screen,"Done.\n"); + + for (int i=0; igpu_barrier(); + if (message) + fprintf(screen,"Done.\n"); + } + if (message) + fprintf(screen,"\n"); + + if (init_ok==0) + CLMF.estimate_gpu_overhead(); + return init_ok; +} + +void cl_gpu_clear() { + CLMF.clear(); +} + +int** cl_gpu_compute_n(const int ago, const int inum_full, + const int nall, double **host_x, int *host_type, + double *sublo, double *subhi, int *tag, int **nspecial, + int **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, + bool &success, double *host_q, double *boxlo, + double *prd) { + return CLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, + subhi, tag, nspecial, special, eflag, vflag, eatom, + vatom, host_start, ilist, jnum, cpu_time, success, + host_q, boxlo, prd); +} + +void cl_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, double *host_q, + const int nlocal, double *boxlo, double *prd) { + CLMF.compute(ago,inum_full,nall,host_x,host_type,ilist,numj, + firstneigh,eflag,vflag,eatom,vatom,host_start,cpu_time,success, + host_q,nlocal,boxlo,prd); +} + +double cl_gpu_bytes() { + return CLMF.host_memory_usage(); +} + + diff --git a/lib/gpu/coul_long_gpu_kernel.cu b/lib/gpu/coul_long_gpu_kernel.cu new file mode 100644 index 0000000000..bc3747a7e3 --- /dev/null +++ b/lib/gpu/coul_long_gpu_kernel.cu @@ -0,0 +1,411 @@ +/* ---------------------------------------------------------------------- + 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: Mike Brown (ORNL), brownw@ornl.gov +------------------------------------------------------------------------- */ + +#ifndef CL_GPU_KERNEL +#define CL_GPU_KERNEL + +#ifdef NV_KERNEL + +#include "nv_kernel_def.h" +texture pos_tex; +texture q_tex; + +#ifdef _DOUBLE_DOUBLE +__inline double4 fetch_pos(const int& i, const double4 *pos) +{ + return pos[i]; +} +__inline double fetch_q(const int& i, const double *q) +{ + return q[i]; +} +#else +__inline float4 fetch_pos(const int& i, const float4 *pos) +{ + return tex1Dfetch(pos_tex, i); +} +__inline float fetch_q(const int& i, const float *q) +{ + return tex1Dfetch(q_tex, i); +} +#endif + +#else + +#pragma OPENCL EXTENSION cl_khr_fp64: enable +#define GLOBAL_ID_X get_global_id(0) +#define THREAD_ID_X get_local_id(0) +#define BLOCK_ID_X get_group_id(0) +#define BLOCK_SIZE_X get_local_size(0) +#define __syncthreads() barrier(CLK_LOCAL_MEM_FENCE) +#define __inline inline + +#define fetch_pos(i,y) x_[i] +#define fetch_q(i,y) q_[i] +#define BLOCK_PAIR 64 +#define MAX_SHARED_TYPES 8 + +#endif + +#ifdef _DOUBLE_DOUBLE +#define numtyp double +#define numtyp2 double2 +#define numtyp4 double4 +#define acctyp double +#define acctyp4 double4 +#endif + +#ifdef _SINGLE_DOUBLE +#define numtyp float +#define numtyp2 float2 +#define numtyp4 float4 +#define acctyp double +#define acctyp4 double4 +#endif + +#ifndef numtyp +#define numtyp float +#define numtyp2 float2 +#define numtyp4 float4 +#define acctyp float +#define acctyp4 float4 +#endif + +#define EWALD_F (numtyp)1.12837917 +#define EWALD_P (numtyp)0.3275911 +#define A1 (numtyp)0.254829592 +#define A2 (numtyp)-0.284496736 +#define A3 (numtyp)1.421413741 +#define A4 (numtyp)-1.453152027 +#define A5 (numtyp)1.061405429 + +#define SBBITS 30 +#define NEIGHMASK 0x3FFFFFFF +__inline int sbmask(int j) { return j >> SBBITS & 3; } + +__kernel void kernel_pair(__global numtyp4 *x_, __global numtyp4 *lj1, + __global numtyp4* lj3, const int lj_types, + __global numtyp *sp_cl_in, __global int *dev_nbor, + __global int *dev_packed, __global acctyp4 *ans, + __global acctyp *engv, const int eflag, + const int vflag, const int inum, + const int nbor_pitch, __global numtyp *q_, + const numtyp cut_coulsq, const numtyp qqrd2e, + const numtyp g_ewald, const int t_per_atom) { + int tid=THREAD_ID_X; + int ii=mul24((int)BLOCK_ID_X,(int)(BLOCK_SIZE_X)/t_per_atom); + ii+=tid/t_per_atom; + int offset=tid%t_per_atom; + + __local numtyp sp_cl[4]; + sp_cl[0]=sp_cl_in[0]; + sp_cl[1]=sp_cl_in[1]; + sp_cl[2]=sp_cl_in[2]; + sp_cl[3]=sp_cl_in[3]; + + acctyp e_coul=(acctyp)0; + acctyp4 f; + f.x=(acctyp)0; + f.y=(acctyp)0; + f.z=(acctyp)0; + acctyp virial[6]; + for (int i=0; i<6; i++) + virial[i]=(acctyp)0; + + if (ii0) { + e_coul += prefactor*(_erfc-factor_coul); + } + if (vflag>0) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + } + + } // for nbor + } // if ii + + // Reduce answers + if (t_per_atom>1) { + __local acctyp red_acc[6][BLOCK_PAIR]; + + red_acc[0][tid]=f.x; + red_acc[1][tid]=f.y; + red_acc[2][tid]=f.z; + red_acc[3][tid]=e_coul; + + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + if (offset < s) { + for (int r=0; r<4; r++) + red_acc[r][tid] += red_acc[r][tid+s]; + } + } + + f.x=red_acc[0][tid]; + f.y=red_acc[1][tid]; + f.z=red_acc[2][tid]; + e_coul=red_acc[3][tid]; + + if (vflag>0) { + for (int r=0; r<6; r++) + red_acc[r][tid]=virial[r]; + + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + if (offset < s) { + for (int r=0; r<6; r++) + red_acc[r][tid] += red_acc[r][tid+s]; + } + } + + for (int r=0; r<6; r++) + virial[r]=red_acc[r][tid]; + } + } + + // Store answers + if (ii0) { + *ap1=(acctyp)0; + ap1+=inum; + *ap1=e_coul; + ap1+=inum; + } + if (vflag>0) { + for (int i=0; i<6; i++) { + *ap1=virial[i]; + ap1+=inum; + } + } + ans[ii]=f; + } // if ii +} + +__kernel void kernel_pair_fast(__global numtyp4 *x_, __global numtyp4 *lj1_in, + __global numtyp4* lj3_in, + __global numtyp* sp_cl_in, + __global int *dev_nbor, __global int *dev_packed, + __global acctyp4 *ans, __global acctyp *engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, __global numtyp *q_, + const numtyp cut_coulsq, const numtyp qqrd2e, + const numtyp g_ewald, const int t_per_atom) { + int tid=THREAD_ID_X; + int ii=mul24((int)BLOCK_ID_X,(int)(BLOCK_SIZE_X)/t_per_atom); + ii+=tid/t_per_atom; + int offset=tid%t_per_atom; + + __local numtyp sp_cl[4]; + if (tid<4) + sp_cl[tid]=sp_cl_in[tid]; + + acctyp e_coul=(acctyp)0; + acctyp4 f; + f.x=(acctyp)0; + f.y=(acctyp)0; + f.z=(acctyp)0; + acctyp virial[6]; + for (int i=0; i<6; i++) + virial[i]=(acctyp)0; + + __syncthreads(); + + if (ii0) { + e_coul += prefactor*(_erfc-factor_coul); + } + if (vflag>0) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + } + + } // for nbor + } // if ii + + // Reduce answers + if (t_per_atom>1) { + __local acctyp red_acc[6][BLOCK_PAIR]; + + red_acc[0][tid]=f.x; + red_acc[1][tid]=f.y; + red_acc[2][tid]=f.z; + red_acc[3][tid]=e_coul; + + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + if (offset < s) { + for (int r=0; r<4; r++) + red_acc[r][tid] += red_acc[r][tid+s]; + } + } + + f.x=red_acc[0][tid]; + f.y=red_acc[1][tid]; + f.z=red_acc[2][tid]; + e_coul=red_acc[3][tid]; + + if (vflag>0) { + for (int r=0; r<6; r++) + red_acc[r][tid]=virial[r]; + + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + if (offset < s) { + for (int r=0; r<6; r++) + red_acc[r][tid] += red_acc[r][tid+s]; + } + } + + for (int r=0; r<6; r++) + virial[r]=red_acc[r][tid]; + } + } + + // Store answers + if (ii0) { + *ap1=(acctyp)0; + ap1+=inum; + *ap1=e_coul; + ap1+=inum; + } + if (vflag>0) { + for (int i=0; i<6; i++) { + *ap1=virial[i]; + ap1+=inum; + } + } + ans[ii]=f; + } // if ii*/ +} + +#endif + diff --git a/lib/gpu/coul_long_gpu_memory.cpp b/lib/gpu/coul_long_gpu_memory.cpp new file mode 100644 index 0000000000..7ea4077954 --- /dev/null +++ b/lib/gpu/coul_long_gpu_memory.cpp @@ -0,0 +1,158 @@ +/* ---------------------------------------------------------------------- + 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: Mike Brown (ORNL), brownw@ornl.gov +------------------------------------------------------------------------- */ + +#ifdef USE_OPENCL +#include "coul_long_gpu_cl.h" +#else +#include "coul_long_gpu_ptx.h" +#endif + +#include "coul_long_gpu_memory.h" +#include +#define CL_GPU_MemoryT CL_GPU_Memory + +extern PairGPUDevice pair_gpu_device; + +template +CL_GPU_MemoryT::CL_GPU_Memory() : ChargeGPUMemory(), + _allocated(false) { +} + +template +CL_GPU_MemoryT::~CL_GPU_Memory() { + clear(); +} + +template +int CL_GPU_MemoryT::bytes_per_atom(const int max_nbors) const { + return this->bytes_per_atom_atomic(max_nbors); +} + +template +int CL_GPU_MemoryT::init(const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *_screen, + const double host_cut_coulsq, double *host_special_coul, + const double qqrd2e, const double g_ewald) { + int success; + success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, + gpu_split,_screen,coul_long_gpu_kernel); + if (success!=0) + return success; + + // we don't have atom types for coulomb only, + // but go with the minimum so that we can use + // the same infrastructure as lj/cut/coul/long/gpu. + int lj_types=1; + shared_types=false; + int max_shared_types=this->device->max_shared_types(); + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } + _lj_types=lj_types; + + // Allocate a host write buffer for data initialization + UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), + UCL_WRITE_OPTIMIZED); + + for (int i=0; iucl_device),UCL_READ_ONLY); + lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); + + sp_cl.alloc(4,*(this->ucl_device),UCL_READ_ONLY); + for (int i=0; i<4; i++) { + host_write[i]=host_special_coul[i]; + } + ucl_copy(sp_cl,host_write,4,false); + + _cut_coulsq=host_cut_coulsq; + _qqrd2e=qqrd2e; + _g_ewald=g_ewald; + + _allocated=true; + this->_max_bytes=lj1.row_bytes()+lj3.row_bytes()+sp_cl.row_bytes(); + return 0; +} + +template +void CL_GPU_MemoryT::clear() { + if (!_allocated) + return; + _allocated=false; + + lj1.clear(); + lj3.clear(); + sp_cl.clear(); + this->clear_atomic(); +} + +template +double CL_GPU_MemoryT::host_memory_usage() const { + return this->host_memory_usage_atomic()+sizeof(CL_GPU_Memory); +} + +// --------------------------------------------------------------------------- +// Calculate energies, forces, and torques +// --------------------------------------------------------------------------- +template +void CL_GPU_MemoryT::loop(const bool _eflag, const bool _vflag) { + // Compute the block size and grid size to keep all cores busy + const int BX=this->block_size(); + int eflag, vflag; + if (_eflag) + eflag=1; + else + eflag=0; + + if (_vflag) + vflag=1; + else + vflag=0; + + int GX=static_cast(ceil(static_cast(this->ans->inum())/ + (BX/this->_threads_per_atom))); + + int ainum=this->ans->inum(); + int nbor_pitch=this->nbor->nbor_pitch(); + this->time_pair.start(); + if (shared_types) { + this->k_pair_fast.set_size(GX,BX); + this->k_pair_fast.run(&this->atom->dev_x.begin(), &lj1.begin(), + &lj3.begin(), &sp_cl.begin(), + &this->nbor->dev_nbor.begin(), + &this->_nbor_data->begin(), + &this->ans->dev_ans.begin(), + &this->ans->dev_engv.begin(), &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->dev_q.begin(), + &_cut_coulsq, &_qqrd2e, &_g_ewald, + &this->_threads_per_atom); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->dev_x.begin(), &lj1.begin(), &lj3.begin(), + &_lj_types, &sp_cl.begin(), &this->nbor->dev_nbor.begin(), + &this->_nbor_data->begin(), &this->ans->dev_ans.begin(), + &this->ans->dev_engv.begin(), &eflag, &vflag, &ainum, + &nbor_pitch, &this->atom->dev_q.begin(), &_cut_coulsq, + &_qqrd2e, &_g_ewald, &this->_threads_per_atom); + } + this->time_pair.stop(); +} + +template class CL_GPU_Memory; diff --git a/lib/gpu/coul_long_gpu_memory.h b/lib/gpu/coul_long_gpu_memory.h new file mode 100644 index 0000000000..04914a2514 --- /dev/null +++ b/lib/gpu/coul_long_gpu_memory.h @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------- + 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: Mike Brown (ORNL), brownw@ornl.gov +------------------------------------------------------------------------- */ + +#ifndef CL_GPU_MEMORY_H +#define CL_GPU_MEMORY_H + +#include "charge_gpu_memory.h" + +template +class CL_GPU_Memory : public ChargeGPUMemory { + public: + CL_GPU_Memory(); + ~CL_GPU_Memory(); + + /// Clear any previous data and set up for a new LAMMPS run + /** \param max_nbors initial number of rows in the neighbor matrix + * \param cell_size cutoff + skin + * \param gpu_split fraction of particles handled by device + * + * Returns: + * - 0 if successfull + * - -1 if fix gpu not found + * - -3 if there is an out of memory error + * - -4 if the GPU library was not compiled for GPU + * - -5 Double precision is not supported on card **/ + int init(const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *screen, + const double host_cut_coulsq, double *host_special_coul, + const double qqrd2e, const double g_ewald); + + /// Clear all host and device data + /** \note This is called at the beginning of the init() routine **/ + void clear(); + + /// Returns memory usage on device per atom + int bytes_per_atom(const int max_nbors) const; + + /// Total host memory used by library for pair style + double host_memory_usage() const; + + // --------------------------- TYPE DATA -------------------------- + + /// lj1 dummy + UCL_D_Vec lj1; + /// lj3 dummy + UCL_D_Vec lj3; + /// Special Coul values [0-3] + UCL_D_Vec sp_cl; + + /// If atom type constants fit in shared memory, use fast kernels + bool shared_types; + + /// Number of atom types + int _lj_types; + + numtyp _cut_coulsq, _qqrd2e, _g_ewald; + + private: + bool _allocated; + void loop(const bool _eflag, const bool _vflag); +}; + +#endif + diff --git a/potentials/CH.airebo b/potentials/CH.airebo index 0776baebb8..de6970b442 100644 --- a/potentials/CH.airebo +++ b/potentials/CH.airebo @@ -58,10 +58,10 @@ 0.32 bLJmin_HH 0.81 bLJmax_CC 0.9 bLJmax_CH -0.42 bLJmax_HH -0.0028437324 epsilon_CC -0.0020639767 epsilon_CH -0.0014994226 epsilon_HH +0.42 bLJmax_HH +0.002843732471143 epsilon_CC +0.002064935027177 epsilon_CH +0.001499422575693 epsilon_HH 3.4 sigma_CC 3.025 sigma_CH 2.65 sigma_HH diff --git a/potentials/Si.edip b/potentials/Si.edip new file mode 100644 index 0000000000..f18ba71935 --- /dev/null +++ b/potentials/Si.edip @@ -0,0 +1,24 @@ +# EDIP parameters for various elements and mixtures +# multiple entries can be added to this file, LAMMPS reads the ones it needs +# these entries are in LAMMPS "metal" units + +# format of a single entry (one or more lines) +# +# element 1, element 2, element 3, +# A B cutoffA cutoffC alpha beta eta +# gamma lambda mu rho sigma Q0 +# u1 u2 u3 u4 +# +# units for each parameters: +# A , lambda are in eV +# B, cutoffA, cutoffC, gamma, sigma are in Angstrom +# alpha, beta, eta, mu, rho, Q0, u1-u4 are pure numbers + +# Here are the original parameters in metal units, for Silicon from: +# J. F. Justo, M. Z. Bazant, E. Kaxiras, V. V. Bulatov, S. Yip +# Phys. Rev. B 58, 2539 (1998) +# + +Si Si Si 7.9821730 1.5075463 3.1213820 2.5609104 3.1083847 0.0070975 0.2523244 + 1.1247945 1.4533108 0.6966326 1.2085196 0.5774108 312.1341346 + -0.165799 32.557 0.286198 0.66 diff --git a/src/ASPHERE/Install.sh b/src/ASPHERE/Install.sh index a494ae63d7..aca41e02b9 100644 --- a/src/ASPHERE/Install.sh +++ b/src/ASPHERE/Install.sh @@ -8,9 +8,14 @@ if (test $1 = 1) then cp fix_nph_asphere.cpp .. cp fix_npt_asphere.cpp .. cp fix_nve_asphere.cpp .. + cp fix_nve_asphere_noforce.cpp .. + cp fix_nve_line.cpp .. + cp fix_nve_tri.cpp .. cp fix_nvt_asphere.cpp .. cp pair_gayberne.cpp .. + cp pair_line_lj.cpp .. cp pair_resquared.cpp .. + cp pair_tri_lj.cpp .. cp compute_erotate_asphere.h .. cp compute_temp_asphere.h .. @@ -18,9 +23,14 @@ if (test $1 = 1) then cp fix_nph_asphere.h .. cp fix_npt_asphere.h .. cp fix_nve_asphere.h .. + cp fix_nve_asphere_noforce.h .. + cp fix_nve_line.h .. + cp fix_nve_tri.h .. cp fix_nvt_asphere.h .. cp pair_gayberne.h .. + cp pair_line_lj.h .. cp pair_resquared.h .. + cp pair_tri_lj.h .. elif (test $1 = 0) then @@ -30,9 +40,14 @@ elif (test $1 = 0) then rm -f ../fix_nph_asphere.cpp rm -f ../fix_npt_asphere.cpp rm -f ../fix_nve_asphere.cpp + rm -f ../fix_nve_asphere_noforce.cpp + rm -f ../fix_nve_line.cpp + rm -f ../fix_nve_tri.cpp rm -f ../fix_nvt_asphere.cpp rm -f ../pair_gayberne.cpp + rm -f ../pair_line_lj.cpp rm -f ../pair_resquared.cpp + rm -f ../pair_tri_lj.cpp rm -f ../compute_erotate_asphere.h rm -f ../compute_temp_asphere.h @@ -40,8 +55,13 @@ elif (test $1 = 0) then rm -f ../fix_nph_asphere.h rm -f ../fix_npt_asphere.h rm -f ../fix_nve_asphere.h + rm -f ../fix_nve_asphere_noforce.h + rm -f ../fix_nve_line.h + rm -f ../fix_nve_tri.h rm -f ../fix_nvt_asphere.h rm -f ../pair_gayberne.h + rm -f ../pair_line_lj.h rm -f ../pair_resquared.h + rm -f ../pair_tri_lj.h fi diff --git a/src/ASPHERE/compute_erotate_asphere.cpp b/src/ASPHERE/compute_erotate_asphere.cpp index 31d500c4a3..a18b62c1f1 100644 --- a/src/ASPHERE/compute_erotate_asphere.cpp +++ b/src/ASPHERE/compute_erotate_asphere.cpp @@ -16,6 +16,8 @@ #include "math_extra.h" #include "atom.h" #include "atom_vec_ellipsoid.h" +#include "atom_vec_line.h" +#include "atom_vec_tri.h" #include "update.h" #include "force.h" #include "memory.h" @@ -29,16 +31,19 @@ ComputeERotateAsphere:: ComputeERotateAsphere(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute erotate/asphere command"); + if (narg != 3) error->all(FLERR,"Illegal compute erotate/asphere command"); scalar_flag = 1; extscalar = 1; // error check - avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - if (!avec) - error->all("Compute erotate/asphere requires atom style ellipsoid"); + avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + avec_line = (AtomVecLine *) atom->style_match("line"); + avec_tri = (AtomVecTri *) atom->style_match("tri"); + if (!avec_ellipsoid && !avec_line && !avec_tri) + error->all(FLERR,"Compute erotate/asphere requires " + "atom style ellipsoid or line or tri"); } /* ---------------------------------------------------------------------- */ @@ -49,13 +54,21 @@ void ComputeERotateAsphere::init() // no point particles allowed, spherical is OK int *ellipsoid = atom->ellipsoid; + int *line = atom->line; + int *tri = atom->tri; int *mask = atom->mask; int nlocal = atom->nlocal; + int flag; for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit) - if (ellipsoid[i] < 0) - error->one("Compute erotate/asphere requires extended particles"); + if (mask[i] & groupbit) { + flag = 0; + if (ellipsoid && ellipsoid[i] >= 0) flag = 1; + if (line && line[i] >= 0) flag = 1; + if (tri && tri[i] >= 0) flag = 1; + if (!flag) + error->one(FLERR,"Compute erotate/asphere requires extended particles"); + } pfactor = 0.5 * force->mvv2e; } @@ -66,8 +79,16 @@ double ComputeERotateAsphere::compute_scalar() { invoked_scalar = update->ntimestep; - AtomVecEllipsoid::Bonus *bonus = avec->bonus; + AtomVecEllipsoid::Bonus *ebonus; + if (avec_ellipsoid) ebonus = avec_ellipsoid->bonus; + AtomVecLine::Bonus *lbonus; + if (avec_line) lbonus = avec_line->bonus; + AtomVecTri::Bonus *tbonus; + if (avec_tri) tbonus = avec_tri->bonus; int *ellipsoid = atom->ellipsoid; + int *line = atom->line; + int *tri = atom->tri; + double **omega = atom->omega; double **angmom = atom->angmom; double *rmass = atom->rmass; int *mask = atom->mask; @@ -76,6 +97,7 @@ double ComputeERotateAsphere::compute_scalar() // sum rotational energy for each particle // no point particles since divide by inertia + double length; double *shape,*quat; double wbody[3],inertia[3]; double rot[3][3]; @@ -83,28 +105,54 @@ double ComputeERotateAsphere::compute_scalar() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { + if (ellipsoid && ellipsoid[i] >= 0) { + shape = ebonus[ellipsoid[i]].shape; + quat = ebonus[ellipsoid[i]].quat; - shape = bonus[ellipsoid[i]].shape; - quat = bonus[ellipsoid[i]].quat; + // principal moments of inertia + + inertia[0] = rmass[i] * (shape[1]*shape[1]+shape[2]*shape[2]) / 5.0; + inertia[1] = rmass[i] * (shape[0]*shape[0]+shape[2]*shape[2]) / 5.0; + inertia[2] = rmass[i] * (shape[0]*shape[0]+shape[1]*shape[1]) / 5.0; + + // wbody = angular velocity in body frame + + MathExtra::quat_to_mat(quat,rot); + MathExtra::transpose_matvec(rot,angmom[i],wbody); + wbody[0] /= inertia[0]; + wbody[1] /= inertia[1]; + wbody[2] /= inertia[2]; + + erotate += inertia[0]*wbody[0]*wbody[0] + + inertia[1]*wbody[1]*wbody[1] + inertia[2]*wbody[2]*wbody[2]; - // principal moments of inertia + } else if (line && line[i] >= 0) { + length = lbonus[line[i]].length; - inertia[0] = rmass[i] * (shape[1]*shape[1]+shape[2]*shape[2]) / 5.0; - inertia[1] = rmass[i] * (shape[0]*shape[0]+shape[2]*shape[2]) / 5.0; - inertia[2] = rmass[i] * (shape[0]*shape[0]+shape[1]*shape[1]) / 5.0; + erotate += (omega[i][0]*omega[i][0] + omega[i][1]*omega[i][1] + + omega[i][2]*omega[i][2]) * length*length*rmass[i] / 12.0; - // wbody = angular velocity in body frame + } else if (tri && tri[i] >= 0) { - MathExtra::quat_to_mat(quat,rot); - MathExtra::transpose_matvec(rot,angmom[i],wbody); - wbody[0] /= inertia[0]; - wbody[1] /= inertia[1]; - wbody[2] /= inertia[2]; - - erotate += inertia[0]*wbody[0]*wbody[0] + - inertia[1]*wbody[1]*wbody[1] + inertia[2]*wbody[2]*wbody[2]; + // principal moments of inertia + + inertia[0] = tbonus[tri[i]].inertia[0]; + inertia[1] = tbonus[tri[i]].inertia[1]; + inertia[2] = tbonus[tri[i]].inertia[2]; + + // wbody = angular velocity in body frame + + MathExtra::quat_to_mat(tbonus[tri[i]].quat,rot); + MathExtra::transpose_matvec(rot,angmom[i],wbody); + wbody[0] /= inertia[0]; + wbody[1] /= inertia[1]; + wbody[2] /= inertia[2]; + + erotate += inertia[0]*wbody[0]*wbody[0] + + inertia[1]*wbody[1]*wbody[1] + inertia[2]*wbody[2]*wbody[2]; + } } - + MPI_Allreduce(&erotate,&scalar,1,MPI_DOUBLE,MPI_SUM,world); scalar *= pfactor; return scalar; diff --git a/src/ASPHERE/compute_erotate_asphere.h b/src/ASPHERE/compute_erotate_asphere.h index 0e3ae271d7..9274425795 100644 --- a/src/ASPHERE/compute_erotate_asphere.h +++ b/src/ASPHERE/compute_erotate_asphere.h @@ -32,7 +32,9 @@ class ComputeERotateAsphere : public Compute { private: double pfactor; - class AtomVecEllipsoid *avec; + class AtomVecEllipsoid *avec_ellipsoid; + class AtomVecLine *avec_line; + class AtomVecTri *avec_tri; }; } diff --git a/src/ASPHERE/compute_temp_asphere.cpp b/src/ASPHERE/compute_temp_asphere.cpp index b4fb8c79f8..69139369cf 100755 --- a/src/ASPHERE/compute_temp_asphere.cpp +++ b/src/ASPHERE/compute_temp_asphere.cpp @@ -41,7 +41,7 @@ enum{ROTATE,ALL}; ComputeTempAsphere::ComputeTempAsphere(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 3) error->all("Illegal compute temp/asphere command"); + if (narg < 3) error->all(FLERR,"Illegal compute temp/asphere command"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -56,19 +56,19 @@ ComputeTempAsphere::ComputeTempAsphere(LAMMPS *lmp, int narg, char **arg) : int iarg = 3; while (iarg < narg) { if (strcmp(arg[iarg],"bias") == 0) { - if (iarg+2 > narg) error->all("Illegal compute temp/asphere command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/asphere command"); tempbias = 1; int n = strlen(arg[iarg+1]) + 1; id_bias = new char[n]; strcpy(id_bias,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"dof") == 0) { - if (iarg+2 > narg) error->all("Illegal compute temp/asphere command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/asphere command"); if (strcmp(arg[iarg+1],"rotate") == 0) mode = ROTATE; else if (strcmp(arg[iarg+1],"all") == 0) mode = ALL; - else error->all("Illegal compute temp/asphere command"); + else error->all(FLERR,"Illegal compute temp/asphere command"); iarg += 2; - } else error->all("Illegal compute temp/asphere command"); + } else error->all(FLERR,"Illegal compute temp/asphere command"); } vector = new double[6]; @@ -77,7 +77,7 @@ ComputeTempAsphere::ComputeTempAsphere(LAMMPS *lmp, int narg, char **arg) : avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); if (!avec) - error->all("Compute temp/asphere requires atom style ellipsoid"); + error->all(FLERR,"Compute temp/asphere requires atom style ellipsoid"); } /* ---------------------------------------------------------------------- */ @@ -101,18 +101,18 @@ void ComputeTempAsphere::init() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) if (ellipsoid[i] < 0) - error->one("Compute temp/asphere requires extended particles"); + error->one(FLERR,"Compute temp/asphere requires extended particles"); if (tempbias) { int i = modify->find_compute(id_bias); - if (i < 0) error->all("Could not find compute ID for temperature bias"); + if (i < 0) error->all(FLERR,"Could not find compute ID for temperature bias"); tbias = modify->compute[i]; if (tbias->tempflag == 0) - error->all("Bias compute does not calculate temperature"); + error->all(FLERR,"Bias compute does not calculate temperature"); if (tbias->tempbias == 0) - error->all("Bias compute does not calculate a velocity bias"); + error->all(FLERR,"Bias compute does not calculate a velocity bias"); if (tbias->igroup != igroup) - error->all("Bias compute group does not match compute group"); + error->all(FLERR,"Bias compute group does not match compute group"); tbias->init(); if (strcmp(tbias->style,"temp/region") == 0) tempbias = 2; else tempbias = 1; diff --git a/src/ASPHERE/fix_nh_asphere.cpp b/src/ASPHERE/fix_nh_asphere.cpp index bc58472bb5..3d91262345 100644 --- a/src/ASPHERE/fix_nh_asphere.cpp +++ b/src/ASPHERE/fix_nh_asphere.cpp @@ -35,7 +35,7 @@ FixNHAsphere::FixNHAsphere(LAMMPS *lmp, int narg, char **arg) : { avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); if (!avec) - error->all("Compute nvt/nph/npt asphere requires atom style ellipsoid"); + error->all(FLERR,"Compute nvt/nph/npt asphere requires atom style ellipsoid"); } /* ---------------------------------------------------------------------- */ @@ -52,7 +52,7 @@ void FixNHAsphere::init() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) if (ellipsoid[i] < 0) - error->one("Fix nvt/nph/npt asphere requires extended particles"); + error->one(FLERR,"Fix nvt/nph/npt asphere requires extended particles"); FixNH::init(); } diff --git a/src/ASPHERE/fix_nph_asphere.cpp b/src/ASPHERE/fix_nph_asphere.cpp index 025137def2..094e0f06a6 100644 --- a/src/ASPHERE/fix_nph_asphere.cpp +++ b/src/ASPHERE/fix_nph_asphere.cpp @@ -24,9 +24,9 @@ FixNPHAsphere::FixNPHAsphere(LAMMPS *lmp, int narg, char **arg) : FixNHAsphere(lmp, narg, arg) { if (tstat_flag) - error->all("Temperature control can not be used with fix nph/asphere"); + error->all(FLERR,"Temperature control can not be used with fix nph/asphere"); if (!pstat_flag) - error->all("Pressure control must be used with fix nph/asphere"); + error->all(FLERR,"Pressure control must be used with fix nph/asphere"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/ASPHERE/fix_npt_asphere.cpp b/src/ASPHERE/fix_npt_asphere.cpp index 44ed01ea45..2c3c70e948 100755 --- a/src/ASPHERE/fix_npt_asphere.cpp +++ b/src/ASPHERE/fix_npt_asphere.cpp @@ -24,9 +24,9 @@ FixNPTAsphere::FixNPTAsphere(LAMMPS *lmp, int narg, char **arg) : FixNHAsphere(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix npt/asphere"); + error->all(FLERR,"Temperature control must be used with fix npt/asphere"); if (!pstat_flag) - error->all("Pressure control must be used with fix npt/asphere"); + error->all(FLERR,"Pressure control must be used with fix npt/asphere"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/ASPHERE/fix_nve_asphere.cpp b/src/ASPHERE/fix_nve_asphere.cpp index e078d2fb75..ac3abea6bc 100755 --- a/src/ASPHERE/fix_nve_asphere.cpp +++ b/src/ASPHERE/fix_nve_asphere.cpp @@ -38,14 +38,14 @@ FixNVEAsphere::FixNVEAsphere(LAMMPS *lmp, int narg, char **arg) : { avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); if (!avec) - error->all("Compute nve/asphere requires atom style ellipsoid"); + error->all(FLERR,"Compute nve/asphere requires atom style ellipsoid"); } /* ---------------------------------------------------------------------- */ void FixNVEAsphere::init() { - // check that all particles are finite-size + // check that all particles are finite-size ellipsoids // no point particles allowed, spherical is OK int *ellipsoid = atom->ellipsoid; @@ -55,7 +55,7 @@ void FixNVEAsphere::init() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) if (ellipsoid[i] < 0) - error->one("Fix nve/asphere requires extended particles"); + error->one(FLERR,"Fix nve/asphere requires extended particles"); FixNVE::init(); } diff --git a/src/ASPHERE/fix_nve_asphere_noforce.cpp b/src/ASPHERE/fix_nve_asphere_noforce.cpp new file mode 100644 index 0000000000..42793723b5 --- /dev/null +++ b/src/ASPHERE/fix_nve_asphere_noforce.cpp @@ -0,0 +1,109 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "string.h" +#include "stdlib.h" +#include "fix_nve_asphere_noforce.h" +#include "math_extra.h" +#include "atom.h" +#include "atom_vec_ellipsoid.h" +#include "group.h" +#include "update.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +FixNVEAsphereNoforce::FixNVEAsphereNoforce(LAMMPS *lmp, int narg, char **arg) : + FixNVENoforce(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Illegal fix nve/asphere/noforce command"); + + time_integrate = 1; + + // error check + + avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + if (!atom->ellipsoid_flag) + error->all(FLERR,"Fix nve/asphere/noforce requires atom style ellipsoid"); +} + +/* ---------------------------------------------------------------------- */ + +void FixNVEAsphereNoforce::init() +{ + FixNVENoforce::init(); + dtq = 0.5 * dtv; + + // check that all particles are finite-size ellipsoids + // no point particles allowed, spherical is OK + + int *ellipsoid = atom->ellipsoid; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) + if (ellipsoid[i] < 0) + error->one(FLERR,"Fix nve/asphere/noforce requires extended particles"); +} + +/* ---------------------------------------------------------------------- */ + +void FixNVEAsphereNoforce::initial_integrate(int vflag) +{ + AtomVecEllipsoid::Bonus *bonus; + if (avec) bonus = avec->bonus; + double **x = atom->x; + double **v = atom->v; + double **angmom = atom->angmom; + double *rmass = atom->rmass; + int *ellipsoid = atom->ellipsoid; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + double *shape,*quat; + double inertia[3],omega[3]; + + // update positions and quaternions for all particles + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + + x[i][0] += dtv * v[i][0]; + x[i][1] += dtv * v[i][1]; + x[i][2] += dtv * v[i][2]; + + // principal moments of inertia + + shape = bonus[ellipsoid[i]].shape; + quat = bonus[ellipsoid[i]].quat; + + inertia[0] = rmass[i] * (shape[1]*shape[1]+shape[2]*shape[2]) / 5.0; + inertia[1] = rmass[i] * (shape[0]*shape[0]+shape[2]*shape[2]) / 5.0; + inertia[2] = rmass[i] * (shape[0]*shape[0]+shape[1]*shape[1]) / 5.0; + + // compute omega at 1/2 step from angmom at 1/2 step and current q + // update quaternion a full step via Richardson iteration + // returns new normalized quaternion + + MathExtra::mq_to_omega(angmom[i],quat,inertia,omega); + MathExtra::richardson(quat,angmom[i],omega,inertia,dtq); + } + } +} diff --git a/src/ASPHERE/fix_nve_asphere_noforce.h b/src/ASPHERE/fix_nve_asphere_noforce.h new file mode 100755 index 0000000000..c1708ff7bb --- /dev/null +++ b/src/ASPHERE/fix_nve_asphere_noforce.h @@ -0,0 +1,41 @@ +/* ---------------------------------------------------------------------- + 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(nve/asphere/noforce,FixNVEAsphereNoforce) + +#else + +#ifndef LMP_FIX_NVE_ASPHERE_NOFORCE_H +#define LMP_FIX_NVE_ASPHERE_NOFORCE_H + +#include "fix_nve_noforce.h" + +namespace LAMMPS_NS { + +class FixNVEAsphereNoforce : public FixNVENoforce { + public: + FixNVEAsphereNoforce(class LAMMPS *, int, char **); + void initial_integrate(int); + void init(); + + private: + double dtq; + class AtomVecEllipsoid *avec; +}; + +} + +#endif +#endif diff --git a/src/ASPHERE/fix_nve_line.cpp b/src/ASPHERE/fix_nve_line.cpp new file mode 100644 index 0000000000..682119c6a1 --- /dev/null +++ b/src/ASPHERE/fix_nve_line.cpp @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "stdio.h" +#include "string.h" +#include "fix_nve_line.h" +#include "atom.h" +#include "atom_vec_line.h" +#include "domain.h" +#include "math_const.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define INERTIA (1.0/12.0) // moment of inertia prefactor for line segment + +/* ---------------------------------------------------------------------- */ + +FixNVELine::FixNVELine(LAMMPS *lmp, int narg, char **arg) : + FixNVE(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Illegal fix nve/line command"); + + time_integrate = 1; + + MINUSPI = -MY_PI; + TWOPI = 2.0*MY_PI; + + // error checks + + avec = (AtomVecLine *) atom->style_match("line"); + if (!avec) error->all(FLERR,"Fix nve/line requires atom style line"); +} + +/* ---------------------------------------------------------------------- */ + +int FixNVELine::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + mask |= INITIAL_INTEGRATE_RESPA; + mask |= FINAL_INTEGRATE_RESPA; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixNVELine::init() +{ + int i,itype; + + if (domain->dimension != 2) + error->all(FLERR,"Fix nve/line can only be used for 2d simulations"); + + // check that all particles are line segments + // no point particles allowed + + int *line = atom->line; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (line[i] < 0) error->one(FLERR,"Fix nve/line requires line particles"); + } + + FixNVE::init(); +} + +/* ---------------------------------------------------------------------- */ + +void FixNVELine::initial_integrate(int vflag) +{ + double dtfm,dtirotate,delx,dely,length,theta; + + AtomVecLine::Bonus *bonus = avec->bonus; + int *line = atom->line; + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double **omega = atom->omega; + double **torque = atom->torque; + double *rmass = atom->rmass; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + // set timestep here since dt may have changed or come via rRESPA + + double dtfrotate = dtf / INERTIA; + + // update v,x,omega,theta for all particles + // d_omega/dt = torque / inertia + // bound theta by -PI to PI + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + dtfm = dtf / rmass[i]; + v[i][0] += dtfm * f[i][0]; + v[i][1] += dtfm * f[i][1]; + x[i][0] += dtv * v[i][0]; + x[i][1] += dtv * v[i][1]; + + length = bonus[line[i]].length; + theta = bonus[line[i]].theta; + dtirotate = dtfrotate / (length*length*rmass[i]); + omega[i][2] += dtirotate * torque[i][2]; + theta += dtv * omega[i][2]; + while (theta <= MINUSPI) theta += TWOPI; + while (theta > MY_PI) theta -= TWOPI; + bonus[line[i]].theta = theta; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNVELine::final_integrate() +{ + double dtfm,dtirotate,length; + + AtomVecLine::Bonus *bonus = avec->bonus; + int *line = atom->line; + double **v = atom->v; + double **f = atom->f; + double **omega = atom->omega; + double **torque = atom->torque; + double *rmass = atom->rmass; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + // set timestep here since dt may have changed or come via rRESPA + + double dtfrotate = dtf / INERTIA; + + // update v,omega for all particles + // d_omega/dt = torque / inertia + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + dtfm = dtf / rmass[i]; + v[i][0] += dtfm * f[i][0]; + v[i][1] += dtfm * f[i][1]; + + length = bonus[line[i]].length; + dtirotate = dtfrotate / (length*length*rmass[i]); + omega[i][2] += dtirotate * torque[i][2]; + } +} diff --git a/src/ASPHERE/fix_nve_line.h b/src/ASPHERE/fix_nve_line.h new file mode 100644 index 0000000000..7d6e962044 --- /dev/null +++ b/src/ASPHERE/fix_nve_line.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------- + 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(nve/line,FixNVELine) + +#else + +#ifndef LMP_FIX_NVE_LINE_H +#define LMP_FIX_NVE_LINE_H + +#include "fix_nve.h" + +namespace LAMMPS_NS { + +class FixNVELine : public FixNVE { + public: + FixNVELine(class LAMMPS *, int, char **); + ~FixNVELine() {} + int setmask(); + void init(); + void initial_integrate(int); + void final_integrate(); + + private: + double MINUSPI,TWOPI; + class AtomVecLine *avec; +}; + +} + +#endif +#endif diff --git a/src/ASPHERE/fix_nve_tri.cpp b/src/ASPHERE/fix_nve_tri.cpp new file mode 100644 index 0000000000..ca83afcdbb --- /dev/null +++ b/src/ASPHERE/fix_nve_tri.cpp @@ -0,0 +1,156 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "stdio.h" +#include "string.h" +#include "fix_nve_tri.h" +#include "math_extra.h" +#include "atom.h" +#include "atom_vec_tri.h" +#include "domain.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +FixNVETri::FixNVETri(LAMMPS *lmp, int narg, char **arg) : + FixNVE(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Illegal fix nve/tri command"); + + time_integrate = 1; + + // error checks + + avec = (AtomVecTri *) atom->style_match("tri"); + if (!avec) error->all(FLERR,"Fix nve/tri requires atom style tri"); +} + +/* ---------------------------------------------------------------------- */ + +int FixNVETri::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + mask |= INITIAL_INTEGRATE_RESPA; + mask |= FINAL_INTEGRATE_RESPA; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixNVETri::init() +{ + int i,itype; + + if (domain->dimension != 3) + error->all(FLERR,"Fix nve/line can only be used for 3d simulations"); + + // check that all particles are triangles + // no point particles allowed + + int *tri = atom->tri; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (tri[i] < 0) error->one(FLERR,"Fix nve/tri requires tri particles"); + } + + FixNVE::init(); +} + +/* ---------------------------------------------------------------------- */ + +void FixNVETri::initial_integrate(int vflag) +{ + double dtfm; + double omega[3]; + + AtomVecTri::Bonus *bonus = avec->bonus; + int *tri = atom->tri; + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double **angmom = atom->angmom; + double **torque = atom->torque; + double *rmass = atom->rmass; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + // set timestep here since dt may have changed or come via rRESPA + + dtq = 0.5 * dtv; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + dtfm = dtf / rmass[i]; + v[i][0] += dtfm * f[i][0]; + v[i][1] += dtfm * f[i][1]; + v[i][2] += dtfm * f[i][2]; + x[i][0] += dtv * v[i][0]; + x[i][1] += dtv * v[i][1]; + x[i][2] += dtv * v[i][2]; + + // update angular momentum by 1/2 step + + angmom[i][0] += dtf * torque[i][0]; + angmom[i][1] += dtf * torque[i][1]; + angmom[i][2] += dtf * torque[i][2]; + + // compute omega at 1/2 step from angmom at 1/2 step and current q + // update quaternion a full step via Richardson iteration + // returns new normalized quaternion + + MathExtra::mq_to_omega(angmom[i],bonus[tri[i]].quat, + bonus[tri[i]].inertia,omega); + MathExtra::richardson(bonus[tri[i]].quat,angmom[i],omega, + bonus[tri[i]].inertia,dtq); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNVETri::final_integrate() +{ + double dtfm; + + double **v = atom->v; + double **f = atom->f; + double **angmom = atom->angmom; + double **torque = atom->torque; + double *rmass = atom->rmass; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + // update v,omega for all particles + // d_omega/dt = torque / inertia + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + dtfm = dtf / rmass[i]; + v[i][0] += dtfm * f[i][0]; + v[i][1] += dtfm * f[i][1]; + v[i][2] += dtfm * f[i][2]; + + angmom[i][0] += dtf * torque[i][0]; + angmom[i][1] += dtf * torque[i][1]; + angmom[i][2] += dtf * torque[i][2]; + } +} diff --git a/src/ASPHERE/fix_nve_tri.h b/src/ASPHERE/fix_nve_tri.h new file mode 100644 index 0000000000..e268b6b1e6 --- /dev/null +++ b/src/ASPHERE/fix_nve_tri.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------- + 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(nve/tri,FixNVETri) + +#else + +#ifndef LMP_FIX_NVE_TRI_H +#define LMP_FIX_NVE_TRI_H + +#include "fix_nve.h" + +namespace LAMMPS_NS { + +class FixNVETri : public FixNVE { + public: + FixNVETri(class LAMMPS *, int, char **); + ~FixNVETri() {} + int setmask(); + void init(); + void initial_integrate(int); + void final_integrate(); + + private: + double dtq; + class AtomVecTri *avec; +}; + +} + +#endif +#endif diff --git a/src/ASPHERE/fix_nvt_asphere.cpp b/src/ASPHERE/fix_nvt_asphere.cpp index 4137941be9..8578da033e 100755 --- a/src/ASPHERE/fix_nvt_asphere.cpp +++ b/src/ASPHERE/fix_nvt_asphere.cpp @@ -25,9 +25,9 @@ FixNVTAsphere::FixNVTAsphere(LAMMPS *lmp, int narg, char **arg) : FixNHAsphere(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix nvt/asphere"); + error->all(FLERR,"Temperature control must be used with fix nvt/asphere"); if (pstat_flag) - error->all("Pressure control can not be used with fix nvt/asphere"); + error->all(FLERR,"Pressure control can not be used with fix nvt/asphere"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/ASPHERE/pair_gayberne.cpp b/src/ASPHERE/pair_gayberne.cpp index 97a7bc56b3..e3ad48491b 100755 --- a/src/ASPHERE/pair_gayberne.cpp +++ b/src/ASPHERE/pair_gayberne.cpp @@ -31,19 +31,14 @@ #include "memory.h" #include "error.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - using namespace LAMMPS_NS; -enum{SPHERE_SPHERE,SPHERE_ELLIPSE,ELLIPSE_SPHERE,ELLIPSE_ELLIPSE}; - /* ---------------------------------------------------------------------- */ PairGayBerne::PairGayBerne(LAMMPS *lmp) : Pair(lmp) { avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - if (!avec) error->all("Pair gayberne requires atom style ellipsoid"); + if (!avec) error->all(FLERR,"Pair gayberne requires atom style ellipsoid"); single_enable = 0; } @@ -262,7 +257,7 @@ void PairGayBerne::allocate() void PairGayBerne::settings(int narg, char **arg) { - if (narg != 4) error->all("Illegal pair_style command"); + if (narg != 4) error->all(FLERR,"Illegal pair_style command"); gamma = force->numeric(arg[0]); upsilon = force->numeric(arg[1])/2.0; @@ -286,7 +281,7 @@ void PairGayBerne::settings(int narg, char **arg) void PairGayBerne::coeff(int narg, char **arg) { if (narg < 10 || narg > 11) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -330,7 +325,7 @@ void PairGayBerne::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } @@ -348,7 +343,7 @@ void PairGayBerne::init_style() for (int i = 1; i <= atom->ntypes; i++) { if (!atom->shape_consistency(i,shape1[i][0],shape1[i][1],shape1[i][2])) - error->all("Pair gayberne requires atoms with same type have same shape"); + error->all(FLERR,"Pair gayberne requires atoms with same type have same shape"); if (shape1[i][0] == 0.0) shape1[i][0] = shape1[i][1] = shape1[i][2] = 1.0; shape2[i][0] = shape1[i][0]*shape1[i][0]; @@ -366,7 +361,7 @@ void PairGayBerne::init_style() double PairGayBerne::init_one(int i, int j) { if (setwell[i] == 0 || setwell[j] == 0) - error->all("Pair gayberne epsilon a,b,c coeffs are not all set"); + error->all(FLERR,"Pair gayberne epsilon a,b,c coeffs are not all set"); if (setflag[i][j] == 0) { epsilon[i][j] = mix_energy(epsilon[i][i],epsilon[j][j], @@ -545,7 +540,7 @@ double PairGayBerne::gayberne_analytic(const int i,const int j,double a1[3][3], MathExtra::plus3(g1,g2,g12); double kappa[3]; int ierror = MathExtra::mldivide3(g12,r12,kappa); - if (ierror) error->all("Bad matrix inversion in mldivide3"); + if (ierror) error->all(FLERR,"Bad matrix inversion in mldivide3"); // tempv = G12^-1*r12hat @@ -576,7 +571,7 @@ double PairGayBerne::gayberne_analytic(const int i,const int j,double a1[3][3], double iota[3]; MathExtra::plus3(b1,b2,b12); ierror = MathExtra::mldivide3(b12,r12,iota); - if (ierror) error->all("Bad matrix inversion in mldivide3"); + if (ierror) error->all(FLERR,"Bad matrix inversion in mldivide3"); // tempv = G12^-1*r12hat @@ -726,7 +721,7 @@ double PairGayBerne::gayberne_lj(const int i,const int j,double a1[3][3], g12[1][2] = g1[1][2]; g12[2][1] = g1[2][1]; double kappa[3]; int ierror = MathExtra::mldivide3(g12,r12,kappa); - if (ierror) error->all("Bad matrix inversion in mldivide3"); + if (ierror) error->all(FLERR,"Bad matrix inversion in mldivide3"); // tempv = G12^-1*r12hat @@ -762,7 +757,7 @@ double PairGayBerne::gayberne_lj(const int i,const int j,double a1[3][3], b12[0][2] = b1[0][2]; b12[2][0] = b1[2][0]; b12[1][2] = b1[1][2]; b12[2][1] = b1[2][1]; ierror = MathExtra::mldivide3(b12,r12,iota); - if (ierror) error->all("Bad matrix inversion in mldivide3"); + if (ierror) error->all(FLERR,"Bad matrix inversion in mldivide3"); // tempv = G12^-1*r12hat diff --git a/src/ASPHERE/pair_gayberne.h b/src/ASPHERE/pair_gayberne.h index ea699061cb..0923d6112e 100755 --- a/src/ASPHERE/pair_gayberne.h +++ b/src/ASPHERE/pair_gayberne.h @@ -39,6 +39,8 @@ class PairGayBerne : public Pair { void read_restart_settings(FILE *); protected: + enum{SPHERE_SPHERE,SPHERE_ELLIPSE,ELLIPSE_SPHERE,ELLIPSE_ELLIPSE}; + double cut_global; double **cut; diff --git a/src/ASPHERE/pair_line_lj.cpp b/src/ASPHERE/pair_line_lj.cpp new file mode 100644 index 0000000000..f875158e6e --- /dev/null +++ b/src/ASPHERE/pair_line_lj.cpp @@ -0,0 +1,446 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "pair_line_lj.h" +#include "atom.h" +#include "atom_vec_line.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define DELTA 10000 + +/* ---------------------------------------------------------------------- */ + +PairLineLJ::PairLineLJ(LAMMPS *lmp) : Pair(lmp) +{ + avec = (AtomVecLine *) atom->style_match("line"); + if (!avec) error->all(FLERR,"Pair line/lj requires atom style line"); + + dmax = nmax = 0; + discrete = NULL; + dnum = dfirst = NULL; + + single_enable = 0; + restartinfo = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairLineLJ::~PairLineLJ() +{ + memory->sfree(discrete); + memory->destroy(dnum); + memory->destroy(dfirst); + + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairLineLJ::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + int ni,nj,npi,npj,ifirst,jfirst; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r6inv,term1,term2,sig,sig3,forcelj; + double xi[2],xj[2],fi[2],fj[2],dxi,dxj,dyi,dyj,ti,tj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **f = atom->f; + double **torque = atom->torque; + int *line = atom->line; + int *type = atom->type; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // grow discrete list if necessary and initialize + + if (nall > nmax) { + nmax = nall; + memory->destroy(dnum); + memory->destroy(dfirst); + memory->create(dnum,nall,"pair:dnum"); + memory->create(dfirst,nall,"pair:dfirst"); + } + for (i = 0; i < nall; i++) dnum[i] = 0; + ndiscrete = 0; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + 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]) continue; + + // line/line interactions = NxN particles + + evdwl = 0.0; + if (line[i] >= 0 && line[j] >= 0) { + if (dnum[i] == 0) discretize(i,sigma[itype][itype]); + npi = dnum[i]; + ifirst = dfirst[i]; + if (dnum[j] == 0) discretize(j,sigma[jtype][jtype]); + npj = dnum[j]; + jfirst = dfirst[j]; + + for (ni = 0; ni < npi; ni++) { + dxi = discrete[ifirst+ni].dx; + dyi = discrete[ifirst+ni].dy; + + for (nj = 0; nj < npj; nj++) { + dxj = discrete[jfirst+nj].dx; + dyj = discrete[jfirst+nj].dy; + + xi[0] = x[i][0] + dxi; + xi[1] = x[i][1] + dyi; + xj[0] = x[j][0] + dxj; + xj[1] = x[j][1] + dyj; + + delx = xi[0] - xj[0]; + dely = xi[1] - xj[1]; + rsq = delx*delx + dely*dely; + + sig = 0.5 * (discrete[ifirst+ni].sigma+discrete[jfirst+nj].sigma); + sig3 = sig*sig*sig; + term2 = 24.0*epsilon[itype][jtype] * sig3*sig3; + term1 = 2.0 * term2 * sig3*sig3; + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (term1*r6inv - term2); + fpair = forcelj*r2inv; + + if (eflag) evdwl += r6inv*(term1/12.0*r6inv-term2/6.0); + + fi[0] = delx*fpair; + fi[1] = dely*fpair; + f[i][0] += fi[0]; + f[i][1] += fi[1]; + torque[i][2] += dxi*fi[1] - dyi*fi[0]; + + if (newton_pair || j < nlocal) { + fj[0] = -delx*fpair; + fj[1] = -dely*fpair; + f[j][0] += fj[0]; + f[j][1] += fj[1]; + torque[j][2] += dxj*fj[1] - dyj*fj[0]; + } + } + } + + // line/particle interaction = Nx1 particles + // convert line into Np particles based on sigma and line length + + } else if (line[i] >= 0) { + if (dnum[i] == 0) discretize(i,sigma[itype][itype]); + npi = dnum[i]; + ifirst = dfirst[i]; + + for (ni = 0; ni < npi; ni++) { + dxi = discrete[ifirst+ni].dx; + dyi = discrete[ifirst+ni].dy; + + xi[0] = x[i][0] + dxi; + xi[1] = x[i][1] + dyi; + xj[0] = x[j][0]; + xj[1] = x[j][1]; + + delx = xi[0] - xj[0]; + dely = xi[1] - xj[1]; + rsq = delx*delx + dely*dely; + + sig = 0.5 * (discrete[ifirst+ni].sigma+sigma[jtype][jtype]); + sig3 = sig*sig*sig; + term2 = 24.0*epsilon[itype][jtype] * sig3*sig3; + term1 = 2.0 * term2 * sig3*sig3; + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (term1*r6inv - term2); + fpair = forcelj*r2inv; + + if (eflag) evdwl += r6inv*(term1/12.0*r6inv-term2/6.0); + + fi[0] = delx*fpair; + fi[1] = dely*fpair; + f[i][0] += fi[0]; + f[i][1] += fi[1]; + torque[i][2] += dxi*fi[1] - dyi*fi[0]; + + if (newton_pair || j < nlocal) { + fj[0] = -delx*fpair; + fj[1] = -dely*fpair; + f[j][0] += fj[0]; + f[j][1] += fj[1]; + } + } + + // particle/line interaction = Nx1 particles + // convert line into Np particles based on sigma and line length + + } else if (line[j] >= 0) { + if (dnum[j] == 0) discretize(j,sigma[jtype][jtype]); + npj = dnum[j]; + jfirst = dfirst[j]; + + for (nj = 0; nj < npj; nj++) { + dxj = discrete[jfirst+nj].dx; + dyj = discrete[jfirst+nj].dy; + + xi[0] = x[i][0]; + xi[1] = x[i][1]; + xj[0] = x[j][0] + dxj; + xj[1] = x[j][1] + dyj; + + delx = xi[0] - xj[0]; + dely = xi[1] - xj[1]; + rsq = delx*delx + dely*dely; + + sig = 0.5 * (sigma[itype][itype]+discrete[jfirst+nj].sigma); + sig3 = sig*sig*sig; + term2 = 24.0*epsilon[itype][jtype] * sig3*sig3; + term1 = 2.0 * term2 * sig3*sig3; + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (term1*r6inv - term2); + fpair = forcelj*r2inv; + + if (eflag) evdwl += r6inv*(term1/12.0*r6inv-term2/6.0); + + fi[0] = delx*fpair; + fi[1] = dely*fpair; + f[i][0] += fi[0]; + f[i][1] += fi[1]; + + if (newton_pair || j < nlocal) { + f[j][0] += fj[0]; + f[j][1] += fj[1]; + fj[0] = -delx*fpair; + fj[1] = -dely*fpair; + torque[j][2] += dxj*fj[1] - dyj*fj[0]; + } + } + + // particle/particle interaction = 1x1 particles + + } else { + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + fpair = forcelj*r2inv; + + if (eflag) + evdwl += r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]); + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + if (newton_pair || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + } + + if (evflag) ev_tally(i,j,nlocal,newton_pair, + evdwl,0.0,fpair,delx,dely,delz); + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairLineLJ::allocate() +{ + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq,n+1,n+1,"pair:cutsq"); + + memory->create(cut,n+1,n+1,"pair:cut"); + memory->create(epsilon,n+1,n+1,"pair:epsilon"); + memory->create(sigma,n+1,n+1,"pair:sigma"); + memory->create(lj1,n+1,n+1,"pair:lj1"); + memory->create(lj2,n+1,n+1,"pair:lj2"); + memory->create(lj3,n+1,n+1,"pair:lj3"); + memory->create(lj4,n+1,n+1,"pair:lj4"); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairLineLJ::settings(int narg, char **arg) +{ + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); + + cut_global = force->numeric(arg[0]); + + // reset cutoffs that have been explicitly set + + if (allocated) { + int i,j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i+1; j <= atom->ntypes; j++) + if (setflag[i][j]) cut[i][j] = cut_global; + } +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairLineLJ::coeff(int narg, char **arg) +{ + if (narg < 4 || narg > 5) + error->all(FLERR,"Incorrect args for pair coefficients"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(arg[0],atom->ntypes,ilo,ihi); + force->bounds(arg[1],atom->ntypes,jlo,jhi); + + double epsilon_one = force->numeric(arg[2]); + double sigma_one = force->numeric(arg[3]); + + double cut_one = cut_global; + if (narg == 5) cut_one = force->numeric(arg[4]); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + epsilon[i][j] = epsilon_one; + sigma[i][j] = sigma_one; + cut[i][j] = cut_one; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairLineLJ::init_one(int i, int j) +{ + if (setflag[i][j] == 0) { + epsilon[i][j] = mix_energy(epsilon[i][i],epsilon[j][j], + sigma[i][i],sigma[j][j]); + sigma[i][j] = mix_distance(sigma[i][i],sigma[j][j]); + cut[i][j] = mix_distance(cut[i][i],cut[j][j]); + } + + lj1[i][j] = 48.0 * epsilon[i][j] * pow(sigma[i][j],12.0); + lj2[i][j] = 24.0 * epsilon[i][j] * pow(sigma[i][j],6.0); + lj3[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],12.0); + lj4[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],6.0); + + epsilon[j][i] = epsilon[i][j]; + sigma[j][i] = sigma[i][j]; + lj1[j][i] = lj1[i][j]; + lj2[j][i] = lj2[i][j]; + lj3[j][i] = lj3[i][j]; + lj4[j][i] = lj4[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- + discretize line segment I into N sub-segments no more than sigma in length + store new discrete particles in Discrete list +------------------------------------------------------------------------- */ + +void PairLineLJ::discretize(int i, double sigma) +{ + AtomVecLine::Bonus *bonus = avec->bonus; + double length = bonus[atom->line[i]].length; + double theta = bonus[atom->line[i]].theta; + int n = static_cast (length/sigma) + 1; + dnum[i] = n; + dfirst[i] = ndiscrete; + + if (ndiscrete + n > dmax) { + dmax += DELTA; + discrete = (Discrete *) + memory->srealloc(discrete,dmax*sizeof(Discrete),"pair:discrete"); + } + + double *x = atom->x[i]; + sigma = length/n; + double delta; + + for (int m = 0; m < n; m++) { + delta = -0.5 + (2*m+1)/(2.0*n); + discrete[ndiscrete].dx = delta*length*cos(theta); + discrete[ndiscrete].dy = delta*length*sin(theta); + discrete[ndiscrete].sigma = sigma; + ndiscrete++; + } +} diff --git a/src/ASPHERE/pair_line_lj.h b/src/ASPHERE/pair_line_lj.h new file mode 100644 index 0000000000..4b60c80eaf --- /dev/null +++ b/src/ASPHERE/pair_line_lj.h @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------- + 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(line/lj,PairLineLJ) + +#else + +#ifndef LMP_PAIR_LINE_LJ_H +#define LMP_PAIR_LINE_LJ_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairLineLJ : public Pair { + public: + PairLineLJ(class LAMMPS *); + virtual ~PairLineLJ(); + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + double init_one(int, int); + + protected: + double cut_global; + double **cut; + double **epsilon,**sigma; + double **lj1,**lj2,**lj3,**lj4; + class AtomVecLine *avec; + + struct Discrete { + double dx,dy; + double sigma; + }; + Discrete *discrete; // list of all discretes for all lines + int ndiscrete; // number of discretes in list + int dmax; // allocated size of discrete list + int *dnum; // number of discretes per line, 0 if uninit + int *dfirst; // index of first discrete per each line + int nmax; // allocated size of dnum,dfirst vectors + + void allocate(); + void discretize(int, double); +}; + +} + +#endif +#endif diff --git a/src/ASPHERE/pair_resquared.cpp b/src/ASPHERE/pair_resquared.cpp index 41d964a4e7..9fb782b681 100755 --- a/src/ASPHERE/pair_resquared.cpp +++ b/src/ASPHERE/pair_resquared.cpp @@ -31,13 +31,8 @@ #include "memory.h" #include "error.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - using namespace LAMMPS_NS; -enum{SPHERE_SPHERE,SPHERE_ELLIPSE,ELLIPSE_SPHERE,ELLIPSE_ELLIPSE}; - /* ---------------------------------------------------------------------- */ PairRESquared::PairRESquared(LAMMPS *lmp) : Pair(lmp), @@ -45,7 +40,7 @@ PairRESquared::PairRESquared(LAMMPS *lmp) : Pair(lmp), cr60(pow(60.0,1.0/3.0)) { avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - if (!avec) error->all("Pair resquared requires atom style ellipsoid"); + if (!avec) error->all(FLERR,"Pair resquared requires atom style ellipsoid"); single_enable = 0; @@ -138,6 +133,8 @@ void PairRESquared::compute(int eflag, int vflag) // compute if less than cutoff if (rsq < cutsq[itype][jtype]) { + fforce[0] = fforce[1] = fforce[2] = 0.0; + switch (form[itype][jtype]) { case SPHERE_SPHERE: @@ -250,7 +247,7 @@ void PairRESquared::allocate() void PairRESquared::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -271,7 +268,7 @@ void PairRESquared::settings(int narg, char **arg) void PairRESquared::coeff(int narg, char **arg) { if (narg < 10 || narg > 11) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -315,7 +312,7 @@ void PairRESquared::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -331,7 +328,7 @@ void PairRESquared::init_style() for (int i = 1; i <= atom->ntypes; i++) { if (!atom->shape_consistency(i,shape1[i][0],shape1[i][1],shape1[i][2])) - error->all("Pair gayberne requires atoms with same type have same shape"); + error->all(FLERR,"Pair gayberne requires atoms with same type have same shape"); if (setwell[i]) { shape2[i][0] = shape1[i][0]*shape1[i][0]; shape2[i][1] = shape1[i][1]*shape1[i][1]; @@ -348,7 +345,7 @@ void PairRESquared::init_style() double PairRESquared::init_one(int i, int j) { if (setwell[i] == 0 || setwell[j] == 0) - error->all("Pair resquared epsilon a,b,c coeffs are not all set"); + error->all(FLERR,"Pair resquared epsilon a,b,c coeffs are not all set"); int ishape = 0; if (shape1[i][0] != 0.0 && shape1[i][1] != 0.0 && shape1[i][2] != 0.0) @@ -381,7 +378,7 @@ double PairRESquared::init_one(int i, int j) sigma[i][j] = mix_distance(sigma[i][i],sigma[j][j]); cut[i][j] = mix_distance(cut[i][i],cut[j][j]); } else - error->all("Pair resquared epsilon and sigma coeffs are not all set"); + error->all(FLERR,"Pair resquared epsilon and sigma coeffs are not all set"); } epsilon[i][j] = epsilon[j][i]; sigma[i][j] = sigma[j][i]; @@ -612,7 +609,7 @@ double PairRESquared::resquared_analytic(const int i, const int j, double temp[3][3]; MathExtra::plus3(wi.gamma,wj.gamma,temp); int ierror = MathExtra::mldivide3(temp,rhat,s); - if (ierror) error->all("Bad matrix inversion in mldivide3"); + if (ierror) error->all(FLERR,"Bad matrix inversion in mldivide3"); sigma12 = 1.0/sqrt(0.5*MathExtra::dot3(s,rhat)); MathExtra::matvec(wi.A,rhat,z1); @@ -644,7 +641,7 @@ double PairRESquared::resquared_analytic(const int i, const int j, MathExtra::times3(wj.aTe,wj.A,temp2); MathExtra::plus3(temp,temp2,temp); ierror = MathExtra::mldivide3(temp,rhat,w); - if (ierror) error->all("Bad matrix inversion in mldivide3"); + if (ierror) error->all(FLERR,"Bad matrix inversion in mldivide3"); h12 = rnorm-sigma12; eta = lambda/nu; @@ -898,7 +895,7 @@ double PairRESquared::resquared_lj(const int i, const int j, // energy int ierror = MathExtra::mldivide3(gamma,rhat,s); - if (ierror) error->all("Bad matrix inversion in mldivide3"); + if (ierror) error->all(FLERR,"Bad matrix inversion in mldivide3"); sigma12 = 1.0/sqrt(0.5*MathExtra::dot3(s,rhat)); double temp[3][3]; @@ -907,7 +904,7 @@ double PairRESquared::resquared_lj(const int i, const int j, temp[1][1] += 1.0; temp[2][2] += 1.0; ierror = MathExtra::mldivide3(temp,rhat,w); - if (ierror) error->all("Bad matrix inversion in mldivide3"); + if (ierror) error->all(FLERR,"Bad matrix inversion in mldivide3"); h12 = rnorm-sigma12; chi = 2.0*MathExtra::dot3(rhat,w); diff --git a/src/ASPHERE/pair_resquared.h b/src/ASPHERE/pair_resquared.h index c2146e18b2..dbc45ac0c9 100755 --- a/src/ASPHERE/pair_resquared.h +++ b/src/ASPHERE/pair_resquared.h @@ -39,6 +39,8 @@ class PairRESquared : public Pair { void read_restart_settings(FILE *); protected: + enum{SPHERE_SPHERE,SPHERE_ELLIPSE,ELLIPSE_SPHERE,ELLIPSE_ELLIPSE}; + double cut_global; double **cut; diff --git a/src/ASPHERE/pair_tri_lj.cpp b/src/ASPHERE/pair_tri_lj.cpp new file mode 100644 index 0000000000..13650bb611 --- /dev/null +++ b/src/ASPHERE/pair_tri_lj.cpp @@ -0,0 +1,639 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "pair_tri_lj.h" +#include "math_extra.h" +#include "atom.h" +#include "atom_vec_tri.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define DELTA 20 + +/* ---------------------------------------------------------------------- */ + +PairTriLJ::PairTriLJ(LAMMPS *lmp) : Pair(lmp) +{ + avec = (AtomVecTri *) atom->style_match("tri"); + if (!avec) error->all(FLERR,"Pair tri/lj requires atom style tri"); + + dmax = nmax = 0; + discrete = NULL; + dnum = dfirst = NULL; + + single_enable = 0; + restartinfo = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairTriLJ::~PairTriLJ() +{ + memory->sfree(discrete); + memory->destroy(dnum); + memory->destroy(dfirst); + + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairTriLJ::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + int ni,nj,npi,npj,ifirst,jfirst; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r6inv,term1,term2,sig,sig3,forcelj; + double dxi,dxj,dyi,dyj,dzi,dzj; + double xi[3],xj[3],fi[3],fj[3],ti[3],tj[3],p[3][3]; + double dc1[3],dc2[3],dc3[3]; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + AtomVecTri::Bonus *bonus = avec->bonus; + double **x = atom->x; + double **f = atom->f; + double **torque = atom->torque; + int *tri = atom->tri; + int *type = atom->type; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // grow discrete list if necessary and initialize + + if (nall > nmax) { + nmax = nall; + memory->destroy(dnum); + memory->destroy(dfirst); + memory->create(dnum,nall,"pair:dnum"); + memory->create(dfirst,nall,"pair:dfirst"); + } + for (i = 0; i < nall; i++) dnum[i] = 0; + ndiscrete = 0; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + 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]) continue; + + // tri/tri interactions = NxN particles + // c1,c2,c3 = corner pts of triangle I or J + + evdwl = 0.0; + if (tri[i] >= 0 && tri[j] >= 0) { + if (dnum[i] == 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c1,dc1); + MathExtra::matvec(p,bonus[tri[i]].c2,dc2); + MathExtra::matvec(p,bonus[tri[i]].c3,dc3); + dfirst[i] = ndiscrete; + discretize(i,sigma[itype][itype],dc1,dc2,dc3); + dnum[i] = ndiscrete - dfirst[i]; + } + npi = dnum[i]; + ifirst = dfirst[i]; + + if (dnum[j] == 0) { + MathExtra::quat_to_mat(bonus[tri[j]].quat,p); + MathExtra::matvec(p,bonus[tri[j]].c1,dc1); + MathExtra::matvec(p,bonus[tri[j]].c2,dc2); + MathExtra::matvec(p,bonus[tri[j]].c3,dc3); + dfirst[j] = ndiscrete; + discretize(j,sigma[jtype][jtype],dc1,dc2,dc3); + dnum[j] = ndiscrete - dfirst[j]; + } + npj = dnum[j]; + jfirst = dfirst[j]; + + for (ni = 0; ni < npi; ni++) { + dxi = discrete[ifirst+ni].dx; + dyi = discrete[ifirst+ni].dy; + dzi = discrete[ifirst+ni].dz; + + for (nj = 0; nj < npj; nj++) { + dxj = discrete[jfirst+nj].dx; + dyj = discrete[jfirst+nj].dy; + dzj = discrete[jfirst+nj].dz; + + xi[0] = x[i][0] + dxi; + xi[1] = x[i][1] + dyi; + xi[2] = x[i][2] + dzi; + xj[0] = x[j][0] + dxj; + xj[1] = x[j][1] + dyj; + xj[2] = x[j][2] + dzj; + + delx = xi[0] - xj[0]; + dely = xi[1] - xj[1]; + delz = xi[2] - xj[2]; + rsq = delx*delx + dely*dely + delz*delz; + + sig = 0.5 * (discrete[ifirst+ni].sigma+discrete[jfirst+nj].sigma); + sig3 = sig*sig*sig; + term2 = 24.0*epsilon[itype][jtype] * sig3*sig3; + term1 = 2.0 * term2 * sig3*sig3; + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (term1*r6inv - term2); + fpair = forcelj*r2inv; + + if (eflag) evdwl += r6inv*(term1/12.0*r6inv-term2/6.0); + + fi[0] = delx*fpair; + fi[1] = dely*fpair; + fi[2] = delz*fpair; + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + ti[0] = dyi*fi[2] - dzi*fi[1]; + ti[1] = dzi*fi[0] - dxi*fi[2]; + ti[2] = dxi*fi[1] - dyi*fi[0]; + torque[i][0] += ti[0]; + torque[i][1] += ti[1]; + torque[i][2] += ti[2]; + + if (newton_pair || j < nlocal) { + fj[0] = -delx*fpair; + fj[1] = -dely*fpair; + fj[2] = -delz*fpair; + f[j][0] += fj[0]; + f[j][1] += fj[1]; + f[j][2] += fj[2]; + tj[0] = dyj*fj[2] - dzj*fj[1]; + tj[1] = dzj*fj[0] - dxj*fj[2]; + tj[2] = dxj*fj[1] - dyj*fj[0]; + torque[j][0] += tj[0]; + torque[j][1] += tj[1]; + torque[j][2] += tj[2]; + } + } + } + + // tri/particle interaction = Nx1 particles + // c1,c2,c3 = corner pts of triangle I + + } else if (tri[i] >= 0) { + + if (dnum[i] == 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c1,dc1); + MathExtra::matvec(p,bonus[tri[i]].c2,dc2); + MathExtra::matvec(p,bonus[tri[i]].c3,dc3); + dfirst[i] = ndiscrete; + discretize(i,sigma[itype][itype],dc1,dc2,dc3); + dnum[i] = ndiscrete - dfirst[i]; + } + npi = dnum[i]; + ifirst = dfirst[i]; + + for (ni = 0; ni < npi; ni++) { + dxi = discrete[ifirst+ni].dx; + dyi = discrete[ifirst+ni].dy; + dzi = discrete[ifirst+ni].dz; + + xi[0] = x[i][0] + dxi; + xi[1] = x[i][1] + dyi; + xi[2] = x[i][2] + dzi; + xj[0] = x[j][0]; + xj[1] = x[j][1]; + xj[2] = x[j][2]; + + delx = xi[0] - xj[0]; + dely = xi[1] - xj[1]; + delz = xi[2] - xj[2]; + rsq = delx*delx + dely*dely + delz*delz; + + sig = 0.5 * (discrete[ifirst+ni].sigma+sigma[jtype][jtype]); + sig3 = sig*sig*sig; + term2 = 24.0*epsilon[itype][jtype] * sig3*sig3; + term1 = 2.0 * term2 * sig3*sig3; + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (term1*r6inv - term2); + fpair = forcelj*r2inv; + + if (eflag) evdwl += r6inv*(term1/12.0*r6inv-term2/6.0); + + fi[0] = delx*fpair; + fi[1] = dely*fpair; + fi[2] = delz*fpair; + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + ti[0] = dyi*fi[2] - dzi*fi[1]; + ti[1] = dzi*fi[0] - dxi*fi[2]; + ti[2] = dxi*fi[1] - dyi*fi[0]; + torque[i][2] += ti[0]; + torque[i][1] += ti[1]; + torque[i][2] += ti[2]; + + if (newton_pair || j < nlocal) { + fj[0] = -delx*fpair; + fj[1] = -dely*fpair; + fj[2] = -delz*fpair; + f[j][0] += fj[0]; + f[j][1] += fj[1]; + f[j][2] += fj[2]; + } + } + + // particle/tri interaction = Nx1 particles + // c1,c2,c3 = corner pts of triangle J + + } else if (tri[j] >= 0) { + if (dnum[j] == 0) { + MathExtra::quat_to_mat(bonus[tri[j]].quat,p); + MathExtra::matvec(p,bonus[tri[j]].c1,dc1); + MathExtra::matvec(p,bonus[tri[j]].c2,dc2); + MathExtra::matvec(p,bonus[tri[j]].c3,dc3); + dfirst[j] = ndiscrete; + discretize(j,sigma[jtype][jtype],dc1,dc2,dc3); + dnum[j] = ndiscrete - dfirst[j]; + } + npj = dnum[j]; + jfirst = dfirst[j]; + + for (nj = 0; nj < npj; nj++) { + dxj = discrete[jfirst+nj].dx; + dyj = discrete[jfirst+nj].dy; + dzj = discrete[jfirst+nj].dz; + + xi[0] = x[i][0]; + xi[1] = x[i][1]; + xi[2] = x[i][2]; + xj[0] = x[j][0] + dxj; + xj[1] = x[j][1] + dyj; + xj[2] = x[j][2] + dzj; + + delx = xi[0] - xj[0]; + dely = xi[1] - xj[1]; + delz = xi[2] - xj[2]; + rsq = delx*delx + dely*dely + delz*delz; + + sig = 0.5 * (sigma[itype][itype]+discrete[jfirst+nj].sigma); + sig3 = sig*sig*sig; + term2 = 24.0*epsilon[itype][jtype] * sig3*sig3; + term1 = 2.0 * term2 * sig3*sig3; + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (term1*r6inv - term2); + fpair = forcelj*r2inv; + + if (eflag) evdwl += r6inv*(term1/12.0*r6inv-term2/6.0); + + fi[0] = delx*fpair; + fi[1] = dely*fpair; + fi[2] = delz*fpair; + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + + if (newton_pair || j < nlocal) { + fj[0] = -delx*fpair; + fj[1] = -dely*fpair; + fj[2] = -delz*fpair; + f[j][0] += fj[0]; + f[j][1] += fj[1]; + f[j][2] += fj[2]; + tj[0] = dyj*fj[2] - dzj*fj[1]; + tj[1] = dzj*fj[0] - dxj*fj[2]; + tj[2] = dxj*fj[1] - dyj*fj[0]; + torque[j][0] += tj[0]; + torque[j][1] += tj[1]; + torque[j][2] += tj[2]; + } + } + + // particle/particle interaction = 1x1 particles + + } else { + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + fpair = forcelj*r2inv; + + if (eflag) + evdwl += r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]); + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + if (newton_pair || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + } + + if (evflag) ev_tally(i,j,nlocal,newton_pair, + evdwl,0.0,fpair,delx,dely,delz); + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairTriLJ::allocate() +{ + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq,n+1,n+1,"pair:cutsq"); + + memory->create(cut,n+1,n+1,"pair:cut"); + memory->create(epsilon,n+1,n+1,"pair:epsilon"); + memory->create(sigma,n+1,n+1,"pair:sigma"); + memory->create(lj1,n+1,n+1,"pair:lj1"); + memory->create(lj2,n+1,n+1,"pair:lj2"); + memory->create(lj3,n+1,n+1,"pair:lj3"); + memory->create(lj4,n+1,n+1,"pair:lj4"); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairTriLJ::settings(int narg, char **arg) +{ + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); + + cut_global = force->numeric(arg[0]); + + // reset cutoffs that have been explicitly set + + if (allocated) { + int i,j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i+1; j <= atom->ntypes; j++) + if (setflag[i][j]) cut[i][j] = cut_global; + } +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairTriLJ::coeff(int narg, char **arg) +{ + if (narg < 4 || narg > 5) + error->all(FLERR,"Incorrect args for pair coefficients"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(arg[0],atom->ntypes,ilo,ihi); + force->bounds(arg[1],atom->ntypes,jlo,jhi); + + double epsilon_one = force->numeric(arg[2]); + double sigma_one = force->numeric(arg[3]); + + double cut_one = cut_global; + if (narg == 5) cut_one = force->numeric(arg[4]); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + epsilon[i][j] = epsilon_one; + sigma[i][j] = sigma_one; + cut[i][j] = cut_one; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairTriLJ::init_one(int i, int j) +{ + if (setflag[i][j] == 0) { + epsilon[i][j] = mix_energy(epsilon[i][i],epsilon[j][j], + sigma[i][i],sigma[j][j]); + sigma[i][j] = mix_distance(sigma[i][i],sigma[j][j]); + cut[i][j] = mix_distance(cut[i][i],cut[j][j]); + } + + lj1[i][j] = 48.0 * epsilon[i][j] * pow(sigma[i][j],12.0); + lj2[i][j] = 24.0 * epsilon[i][j] * pow(sigma[i][j],6.0); + lj3[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],12.0); + lj4[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],6.0); + + epsilon[j][i] = epsilon[i][j]; + sigma[j][i] = sigma[i][j]; + lj1[j][i] = lj1[i][j]; + lj2[j][i] = lj2[i][j]; + lj3[j][i] = lj3[i][j]; + lj4[j][i] = lj4[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- + recursively discretize triangle I with displaced corners c1,c2,c3 + into N sub-tris no more than sigma in size + recurse by making 2 tris via bisecting longest side + store new discrete particles in Discrete list +------------------------------------------------------------------------- */ + +void PairTriLJ::discretize(int i, double sigma, + double *c1, double *c2, double *c3) +{ + double c1c2[3],c2c3[3],c1c3[3]; + + double centroid[3],dc1[3],dc2[3],dc3[3]; + + centroid[0] = (c1[0] + c2[0] + c3[0]) / 3.0; + centroid[1] = (c1[1] + c2[1] + c3[1]) / 3.0; + centroid[2] = (c1[2] + c2[2] + c3[2]) / 3.0; + + MathExtra::sub3(c1,centroid,dc1); + MathExtra::sub3(c2,centroid,dc2); + MathExtra::sub3(c3,centroid,dc3); + + double sigmasq = 0.25 * sigma*sigma; + double len1sq = MathExtra::lensq3(dc1); + double len2sq = MathExtra::lensq3(dc2); + double len3sq = MathExtra::lensq3(dc3); + + // if sigma sphere overlaps all corner points, add particle at centroid + + if (len1sq <= sigmasq && len2sq <= sigmasq & len3sq <= sigmasq) { + if (ndiscrete == dmax) { + dmax += DELTA; + discrete = (Discrete *) + memory->srealloc(discrete,dmax*sizeof(Discrete),"pair:discrete"); + } + discrete[ndiscrete].dx = centroid[0]; + discrete[ndiscrete].dy = centroid[1]; + discrete[ndiscrete].dz = centroid[2]; + sigmasq = MAX(len1sq,len2sq); + sigmasq = MAX(sigmasq,len3sq); + discrete[ndiscrete].sigma = 2.0 * sqrt(sigmasq); + ndiscrete++; + return; + } + + // else break triangle into 2 sub-triangles and recurse + + double c12[3],c23[3],c13[3],mid[3]; + + MathExtra::sub3(c2,c3,c23); + len1sq = MathExtra::lensq3(c23); + MathExtra::sub3(c1,c3,c13); + len2sq = MathExtra::lensq3(c13); + MathExtra::sub3(c1,c2,c12); + len3sq = MathExtra::lensq3(c12); + + double maxsq = MAX(len1sq,len2sq); + maxsq = MAX(maxsq,len3sq); + + if (len1sq == maxsq) { + MathExtra::add3(c2,c3,mid); + MathExtra::scale3(0.5,mid); + discretize(i,sigma,c1,c2,mid); + discretize(i,sigma,c1,c3,mid); + } else if (len2sq == maxsq) { + MathExtra::add3(c1,c3,mid); + MathExtra::scale3(0.5,mid); + discretize(i,sigma,c2,c1,mid); + discretize(i,sigma,c2,c3,mid); + } else { + MathExtra::add3(c1,c2,mid); + MathExtra::scale3(0.5,mid); + discretize(i,sigma,c3,c1,mid); + discretize(i,sigma,c3,c2,mid); + } +} + +/* ---------------------------------------------------------------------- + recursively discretize triangle I with displaced corners c1,c2,c3 + into N sub-tris no more than sigma in size + recurse by making 6 tris via centroid + store new discrete particles in Discrete list +------------------------------------------------------------------------- */ + +/* +void PairTriLJ::discretize(int i, double sigma, + double *c1, double *c2, double *c3) +{ + double centroid[3],dc1[3],dc2[3],dc3[3]; + + centroid[0] = (c1[0] + c2[0] + c3[0]) / 3.0; + centroid[1] = (c1[1] + c2[1] + c3[1]) / 3.0; + centroid[2] = (c1[2] + c2[2] + c3[2]) / 3.0; + + MathExtra::sub3(c1,centroid,dc1); + MathExtra::sub3(c2,centroid,dc2); + MathExtra::sub3(c3,centroid,dc3); + + double sigmasq = 0.25 * sigma*sigma; + double len1sq = MathExtra::lensq3(dc1); + double len2sq = MathExtra::lensq3(dc2); + double len3sq = MathExtra::lensq3(dc3); + + // if sigma sphere overlaps all corner points, add particle at centroid + + if (len1sq <= sigmasq && len2sq <= sigmasq & len3sq <= sigmasq) { + if (ndiscrete == dmax) { + dmax += DELTA; + discrete = (Discrete *) + memory->srealloc(discrete,dmax*sizeof(Discrete),"pair:discrete"); + } + discrete[ndiscrete].dx = centroid[0]; + discrete[ndiscrete].dy = centroid[1]; + discrete[ndiscrete].dz = centroid[2]; + sigmasq = MAX(len1sq,len2sq); + sigmasq = MAX(sigmasq,len3sq); + discrete[ndiscrete].sigma = 2.0 * sqrt(sigmasq); + ndiscrete++; + return; + } + + // else break triangle into 6 sub-triangles and recurse + + double c1c2mid[3],c2c3mid[3],c1c3mid[3]; + + MathExtra::add3(c1,c2,c1c2mid); + MathExtra::scale3(0.5,c1c2mid); + MathExtra::add3(c2,c3,c2c3mid); + MathExtra::scale3(0.5,c2c3mid); + MathExtra::add3(c1,c3,c1c3mid); + MathExtra::scale3(0.5,c1c3mid); + + discretize(i,sigma,c1,c1c2mid,centroid); + discretize(i,sigma,c1,c1c3mid,centroid); + discretize(i,sigma,c2,c2c3mid,centroid); + discretize(i,sigma,c2,c1c2mid,centroid); + discretize(i,sigma,c3,c1c3mid,centroid); + discretize(i,sigma,c3,c2c3mid,centroid); +} + +*/ diff --git a/src/ASPHERE/pair_tri_lj.h b/src/ASPHERE/pair_tri_lj.h new file mode 100644 index 0000000000..fb0028cce0 --- /dev/null +++ b/src/ASPHERE/pair_tri_lj.h @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------- + 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(tri/lj,PairTriLJ) + +#else + +#ifndef LMP_PAIR_TRI_LJ_H +#define LMP_PAIR_TRI_LJ_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairTriLJ : public Pair { + public: + PairTriLJ(class LAMMPS *); + virtual ~PairTriLJ(); + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + double init_one(int, int); + + protected: + double cut_global; + double **cut; + double **epsilon,**sigma; + double **lj1,**lj2,**lj3,**lj4; + class AtomVecTri *avec; + + struct Discrete { + double dx,dy,dz; + double sigma; + }; + Discrete *discrete; // list of all discretes for all lines + int ndiscrete; // number of discretes in list + int dmax; // allocated size of discrete list + int *dnum; // number of discretes per line, 0 if uninit + int *dfirst; // index of first discrete per each line + int nmax; // allocated size of dnum,dfirst vectors + + void allocate(); + void discretize(int, double, double *, double *, double *); +}; + +} + +#endif +#endif diff --git a/src/CLASS2/angle_class2.cpp b/src/CLASS2/angle_class2.cpp index ed9f16285c..ac74f441f7 100644 --- a/src/CLASS2/angle_class2.cpp +++ b/src/CLASS2/angle_class2.cpp @@ -24,10 +24,12 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define SMALL 0.001 @@ -267,7 +269,7 @@ void AngleClass2::allocate() void AngleClass2::coeff(int narg, char **arg) { - if (narg < 2) error->all("Incorrect args for angle coefficients"); + if (narg < 2) error->all(FLERR,"Incorrect args for angle coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -276,7 +278,7 @@ void AngleClass2::coeff(int narg, char **arg) int count = 0; if (strcmp(arg[1],"bb") == 0) { - if (narg != 5) error->all("Incorrect args for angle coefficients"); + if (narg != 5) error->all(FLERR,"Incorrect args for angle coefficients"); double bb_k_one = force->numeric(arg[2]); double bb_r1_one = force->numeric(arg[3]); @@ -291,7 +293,7 @@ void AngleClass2::coeff(int narg, char **arg) } } else if (strcmp(arg[1],"ba") == 0) { - if (narg != 6) error->all("Incorrect args for angle coefficients"); + if (narg != 6) error->all(FLERR,"Incorrect args for angle coefficients"); double ba_k1_one = force->numeric(arg[2]); double ba_k2_one = force->numeric(arg[3]); @@ -308,7 +310,7 @@ void AngleClass2::coeff(int narg, char **arg) } } else { - if (narg != 5) error->all("Incorrect args for angle coefficients"); + if (narg != 5) error->all(FLERR,"Incorrect args for angle coefficients"); double theta0_one = force->numeric(arg[1]); double k2_one = force->numeric(arg[2]); @@ -318,7 +320,7 @@ void AngleClass2::coeff(int narg, char **arg) // convert theta0 from degrees to radians for (int i = ilo; i <= ihi; i++) { - theta0[i] = theta0_one/180.0 * PI; + theta0[i] = theta0_one/180.0 * MY_PI; k2[i] = k2_one; k3[i] = k3_one; k4[i] = k4_one; @@ -327,7 +329,7 @@ void AngleClass2::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for angle coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients"); for (int i = ilo; i <= ihi; i++) if (setflag_a[i] == 1 && setflag_bb[i] == 1 && setflag_ba[i] == 1) diff --git a/src/CLASS2/angle_class2.h b/src/CLASS2/angle_class2.h index cbea3cfe7e..f24ecce524 100644 --- a/src/CLASS2/angle_class2.h +++ b/src/CLASS2/angle_class2.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class AngleClass2 : public Angle { public: AngleClass2(class LAMMPS *); - ~AngleClass2(); - void compute(int, int); + virtual ~AngleClass2(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_angle(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, int, int, int); - private: + protected: double *theta0,*k2,*k3,*k4; double *bb_k,*bb_r1,*bb_r2; double *ba_k1,*ba_k2,*ba_r1,*ba_r2; diff --git a/src/CLASS2/bond_class2.cpp b/src/CLASS2/bond_class2.cpp index 39e797ad9e..f18d687fe7 100644 --- a/src/CLASS2/bond_class2.cpp +++ b/src/CLASS2/bond_class2.cpp @@ -129,7 +129,7 @@ void BondClass2::allocate() void BondClass2::coeff(int narg, char **arg) { - if (narg != 5) error->all("Incorrect args for bond coefficients"); + if (narg != 5) error->all(FLERR,"Incorrect args for bond coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -150,7 +150,7 @@ void BondClass2::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for bond coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/CLASS2/bond_class2.h b/src/CLASS2/bond_class2.h index 2a5a42c648..3c201e923f 100644 --- a/src/CLASS2/bond_class2.h +++ b/src/CLASS2/bond_class2.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class BondClass2 : public Bond { public: BondClass2(class LAMMPS *); - ~BondClass2(); - void compute(int, int); + virtual ~BondClass2(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_distance(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, double, int, int); - private: + protected: double *r0,*k2,*k3,*k4; void allocate(); diff --git a/src/CLASS2/dihedral_class2.cpp b/src/CLASS2/dihedral_class2.cpp index 695333a565..f9c04126d8 100644 --- a/src/CLASS2/dihedral_class2.cpp +++ b/src/CLASS2/dihedral_class2.cpp @@ -26,23 +26,19 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) +using namespace MathConst; #define TOLERANCE 0.05 #define SMALL 0.0000001 /* ---------------------------------------------------------------------- */ -DihedralClass2::DihedralClass2(LAMMPS *lmp) : Dihedral(lmp) -{ - PI = 4.0*atan(1.0); -} +DihedralClass2::DihedralClass2(LAMMPS *lmp) : Dihedral(lmp) {} /* ---------------------------------------------------------------------- */ @@ -214,7 +210,7 @@ void DihedralClass2::compute(int eflag, int vflag) sprintf(str,"Dihedral problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -629,7 +625,7 @@ void DihedralClass2::allocate() void DihedralClass2::coeff(int narg, char **arg) { - if (narg < 2) error->all("Invalid coeffs for this dihedral style"); + if (narg < 2) error->all(FLERR,"Invalid coeffs for this dihedral style"); if (!allocated) allocate(); int ilo,ihi; @@ -638,7 +634,7 @@ void DihedralClass2::coeff(int narg, char **arg) int count = 0; if (strcmp(arg[1],"mbt") == 0) { - if (narg != 6) error->all("Incorrect args for dihedral coefficients"); + if (narg != 6) error->all(FLERR,"Incorrect args for dihedral coefficients"); double f1_one = force->numeric(arg[2]); double f2_one = force->numeric(arg[3]); @@ -655,7 +651,7 @@ void DihedralClass2::coeff(int narg, char **arg) } } else if (strcmp(arg[1],"ebt") == 0) { - if (narg != 10) error->all("Incorrect args for dihedral coefficients"); + if (narg != 10) error->all(FLERR,"Incorrect args for dihedral coefficients"); double f1_1_one = force->numeric(arg[2]); double f2_1_one = force->numeric(arg[3]); @@ -680,7 +676,7 @@ void DihedralClass2::coeff(int narg, char **arg) } } else if (strcmp(arg[1],"at") == 0) { - if (narg != 10) error->all("Incorrect args for dihedral coefficients"); + if (narg != 10) error->all(FLERR,"Incorrect args for dihedral coefficients"); double f1_1_one = force->numeric(arg[2]); double f2_1_one = force->numeric(arg[3]); @@ -700,14 +696,14 @@ void DihedralClass2::coeff(int narg, char **arg) at_f1_2[i] = f1_2_one; at_f2_2[i] = f2_2_one; at_f3_2[i] = f3_2_one; - at_theta0_1[i] = theta0_1_one/180.0 * PI; - at_theta0_2[i] = theta0_2_one/180.0 * PI; + at_theta0_1[i] = theta0_1_one/180.0 * MY_PI; + at_theta0_2[i] = theta0_2_one/180.0 * MY_PI; setflag_at[i] = 1; count++; } } else if (strcmp(arg[1],"aat") == 0) { - if (narg != 5) error->all("Incorrect args for dihedral coefficients"); + if (narg != 5) error->all(FLERR,"Incorrect args for dihedral coefficients"); double k_one = force->numeric(arg[2]); double theta0_1_one = force->numeric(arg[3]); @@ -717,14 +713,14 @@ void DihedralClass2::coeff(int narg, char **arg) for (int i = ilo; i <= ihi; i++) { aat_k[i] = k_one; - aat_theta0_1[i] = theta0_1_one/180.0 * PI; - aat_theta0_2[i] = theta0_2_one/180.0 * PI; + aat_theta0_1[i] = theta0_1_one/180.0 * MY_PI; + aat_theta0_2[i] = theta0_2_one/180.0 * MY_PI; setflag_aat[i] = 1; count++; } } else if (strcmp(arg[1],"bb13") == 0) { - if (narg != 5) error->all("Incorrect args for dihedral coefficients"); + if (narg != 5) error->all(FLERR,"Incorrect args for dihedral coefficients"); double k_one = force->numeric(arg[2]); double r10_one = force->numeric(arg[3]); @@ -739,7 +735,7 @@ void DihedralClass2::coeff(int narg, char **arg) } } else { - if (narg != 7) error->all("Incorrect args for dihedral coefficients"); + if (narg != 7) error->all(FLERR,"Incorrect args for dihedral coefficients"); double k1_one = force->numeric(arg[1]); double phi1_one = force->numeric(arg[2]); @@ -752,17 +748,17 @@ void DihedralClass2::coeff(int narg, char **arg) for (int i = ilo; i <= ihi; i++) { k1[i] = k1_one; - phi1[i] = phi1_one/180.0 * PI; + phi1[i] = phi1_one/180.0 * MY_PI; k2[i] = k2_one; - phi2[i] = phi2_one/180.0 * PI; + phi2[i] = phi2_one/180.0 * MY_PI; k3[i] = k3_one; - phi3[i] = phi3_one/180.0 * PI; + phi3[i] = phi3_one/180.0 * MY_PI; setflag_d[i] = 1; count++; } } - if (count == 0) error->all("Incorrect args for dihedral coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for dihedral coefficients"); for (int i = ilo; i <= ihi; i++) if (setflag_d[i] == 1 && setflag_mbt[i] == 1 && setflag_ebt[i] == 1 && diff --git a/src/CLASS2/dihedral_class2.h b/src/CLASS2/dihedral_class2.h index 09bf894405..b7a519a27d 100644 --- a/src/CLASS2/dihedral_class2.h +++ b/src/CLASS2/dihedral_class2.h @@ -28,13 +28,13 @@ namespace LAMMPS_NS { class DihedralClass2 : public Dihedral { public: DihedralClass2(class LAMMPS *); - ~DihedralClass2(); - void compute(int, int); + virtual ~DihedralClass2(); + virtual void compute(int, int); void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: double *k1,*k2,*k3; double *phi1,*phi2,*phi3; double *mbt_f1,*mbt_f2,*mbt_f3,*mbt_r0; @@ -46,7 +46,6 @@ class DihedralClass2 : public Dihedral { double *bb13t_k,*bb13t_r10,*bb13t_r30; int *setflag_d,*setflag_mbt,*setflag_ebt; int *setflag_at,*setflag_aat,*setflag_bb13t; - double PI; void allocate(); }; diff --git a/src/CLASS2/improper_class2.cpp b/src/CLASS2/improper_class2.cpp index 152c29bfa3..c1331c607e 100644 --- a/src/CLASS2/improper_class2.cpp +++ b/src/CLASS2/improper_class2.cpp @@ -26,19 +26,18 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define SMALL 0.001 /* ---------------------------------------------------------------------- */ -ImproperClass2::ImproperClass2(LAMMPS *lmp) : Improper(lmp) -{ - PI = 4.0*atan(1.0); -} +ImproperClass2::ImproperClass2(LAMMPS *lmp) : Improper(lmp) {} /* ---------------------------------------------------------------------- */ @@ -162,7 +161,7 @@ void ImproperClass2::compute(int eflag, int vflag) "Improper problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -526,7 +525,7 @@ void ImproperClass2::allocate() void ImproperClass2::coeff(int narg, char **arg) { - if (narg < 2) error->all("Incorrect args for improper coefficients"); + if (narg < 2) error->all(FLERR,"Incorrect args for improper coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -535,7 +534,7 @@ void ImproperClass2::coeff(int narg, char **arg) int count = 0; if (strcmp(arg[1],"aa") == 0) { - if (narg != 8) error->all("Incorrect args for improper coefficients"); + if (narg != 8) error->all(FLERR,"Incorrect args for improper coefficients"); double k1_one = force->numeric(arg[2]); double k2_one = force->numeric(arg[3]); @@ -550,15 +549,15 @@ void ImproperClass2::coeff(int narg, char **arg) aa_k1[i] = k1_one; aa_k2[i] = k2_one; aa_k3[i] = k3_one; - aa_theta0_1[i] = theta0_1_one/180.0 * PI; - aa_theta0_2[i] = theta0_2_one/180.0 * PI; - aa_theta0_3[i] = theta0_3_one/180.0 * PI; + aa_theta0_1[i] = theta0_1_one/180.0 * MY_PI; + aa_theta0_2[i] = theta0_2_one/180.0 * MY_PI; + aa_theta0_3[i] = theta0_3_one/180.0 * MY_PI; setflag_aa[i] = 1; count++; } } else { - if (narg != 3) error->all("Incorrect args for improper coefficients"); + if (narg != 3) error->all(FLERR,"Incorrect args for improper coefficients"); double k0_one = force->numeric(arg[1]); double chi0_one = force->numeric(arg[2]); @@ -567,13 +566,13 @@ void ImproperClass2::coeff(int narg, char **arg) for (int i = ilo; i <= ihi; i++) { k0[i] = k0_one; - chi0[i] = chi0_one/180.0 * PI; + chi0[i] = chi0_one/180.0 * MY_PI; setflag_i[i] = 1; count++; } } - if (count == 0) error->all("Incorrect args for improper coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for improper coefficients"); for (int i = ilo; i <= ihi; i++) if (setflag_i[i] == 1 && setflag_aa[i] == 1) setflag[i] = 1; diff --git a/src/CLASS2/improper_class2.h b/src/CLASS2/improper_class2.h index 56c7c9d14a..cbee3ac810 100644 --- a/src/CLASS2/improper_class2.h +++ b/src/CLASS2/improper_class2.h @@ -28,17 +28,16 @@ namespace LAMMPS_NS { class ImproperClass2 : public Improper { public: ImproperClass2(class LAMMPS *); - ~ImproperClass2(); - void compute(int, int); + virtual ~ImproperClass2(); + virtual void compute(int, int); void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: double *k0,*chi0; double *aa_k1,*aa_k2,*aa_k3,*aa_theta0_1,*aa_theta0_2,*aa_theta0_3; int *setflag_i,*setflag_aa; - double PI; void allocate(); void angleangle(int, int); diff --git a/src/CLASS2/pair_lj_class2.cpp b/src/CLASS2/pair_lj_class2.cpp index c77443081f..ee5d7d3e32 100644 --- a/src/CLASS2/pair_lj_class2.cpp +++ b/src/CLASS2/pair_lj_class2.cpp @@ -19,13 +19,12 @@ #include "comm.h" #include "force.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -161,7 +160,7 @@ void PairLJClass2::allocate() void PairLJClass2::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -181,7 +180,7 @@ void PairLJClass2::settings(int narg, char **arg) void PairLJClass2::coeff(int narg, char **arg) { - if (narg < 4 || narg > 5) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 5) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -205,7 +204,7 @@ void PairLJClass2::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -257,14 +256,13 @@ double PairLJClass2::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double sig3 = sigma[i][j]*sigma[i][j]*sigma[i][j]; double sig6 = sig3*sig3; double rc3 = cut[i][j]*cut[i][j]*cut[i][j]; double rc6 = rc3*rc3; - etail_ij = 2.0*PI*all[0]*all[1]*epsilon[i][j] * + etail_ij = 2.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig3 - 3.0*rc3) / (3.0*rc6); - ptail_ij = 2.0*PI*all[0]*all[1]*epsilon[i][j] * + ptail_ij = 2.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig3 - 2.0*rc3) / rc6; } diff --git a/src/CLASS2/pair_lj_class2.h b/src/CLASS2/pair_lj_class2.h index 764b8b8c92..6a24e51e91 100644 --- a/src/CLASS2/pair_lj_class2.h +++ b/src/CLASS2/pair_lj_class2.h @@ -28,7 +28,7 @@ class PairLJClass2 : public Pair { public: PairLJClass2(class LAMMPS *); virtual ~PairLJClass2(); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); diff --git a/src/CLASS2/pair_lj_class2_coul_cut.cpp b/src/CLASS2/pair_lj_class2_coul_cut.cpp index c7107077d2..9cd784ff58 100644 --- a/src/CLASS2/pair_lj_class2_coul_cut.cpp +++ b/src/CLASS2/pair_lj_class2_coul_cut.cpp @@ -20,13 +20,12 @@ #include "force.h" #include "neighbor.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -187,7 +186,7 @@ void PairLJClass2CoulCut::allocate() void PairLJClass2CoulCut::settings(int narg, char **arg) { - if (narg < 1 || narg > 2) error->all("Illegal pair_style command"); + if (narg < 1 || narg > 2) error->all(FLERR,"Illegal pair_style command"); cut_lj_global = force->numeric(arg[0]); if (narg == 1) cut_coul_global = cut_lj_global; @@ -212,7 +211,7 @@ void PairLJClass2CoulCut::settings(int narg, char **arg) void PairLJClass2CoulCut::coeff(int narg, char **arg) { - if (narg < 4 || narg > 6) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 6) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -239,7 +238,7 @@ void PairLJClass2CoulCut::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -249,7 +248,7 @@ void PairLJClass2CoulCut::coeff(int narg, char **arg) void PairLJClass2CoulCut::init_style() { if (!atom->q_flag) - error->all("Pair style lj/class2/coul/cut requires atom attribute q"); + error->all(FLERR,"Pair style lj/class2/coul/cut requires atom attribute q"); neighbor->request(this); } @@ -310,14 +309,13 @@ double PairLJClass2CoulCut::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double sig3 = sigma[i][j]*sigma[i][j]*sigma[i][j]; double sig6 = sig3*sig3; double rc3 = cut_lj[i][j]*cut_lj[i][j]*cut_lj[i][j]; double rc6 = rc3*rc3; - etail_ij = 2.0*PI*all[0]*all[1]*epsilon[i][j] * + etail_ij = 2.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig3 - 3.0*rc3) / (3.0*rc6); - ptail_ij = 2.0*PI*all[0]*all[1]*epsilon[i][j] * + ptail_ij = 2.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig3 - 2.0*rc3) / rc6; } diff --git a/src/CLASS2/pair_lj_class2_coul_cut.h b/src/CLASS2/pair_lj_class2_coul_cut.h index 12fabc3f1a..1efa60a397 100644 --- a/src/CLASS2/pair_lj_class2_coul_cut.h +++ b/src/CLASS2/pair_lj_class2_coul_cut.h @@ -28,7 +28,7 @@ class PairLJClass2CoulCut : public Pair { public: PairLJClass2CoulCut(class LAMMPS *); virtual ~PairLJClass2CoulCut(); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); void init_style(); diff --git a/src/CLASS2/pair_lj_class2_coul_long.cpp b/src/CLASS2/pair_lj_class2_coul_long.cpp index 280dacad01..34ff47d804 100644 --- a/src/CLASS2/pair_lj_class2_coul_long.cpp +++ b/src/CLASS2/pair_lj_class2_coul_long.cpp @@ -22,13 +22,12 @@ #include "kspace.h" #include "neighbor.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 @@ -202,7 +201,7 @@ void PairLJClass2CoulLong::allocate() void PairLJClass2CoulLong::settings(int narg, char **arg) { - if (narg < 1 || narg > 2) error->all("Illegal pair_style command"); + if (narg < 1 || narg > 2) error->all(FLERR,"Illegal pair_style command"); cut_lj_global = force->numeric(arg[0]); if (narg == 1) cut_coul = cut_lj_global; @@ -224,7 +223,7 @@ void PairLJClass2CoulLong::settings(int narg, char **arg) void PairLJClass2CoulLong::coeff(int narg, char **arg) { - if (narg < 4 || narg > 6) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 6) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -248,7 +247,7 @@ void PairLJClass2CoulLong::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -258,7 +257,7 @@ void PairLJClass2CoulLong::coeff(int narg, char **arg) void PairLJClass2CoulLong::init_style() { if (!atom->q_flag) - error->all("Pair style lj/class2/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style lj/class2/coul/long requires atom attribute q"); neighbor->request(this); @@ -267,7 +266,7 @@ void PairLJClass2CoulLong::init_style() // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; } @@ -324,14 +323,13 @@ double PairLJClass2CoulLong::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double sig3 = sigma[i][j]*sigma[i][j]*sigma[i][j]; double sig6 = sig3*sig3; double rc3 = cut_lj[i][j]*cut_lj[i][j]*cut_lj[i][j]; double rc6 = rc3*rc3; - etail_ij = 2.0*PI*all[0]*all[1]*epsilon[i][j] * + etail_ij = 2.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig3 - 3.0*rc3) / (3.0*rc6); - ptail_ij = 2.0*PI*all[0]*all[1]*epsilon[i][j] * + ptail_ij = 2.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig3 - 2.0*rc3) / rc6; } diff --git a/src/CLASS2/pair_lj_class2_coul_long.h b/src/CLASS2/pair_lj_class2_coul_long.h index d1b19f84cf..ab903987bb 100644 --- a/src/CLASS2/pair_lj_class2_coul_long.h +++ b/src/CLASS2/pair_lj_class2_coul_long.h @@ -28,7 +28,7 @@ class PairLJClass2CoulLong : public Pair { public: PairLJClass2CoulLong(class LAMMPS *); virtual ~PairLJClass2CoulLong(); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); void init_style(); diff --git a/src/COLLOID/Install.sh b/src/COLLOID/Install.sh index 4286a636f8..d5bac42feb 100644 --- a/src/COLLOID/Install.sh +++ b/src/COLLOID/Install.sh @@ -4,24 +4,20 @@ if (test $1 = 1) then cp fix_wall_colloid.cpp .. cp pair_colloid.cpp .. - cp pair_lubricate.cpp .. cp pair_yukawa_colloid.cpp .. cp fix_wall_colloid.h .. cp pair_colloid.h .. - cp pair_lubricate.h .. cp pair_yukawa_colloid.h .. elif (test $1 = 0) then rm -f ../fix_wall_colloid.cpp rm -f ../pair_colloid.cpp - rm -f ../pair_lubricate.cpp rm -f ../pair_yukawa_colloid.cpp rm -f ../fix_wall_colloid.h rm -f ../pair_colloid.h - rm -f ../pair_lubricate.h rm -f ../pair_yukawa_colloid.h fi diff --git a/src/COLLOID/fix_wall_colloid.cpp b/src/COLLOID/fix_wall_colloid.cpp index 7627fca708..e4267358c8 100644 --- a/src/COLLOID/fix_wall_colloid.cpp +++ b/src/COLLOID/fix_wall_colloid.cpp @@ -36,7 +36,7 @@ FixWallColloid::FixWallColloid(LAMMPS *lmp, int narg, char **arg) : void FixWallColloid::init() { if (!atom->sphere_flag) - error->all("Fix wall/colloid requires atom style sphere"); + error->all(FLERR,"Fix wall/colloid requires atom style sphere"); // insure all particles in group are extended particles @@ -51,7 +51,7 @@ void FixWallColloid::init() int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); - if (flagall) error->all("Fix wall/colloid requires extended particles"); + if (flagall) error->all(FLERR,"Fix wall/colloid requires extended particles"); FixWall::init(); } @@ -154,5 +154,5 @@ void FixWallColloid::wall_particle(int m, int which, double coord) ewall[m+1] += fwall; } - if (onflag) error->one("Particle on or inside fix wall surface"); + if (onflag) error->one(FLERR,"Particle on or inside fix wall surface"); } diff --git a/src/COLLOID/pair_colloid.cpp b/src/COLLOID/pair_colloid.cpp index db0c612aec..04211a3509 100644 --- a/src/COLLOID/pair_colloid.cpp +++ b/src/COLLOID/pair_colloid.cpp @@ -30,11 +30,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - -enum{SMALL_SMALL,SMALL_LARGE,LARGE_LARGE}; - /* ---------------------------------------------------------------------- */ PairColloid::PairColloid(LAMMPS *lmp) : Pair(lmp) {} @@ -144,7 +139,7 @@ void PairColloid::compute(int eflag, int vflag) evdwl = 2.0/9.0*fR * (1.0-(K[1]*(K[1]*(K[1]/3.0+3.0*K[2])+4.2*K[4])+K[2]*K[4]) * sigma6[itype][jtype]/K[6]) - offset[itype][jtype]; - if (rsq <= K[1]) error->one("Overlapping small/large in pair colloid"); + if (rsq <= K[1]) error->one(FLERR,"Overlapping small/large in pair colloid"); break; case LARGE_LARGE: @@ -182,7 +177,7 @@ void PairColloid::compute(int eflag, int vflag) if (eflag) evdwl += a12[itype][jtype]/6.0 * (2.0*K[0]*(K[7]+K[8])-log(K[8]/K[7])) - offset[itype][jtype]; - if (r <= K[1]) error->one("Overlapping large/large in pair colloid"); + if (r <= K[1]) error->one(FLERR,"Overlapping large/large in pair colloid"); break; } @@ -245,7 +240,7 @@ void PairColloid::allocate() void PairColloid::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -265,7 +260,7 @@ void PairColloid::settings(int narg, char **arg) void PairColloid::coeff(int narg, char **arg) { - if (narg < 6 || narg > 7) error->all("Incorrect args for pair coefficients"); + if (narg < 6 || narg > 7) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -281,7 +276,7 @@ void PairColloid::coeff(int narg, char **arg) if (narg == 7) cut_one = force->numeric(arg[6]); if (d1_one < 0.0 || d2_one < 0.0) - error->all("Invalid d1 or d2 value for pair colloid coeff"); + error->all(FLERR,"Invalid d1 or d2 value for pair colloid coeff"); int count = 0; for (int i = ilo; i <= ihi; i++) { @@ -289,7 +284,7 @@ void PairColloid::coeff(int narg, char **arg) a12[i][j] = a12_one; sigma[i][j] = sigma_one; if (i == j && d1_one != d2_one) - error->all("Invalid d1 or d2 value for pair colloid coeff"); + error->all(FLERR,"Invalid d1 or d2 value for pair colloid coeff"); d1[i][j] = d1_one; d2[i][j] = d2_one; diameter[i][j] = 0.5*(d1_one+d2_one); @@ -299,7 +294,7 @@ void PairColloid::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/COLLOID/pair_colloid.h b/src/COLLOID/pair_colloid.h index 7b813aaf44..266fd9657b 100644 --- a/src/COLLOID/pair_colloid.h +++ b/src/COLLOID/pair_colloid.h @@ -27,8 +27,8 @@ namespace LAMMPS_NS { class PairColloid : public Pair { public: PairColloid(class LAMMPS *); - ~PairColloid(); - void compute(int, int); + virtual ~PairColloid(); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); @@ -38,7 +38,9 @@ class PairColloid : public Pair { void read_restart_settings(FILE *); double single(int, int, int, int, double, double, double, double &); - private: + enum {SMALL_SMALL,SMALL_LARGE,LARGE_LARGE}; + + protected: double cut_global; double **cut; double **a12,**d1,**d2,**diameter,**a1,**a2,**offset; diff --git a/src/COLLOID/pair_lubricate.cpp b/src/COLLOID/pair_lubricate.cpp deleted file mode 100644 index 4975c4f7e2..0000000000 --- a/src/COLLOID/pair_lubricate.cpp +++ /dev/null @@ -1,525 +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 author: Randy Schunk (SNL) -------------------------------------------------------------------------- */ - -#include "math.h" -#include "stdio.h" -#include "stdlib.h" -#include "string.h" -#include "pair_lubricate.h" -#include "atom.h" -#include "atom_vec.h" -#include "comm.h" -#include "force.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "update.h" -#include "memory.h" -#include "random_mars.h" -#include "error.h" - -using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - -/* ---------------------------------------------------------------------- */ - -PairLubricate::PairLubricate(LAMMPS *lmp) : Pair(lmp) -{ - single_enable = 0; - - random = NULL; -} - -/* ---------------------------------------------------------------------- */ - -PairLubricate::~PairLubricate() -{ - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); - - memory->destroy(cut); - memory->destroy(cut_inner); - } - - delete random; -} - -/* ---------------------------------------------------------------------- */ - -void PairLubricate::compute(int eflag, int vflag) -{ - int i,j,ii,jj,inum,jnum,itype,jtype; - double xtmp,ytmp,ztmp,delx,dely,delz,fpair,fx,fy,fz,tx,ty,tz; - double rsq,r,h_sep,radi,tfmag; - double vr1,vr2,vr3,vnnr,vn1,vn2,vn3; - double vt1,vt2,vt3,w1,w2,w3,v_shear1,v_shear2,v_shear3; - double omega_t_1,omega_t_2,omega_t_3; - double n_cross_omega_t_1,n_cross_omega_t_2,n_cross_omega_t_3; - double wr1,wr2,wr3,wnnr,wn1,wn2,wn3; - double P_dot_wrel_1,P_dot_wrel_2,P_dot_wrel_3; - double a_squeeze,a_shear,a_pump,a_twist; - int *ilist,*jlist,*numneigh,**firstneigh; - double PI = 4.0*atan(1.0); - - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; - - double **x = atom->x; - double **v = atom->v; - double **f = atom->f; - double **omega = atom->omega; - double **torque = atom->torque; - double *radius = atom->radius; - int *type = atom->type; - int nlocal = atom->nlocal; - int newton_pair = force->newton_pair; - double vxmu2f = force->vxmu2f; - - double prethermostat = sqrt(2.0 * force->boltz * t_target / update->dt); - prethermostat *= sqrt(force->vxmu2f/force->ftm2v/force->mvv2e); - - inum = list->inum; - ilist = list->ilist; - numneigh = list->numneigh; - firstneigh = list->firstneigh; - - // loop over neighbors of my atoms - - a_squeeze = a_shear = a_pump = a_twist = 0.0; - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - itype = type[i]; - radi = radius[i]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - 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]) { - - r = sqrt(rsq); - - // relative translational velocity - - vr1 = v[i][0] - v[j][0]; - vr2 = v[i][1] - v[j][1]; - vr3 = v[i][2] - v[j][2]; - - // normal component N.(v1-v2) = nn.(v1-v2) - - vnnr = vr1*delx + vr2*dely + vr3*delz; - vnnr /= r; - vn1 = delx*vnnr / r; - vn2 = dely*vnnr / r; - vn3 = delz*vnnr / r; - - // tangential component -P.(v1-v2) - // P = (I - nn) where n is vector between centers - - vt1 = vr1 - vn1; - vt2 = vr2 - vn2; - vt3 = vr3 - vn3; - - // additive rotational velocity = omega_1 + omega_2 - - w1 = omega[i][0] + omega[j][0]; - w2 = omega[i][1] + omega[j][1]; - w3 = omega[i][2] + omega[j][2]; - - // relative velocities n X P . (v1-v2) = n X (I-nn) . (v1-v2) - - v_shear1 = (dely*vt3 - delz*vt2) / r; - v_shear2 = -(delx*vt3 - delz*vt1) / r; - v_shear3 = (delx*vt2 - dely*vt1) / r; - - // relative rotation rate P.(omega1 + omega2) - - omega_t_1 = w1 - delx*(delx*w1) / rsq; - omega_t_2 = w2 - dely*(dely*w2) / rsq; - omega_t_3 = w3 - delz*(delz*w3) / rsq; - - // n X omega_t - - n_cross_omega_t_1 = (dely*omega_t_3 - delz*omega_t_2) / r; - n_cross_omega_t_2 = -(delx*omega_t_3 - delz*omega_t_1) / r; - n_cross_omega_t_3 = (delx*omega_t_2 - dely*omega_t_1) / r; - - // N.(w1-w2) and P.(w1-w2) - - wr1 = omega[i][0] - omega[j][0]; - wr2 = omega[i][1] - omega[j][1]; - wr3 = omega[i][2] - omega[j][2]; - - wnnr = wr1*delx + wr2*dely + wr3*delz; - wn1 = delx*wnnr / rsq; - wn2 = dely*wnnr / rsq; - wn3 = delz*wnnr / rsq; - - P_dot_wrel_1 = wr1 - delx*(delx*wr1)/rsq; - P_dot_wrel_2 = wr2 - dely*(dely*wr2)/rsq; - P_dot_wrel_3 = wr3 - delz*(delz*wr3)/rsq; - - // compute components of pair-hydro - - h_sep = r - 2.0*radi; - - if (flag1) - a_squeeze = (3.0*PI*mu*2.0*radi/2.0) * (2.0*radi/4.0/h_sep); - if (flag2) - a_shear = (PI*mu*2.*radi/2.0) * - log(2.0*radi/2.0/h_sep)*(2.0*radi+h_sep)*(2.0*radi+h_sep)/4.0; - if (flag3) - a_pump = (PI*mu*pow(2.0*radi,4)/8.0) * - ((3.0/20.0) * log(2.0*radi/2.0/h_sep) + - (63.0/250.0) * (h_sep/2.0/radi) * log(2.0*radi/2.0/h_sep)); - if (flag4) - a_twist = (PI*mu*pow(2.0*radi,4)/4.0) * - (h_sep/2.0/radi) * log(2.0/(2.0*h_sep)); - - if (h_sep >= cut_inner[itype][jtype]) { - fx = -a_squeeze*vn1 - a_shear*(2.0/r)*(2.0/r)*vt1 + - (2.0/r)*a_shear*n_cross_omega_t_1; - fy = -a_squeeze*vn2 - a_shear*(2.0/r)*(2.0/r)*vt2 + - (2.0/r)*a_shear*n_cross_omega_t_2; - fz = -a_squeeze*vn3 - a_shear*(2.0/r)*(2.0/r)*vt3 + - (2.0/r)*a_shear*n_cross_omega_t_3; - fx *= vxmu2f; - fy *= vxmu2f; - fz *= vxmu2f; - - // add in thermostat force - - tfmag = prethermostat*sqrt(a_squeeze)*(random->uniform()-0.5); - fx -= tfmag * delx/r; - fy -= tfmag * dely/r; - fz -= tfmag * delz/r; - - tx = -(2.0/r)*a_shear*v_shear1 - a_shear*omega_t_1 - - a_pump*P_dot_wrel_1 - a_twist*wn1; - ty = -(2.0/r)*a_shear*v_shear2 - a_shear*omega_t_2 - - a_pump*P_dot_wrel_2 - a_twist*wn2; - tz = -(2.0/r)*a_shear*v_shear3 - a_shear*omega_t_3 - - a_pump*P_dot_wrel_3 - a_twist*wn3; - torque[i][0] += vxmu2f * tx; - torque[i][1] += vxmu2f * ty; - torque[i][2] += vxmu2f * tz; - - } else { - a_squeeze = (3.0*PI*mu*2.0*radi/2.0) * - (2.0*radi/4.0/cut_inner[itype][jtype]); - fpair = -a_squeeze*vnnr; - fpair *= vxmu2f; - - // add in thermostat force - - fpair -= prethermostat*sqrt(a_squeeze)*(random->uniform()-0.5); - - fx = fpair * delx/r; - fy = fpair * dely/r; - fz = fpair * delz/r; - } - - f[i][0] += fx; - f[i][1] += fy; - f[i][2] += fz; - - if (newton_pair || j < nlocal) { - f[j][0] -= fx; - f[j][1] -= fy; - f[j][2] -= fz; - - if (h_sep >= cut_inner[itype][jtype]) { - tx = -(2.0/r)*a_shear*v_shear1 - a_shear*omega_t_1 + - a_pump*P_dot_wrel_1 + a_twist*wn1; - ty = -(2.0/r)*a_shear*v_shear2 - a_shear*omega_t_2 + - a_pump*P_dot_wrel_2 + a_twist*wn2; - tz = -(2.0/r)*a_shear*v_shear3 - a_shear*omega_t_3 + - a_pump*P_dot_wrel_3 + a_twist*wn3; - torque[j][0] += vxmu2f * tx; - torque[j][1] += vxmu2f * ty; - torque[j][2] += vxmu2f * tz; - } - } - - if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, - 0.0,0.0,fx,fy,fz,delx,dely,delz); - } - } - } - - if (vflag_fdotr) virial_fdotr_compute(); -} - -/* ---------------------------------------------------------------------- - allocate all arrays -------------------------------------------------------------------------- */ - -void PairLubricate::allocate() -{ - allocated = 1; - int n = atom->ntypes; - - memory->create(setflag,n+1,n+1,"pair:setflag"); - for (int i = 1; i <= n; i++) - for (int j = i; j <= n; j++) - setflag[i][j] = 0; - - memory->create(cutsq,n+1,n+1,"pair:cutsq"); - - memory->create(cut,n+1,n+1,"pair:cut"); - memory->create(cut_inner,n+1,n+1,"pair:cut_inner"); -} - -/* ---------------------------------------------------------------------- - global settings -------------------------------------------------------------------------- */ - -void PairLubricate::settings(int narg, char **arg) -{ - if (narg != 9) error->all("Illegal pair_style command"); - - mu = force->numeric(arg[0]); - flag1 = force->inumeric(arg[1]); - flag2 = force->inumeric(arg[2]); - flag3 = force->inumeric(arg[3]); - flag4 = force->inumeric(arg[4]); - cut_inner_global = force->numeric(arg[5]); - cut_global = force->numeric(arg[6]); - t_target = force->numeric(arg[7]); - seed = force->inumeric(arg[8]); - - // initialize Marsaglia RNG with processor-unique seed - - if (seed <= 0) error->all("Illegal pair_style command"); - delete random; - random = new RanMars(lmp,seed + comm->me); - - // reset cutoffs that have been explicitly set - - if (allocated) { - int i,j; - for (i = 1; i <= atom->ntypes; i++) - for (j = i+1; j <= atom->ntypes; j++) - if (setflag[i][j]) { - cut_inner[i][j] = cut_inner_global; - cut[i][j] = cut_global; - } - } -} - -/* ---------------------------------------------------------------------- - set coeffs for one or more type pairs -------------------------------------------------------------------------- */ - -void PairLubricate::coeff(int narg, char **arg) -{ - if (narg != 2 && narg != 4) - error->all("Incorrect args for pair coefficients"); - - if (!allocated) allocate(); - - int ilo,ihi,jlo,jhi; - force->bounds(arg[0],atom->ntypes,ilo,ihi); - force->bounds(arg[1],atom->ntypes,jlo,jhi); - - double cut_inner_one = cut_inner_global; - double cut_one = cut_global; - if (narg == 4) { - cut_inner_one = force->numeric(arg[2]); - cut_one = force->numeric(arg[3]); - } - - int count = 0; - for (int i = ilo; i <= ihi; i++) { - for (int j = MAX(jlo,i); j <= jhi; j++) { - cut_inner[i][j] = cut_inner_one; - cut[i][j] = cut_one; - setflag[i][j] = 1; - count++; - } - } - - if (count == 0) error->all("Incorrect args for pair coefficients"); -} - -/* ---------------------------------------------------------------------- - init specific to this pair style -------------------------------------------------------------------------- */ - -void PairLubricate::init_style() -{ - if (!atom->sphere_flag) - error->all("Pair lubricate requires atom style sphere"); - if (comm->ghost_velocity == 0) - error->all("Pair lubricate requires ghost atoms store velocity"); - - neighbor->request(this); - - // require that atom radii are identical within each type - // require monodisperse system with same radii for all types - - double rad,radtype; - for (int i = 1; i <= atom->ntypes; i++) { - if (!atom->radius_consistency(i,radtype)) - error->all("Pair lubricate requires monodisperse particles"); - if (i > 1 && radtype != rad) - error->all("Pair lubricate requires monodisperse particles"); - rad = radtype; - } -} - -/* ---------------------------------------------------------------------- - init for one type pair i,j and corresponding j,i -------------------------------------------------------------------------- */ - -double PairLubricate::init_one(int i, int j) -{ - if (setflag[i][j] == 0) { - cut_inner[i][j] = mix_distance(cut_inner[i][i],cut_inner[j][j]); - cut[i][j] = mix_distance(cut[i][i],cut[j][j]); - } - - cut_inner[j][i] = cut_inner[i][j]; - - return cut[i][j]; -} - -/* ---------------------------------------------------------------------- - proc 0 writes to restart file -------------------------------------------------------------------------- */ - -void PairLubricate::write_restart(FILE *fp) -{ - write_restart_settings(fp); - - int i,j; - for (i = 1; i <= atom->ntypes; i++) - for (j = i; j <= atom->ntypes; j++) { - fwrite(&setflag[i][j],sizeof(int),1,fp); - if (setflag[i][j]) { - fwrite(&cut_inner[i][j],sizeof(double),1,fp); - fwrite(&cut[i][j],sizeof(double),1,fp); - } - } -} - -/* ---------------------------------------------------------------------- - proc 0 reads from restart file, bcasts -------------------------------------------------------------------------- */ - -void PairLubricate::read_restart(FILE *fp) -{ - read_restart_settings(fp); - allocate(); - - int i,j; - int me = comm->me; - for (i = 1; i <= atom->ntypes; i++) - for (j = i; j <= atom->ntypes; j++) { - if (me == 0) fread(&setflag[i][j],sizeof(int),1,fp); - MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world); - if (setflag[i][j]) { - if (me == 0) { - fread(&cut_inner[i][j],sizeof(double),1,fp); - fread(&cut[i][j],sizeof(double),1,fp); - } - MPI_Bcast(&cut_inner[i][j],1,MPI_DOUBLE,0,world); - MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world); - } - } -} - -/* ---------------------------------------------------------------------- - proc 0 writes to restart file -------------------------------------------------------------------------- */ - -void PairLubricate::write_restart_settings(FILE *fp) -{ - fwrite(&mu,sizeof(double),1,fp); - fwrite(&flag1,sizeof(int),1,fp); - fwrite(&flag2,sizeof(int),1,fp); - fwrite(&flag3,sizeof(int),1,fp); - fwrite(&flag4,sizeof(int),1,fp); - fwrite(&cut_inner_global,sizeof(double),1,fp); - fwrite(&cut_global,sizeof(double),1,fp); - fwrite(&t_target,sizeof(double),1,fp); - fwrite(&seed,sizeof(int),1,fp); - fwrite(&offset_flag,sizeof(int),1,fp); - fwrite(&mix_flag,sizeof(int),1,fp); -} - -/* ---------------------------------------------------------------------- - proc 0 reads from restart file, bcasts -------------------------------------------------------------------------- */ - -void PairLubricate::read_restart_settings(FILE *fp) -{ - int me = comm->me; - if (me == 0) { - fread(&mu,sizeof(double),1,fp); - fread(&flag1,sizeof(int),1,fp); - fread(&flag2,sizeof(int),1,fp); - fread(&flag3,sizeof(int),1,fp); - fread(&flag4,sizeof(int),1,fp); - fread(&cut_inner_global,sizeof(double),1,fp); - fread(&cut_global,sizeof(double),1,fp); - fread(&t_target, sizeof(double),1,fp); - fread(&seed, sizeof(int),1,fp); - fread(&offset_flag,sizeof(int),1,fp); - fread(&mix_flag,sizeof(int),1,fp); - } - MPI_Bcast(&mu,1,MPI_DOUBLE,0,world); - MPI_Bcast(&flag1,1,MPI_INT,0,world); - MPI_Bcast(&flag2,1,MPI_INT,0,world); - MPI_Bcast(&flag3,1,MPI_INT,0,world); - MPI_Bcast(&flag4,1,MPI_INT,0,world); - MPI_Bcast(&cut_inner_global,1,MPI_DOUBLE,0,world); - MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world); - MPI_Bcast(&t_target,1,MPI_DOUBLE,0,world); - MPI_Bcast(&seed,1,MPI_INT,0,world); - MPI_Bcast(&offset_flag,1,MPI_INT,0,world); - MPI_Bcast(&mix_flag,1,MPI_INT,0,world); - - // additional setup based on restart parameters - - delete random; - random = new RanMars(lmp,seed + comm->me); -} - -/* ---------------------------------------------------------------------- */ - -void *PairLubricate::extract(char *str, int &dim) -{ - dim = 0; - if (strcmp(str,"mu") == 0) return (void *) μ - return NULL; -} diff --git a/src/COLLOID/pair_yukawa_colloid.cpp b/src/COLLOID/pair_yukawa_colloid.cpp index 5df2ba8b78..ca68a56c9c 100644 --- a/src/COLLOID/pair_yukawa_colloid.cpp +++ b/src/COLLOID/pair_yukawa_colloid.cpp @@ -38,11 +38,11 @@ PairYukawaColloid::PairYukawaColloid(LAMMPS *lmp) : PairYukawa(lmp) {} void PairYukawaColloid::compute(int eflag, int vflag) { int i,j,ii,jj,inum,jnum,itype,jtype; - double xtmp,ytmp,ztmp,delx,dely,delz,ecoul,fpair,radi,radj; - double rsq,r2inv,r,rinv,screening,forceyukawa,factor_coul; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair,radi,radj; + double rsq,r2inv,r,rinv,screening,forceyukawa,factor; int *ilist,*jlist,*numneigh,**firstneigh; - ecoul = 0.0; + evdwl = 0.0; if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; @@ -51,7 +51,7 @@ void PairYukawaColloid::compute(int eflag, int vflag) double *radius = atom->radius; 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; inum = list->inum; @@ -73,7 +73,7 @@ void PairYukawaColloid::compute(int eflag, int vflag) for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; - factor_coul = special_coul[sbmask(j)]; + factor = special_lj[sbmask(j)]; j &= NEIGHMASK; delx = xtmp - x[j][0]; @@ -90,7 +90,7 @@ void PairYukawaColloid::compute(int eflag, int vflag) screening = exp(-kappa*(r-(radi+radj))); forceyukawa = a[itype][jtype] * screening; - fpair = factor_coul*forceyukawa * rinv; + fpair = factor*forceyukawa * rinv; f[i][0] += delx*fpair; f[i][1] += dely*fpair; @@ -102,12 +102,12 @@ void PairYukawaColloid::compute(int eflag, int vflag) } if (eflag) { - ecoul = a[itype][jtype]/kappa * screening - offset[itype][jtype]; - ecoul *= factor_coul; + evdwl = a[itype][jtype]/kappa * screening - offset[itype][jtype]; + evdwl *= factor; } if (evflag) ev_tally(i,j,nlocal,newton_pair, - 0.0,ecoul,fpair,delx,dely,delz); + evdwl,0.0,fpair,delx,dely,delz); } } } @@ -122,7 +122,7 @@ void PairYukawaColloid::compute(int eflag, int vflag) void PairYukawaColloid::init_style() { if (!atom->sphere_flag) - error->all("Pair yukawa/colloid requires atom style sphere"); + error->all(FLERR,"Pair yukawa/colloid requires atom style sphere"); neighbor->request(this); @@ -130,7 +130,7 @@ void PairYukawaColloid::init_style() for (int i = 1; i <= atom->ntypes; i++) if (!atom->radius_consistency(i,rad[i])) - error->all("Pair yukawa/colloid requires atoms with same type " + error->all(FLERR,"Pair yukawa/colloid requires atoms with same type " "have same radius"); } @@ -170,8 +170,8 @@ double PairYukawaColloid::single(int i, int j, int itype, int jtype, rinv = 1.0/r; screening = exp(-kappa*(r-(rad[itype]+rad[jtype]))); forceyukawa = a[itype][jtype] * screening; - fforce = factor_coul*forceyukawa * rinv; + fforce = factor_lj*forceyukawa * rinv; phi = a[itype][jtype]/kappa * screening - offset[itype][jtype]; - return factor_coul*phi; + return factor_lj*phi; } diff --git a/src/COLLOID/pair_yukawa_colloid.h b/src/COLLOID/pair_yukawa_colloid.h index 4e70c5233e..6db573a6a3 100644 --- a/src/COLLOID/pair_yukawa_colloid.h +++ b/src/COLLOID/pair_yukawa_colloid.h @@ -27,8 +27,8 @@ namespace LAMMPS_NS { class PairYukawaColloid : public PairYukawa { public: PairYukawaColloid(class LAMMPS *); - ~PairYukawaColloid() {} - void compute(int, int); + virtual ~PairYukawaColloid() {} + virtual void compute(int, int); void init_style(); double init_one(int, int); double single(int, int, int, int, double, double, double, double &); diff --git a/src/DIPOLE/atom_vec_dipole.cpp b/src/DIPOLE/atom_vec_dipole.cpp index 8d75db578a..64ec41d589 100644 --- a/src/DIPOLE/atom_vec_dipole.cpp +++ b/src/DIPOLE/atom_vec_dipole.cpp @@ -60,7 +60,7 @@ void AtomVecDipole::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); @@ -68,7 +68,7 @@ void AtomVecDipole::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); q = memory->grow(atom->q,nmax,"atom:q"); mu = memory->grow(atom->mu,nmax,4,"atom:mu"); @@ -762,11 +762,11 @@ void AtomVecDipole::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); type[nlocal] = atoi(values[1]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); q[nlocal] = atof(values[2]); @@ -822,7 +822,7 @@ bigint AtomVecDipole::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("q")) bytes += memory->usage(q,nmax); if (atom->memcheck("mu")) bytes += memory->usage(mu,nmax,4); diff --git a/src/DIPOLE/pair_dipole_cut.cpp b/src/DIPOLE/pair_dipole_cut.cpp index 3f9e79332e..f443854b90 100644 --- a/src/DIPOLE/pair_dipole_cut.cpp +++ b/src/DIPOLE/pair_dipole_cut.cpp @@ -24,9 +24,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairDipoleCut::PairDipoleCut(LAMMPS *lmp) : Pair(lmp) @@ -294,7 +291,7 @@ void PairDipoleCut::allocate() void PairDipoleCut::settings(int narg, char **arg) { if (narg < 1 || narg > 2) - error->all("Incorrect args in pair_style command"); + error->all(FLERR,"Incorrect args in pair_style command"); cut_lj_global = force->numeric(arg[0]); if (narg == 1) cut_coul_global = cut_lj_global; @@ -320,7 +317,7 @@ void PairDipoleCut::settings(int narg, char **arg) void PairDipoleCut::coeff(int narg, char **arg) { if (narg < 4 || narg > 6) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -347,7 +344,7 @@ void PairDipoleCut::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -357,7 +354,7 @@ void PairDipoleCut::coeff(int narg, char **arg) void PairDipoleCut::init_style() { if (!atom->q_flag || !atom->mu_flag || !atom->torque_flag) - error->all("Pair dipole/cut requires atom attributes q, mu, torque"); + error->all(FLERR,"Pair dipole/cut requires atom attributes q, mu, torque"); neighbor->request(this); } diff --git a/src/DIPOLE/pair_dipole_cut.h b/src/DIPOLE/pair_dipole_cut.h index b69e845e2f..a828d6307b 100644 --- a/src/DIPOLE/pair_dipole_cut.h +++ b/src/DIPOLE/pair_dipole_cut.h @@ -26,9 +26,9 @@ namespace LAMMPS_NS { class PairDipoleCut : public Pair { public: - PairDipoleCut(class LAMMPS *); - ~PairDipoleCut(); - void compute(int, int); + PairDipoleCut(class LAMMPS *); + virtual ~PairDipoleCut(); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); void init_style(); @@ -38,7 +38,7 @@ class PairDipoleCut : public Pair { void write_restart_settings(FILE *); void read_restart_settings(FILE *); - private: + protected: double cut_lj_global,cut_coul_global; double **cut_lj,**cut_ljsq; double **cut_coul,**cut_coulsq; diff --git a/src/DSMC/Install.sh b/src/DSMC/Install.sh deleted file mode 100644 index 60e34982ca..0000000000 --- a/src/DSMC/Install.sh +++ /dev/null @@ -1,15 +0,0 @@ -# Install/unInstall package files in LAMMPS - -if (test $1 = 1) then - - cp pair_dsmc.cpp .. - - cp pair_dsmc.h .. - -elif (test $1 = 0) then - - rm -f ../pair_dsmc.cpp - - rm -f ../pair_dsmc.h - -fi diff --git a/src/GPU/fix_gpu.cpp b/src/GPU/fix_gpu.cpp index ba7952c4a5..a811657d8d 100644 --- a/src/GPU/fix_gpu.cpp +++ b/src/GPU/fix_gpu.cpp @@ -43,10 +43,11 @@ extern double lmp_gpu_forces(double **f, double **tor, double *eatom, FixGPU::FixGPU(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (lmp->cuda) error->all("Cannot use fix GPU with USER-CUDA mode enabled"); + if (lmp->cuda) + error->all(FLERR,"Cannot use fix GPU with USER-CUDA mode enabled"); - if (narg < 7) error->all("Illegal fix GPU command"); - if (strcmp(arg[1],"all") != 0) error->all("Illegal fix GPU command"); + if (narg < 7) error->all(FLERR,"Illegal fix GPU command"); + if (strcmp(arg[1],"all") != 0) error->all(FLERR,"Illegal fix GPU command"); int first_gpu, last_gpu; @@ -55,20 +56,21 @@ FixGPU::FixGPU(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[3],"force/neigh") == 0) { _gpu_mode = GPU_NEIGH; if (domain->triclinic) - error->all("Cannot use force/neigh with triclinic box"); + error->all(FLERR,"Cannot use force/neigh with triclinic box"); } else if (strcmp(arg[3],"force/hybrid_neigh") == 0) { _gpu_mode = GPU_HYB_NEIGH; if (domain->triclinic) - error->all("Cannot use force/hybrid_neigh with triclinic box"); + error->all(FLERR, + "Cannot use force/hybrid_neigh with triclinic box"); } else - error->all("Illegal fix GPU command"); + error->all(FLERR,"Illegal fix GPU command"); first_gpu = atoi(arg[4]); last_gpu = atoi(arg[5]); _particle_split = force->numeric(arg[6]); if (_particle_split==0 || _particle_split>1) - error->all("Illegal fix GPU command"); + error->all(FLERR,"Illegal fix GPU command"); int nthreads = 1; int threads_per_atom = -1; @@ -78,16 +80,16 @@ FixGPU::FixGPU(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[7],"nthreads") == 0) nthreads = atoi(arg[8]); else - error->all("Illegal fix GPU command"); + error->all(FLERR,"Illegal fix GPU command"); } else if (narg != 7) - error->all("Illegal fix GPU command"); + error->all(FLERR,"Illegal fix GPU command"); if (nthreads < 1) - error->all("Illegal fix GPU command"); + error->all(FLERR,"Illegal fix GPU command"); #ifndef _OPENMP if (nthreads > 1) - error->all("No OpenMP support compiled in"); + error->all(FLERR,"No OpenMP support compiled in"); #endif int gpu_flag = lmp_init_device(universe->uworld, world, first_gpu, last_gpu, @@ -117,18 +119,16 @@ int FixGPU::setmask() void FixGPU::init() { - // Can only have 1 gpu fix that must be the first fix for a run - if ((void*)modify->fix[0] != (void*)this) - error->all("GPU is not the first fix for this run"); - // Hybrid cannot be used with force/neigh option + // hybrid cannot be used with force/neigh option + if (_gpu_mode == GPU_NEIGH || _gpu_mode == GPU_HYB_NEIGH) if (force->pair_match("hybrid",1) != NULL || force->pair_match("hybrid/overlay",1) != NULL) - error->all("Cannot use pair hybrid with GPU neighbor builds"); + error->all(FLERR,"Cannot use pair hybrid with GPU neighbor builds"); if (_particle_split < 0) if (force->pair_match("hybrid",1) != NULL || force->pair_match("hybrid/overlay",1) != NULL) - error->all("Fix GPU split must be positive for hybrid pair styles"); + error->all(FLERR,"Fix GPU split must be positive for hybrid pair styles"); } /* ---------------------------------------------------------------------- */ diff --git a/src/GPU/gpu_extra.h b/src/GPU/gpu_extra.h index 30faef139d..d9bbb7eaa6 100755 --- a/src/GPU/gpu_extra.h +++ b/src/GPU/gpu_extra.h @@ -28,17 +28,19 @@ namespace GPU_EXTRA { MPI_Allreduce(&error_flag, &all_success, 1, MPI_INT, MPI_MIN, world); if (all_success != 0) { if (all_success == -1) - error->all("Accelerated style in input script but no fix gpu."); + error->all(FLERR,"Accelerated style in input script but no fix gpu"); else if (all_success == -2) - error->all("Could not find/initialize a specified accelerator device."); + error->all(FLERR, + "Could not find/initialize a specified accelerator device"); else if (all_success == -3) - error->all("Insufficient memory on accelerator."); + error->all(FLERR,"Insufficient memory on accelerator"); else if (all_success == -4) - error->all("GPU library not compiled for this accelerator."); + error->all(FLERR,"GPU library not compiled for this accelerator"); else if (all_success == -5) - error->all("Double precision is not supported on this accelerator."); + error->all(FLERR, + "Double precision is not supported on this accelerator"); else - error->all("Unknown error in GPU library."); + error->all(FLERR,"Unknown error in GPU library"); } } diff --git a/src/GPU/pair_cg_cmm_coul_long_gpu.cpp b/src/GPU/pair_cg_cmm_coul_long_gpu.cpp index f964a2b43e..b9439835d8 100644 --- a/src/GPU/pair_cg_cmm_coul_long_gpu.cpp +++ b/src/GPU/pair_cg_cmm_coul_long_gpu.cpp @@ -37,9 +37,6 @@ #include "kspace.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -126,7 +123,7 @@ void PairCGCMMCoulLongGPU::compute(int eflag, int vflag) atom->nlocal, domain->boxlo, domain->prd); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startq_flag) - error->all("Pair style cg/cmm/coul/long/gpu requires atom attribute q"); + error->all(FLERR,"Pair style cg/cmm/coul/long/gpu requires atom attribute q"); if (force->newton_pair) - error->all("Cannot use newton pair with GPU cg/cmm/coul/long/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with cg/cmm/coul/long/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; @@ -168,7 +165,7 @@ void PairCGCMMCoulLongGPU::init_style() // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables diff --git a/src/GPU/pair_cg_cmm_coul_msm.cpp b/src/GPU/pair_cg_cmm_coul_msm.cpp index d1e9b22775..5321945eb2 100644 --- a/src/GPU/pair_cg_cmm_coul_msm.cpp +++ b/src/GPU/pair_cg_cmm_coul_msm.cpp @@ -16,19 +16,17 @@ Contributing author: Mike Brown ------------------------------------------------------------------------- */ +#include "string.h" #include "pair_cg_cmm_coul_msm.h" #include "memory.h" #include "atom.h" #include "force.h" #include "kspace.h" -#include "string.h" - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -enum {C3=0,C4=1}; - using namespace LAMMPS_NS; +enum {C3=0,C4=1}; + /* ---------------------------------------------------------------------- */ PairCGCMMCoulMSM::PairCGCMMCoulMSM(LAMMPS *lmp) : PairCMMCommon(lmp) @@ -73,13 +71,13 @@ void PairCGCMMCoulMSM::settings(int narg, char **arg) { // strip off smoothing type and send args to parent - if (narg < 1) error->all("Illegal pair_style command"); + if (narg < 1) error->all(FLERR,"Illegal pair_style command"); if (strcmp(arg[0],"C3") == 0) _smooth = C3; else if (strcmp(arg[0],"C4") == 0) _smooth = C4; - else error->all("Illegal pair_style command"); + else error->all(FLERR,"Illegal pair_style command"); PairCMMCommon::settings(narg-1,&arg[1]); } @@ -89,7 +87,7 @@ void PairCGCMMCoulMSM::settings(int narg, char **arg) void PairCGCMMCoulMSM::init_style() { if (!atom->q_flag) - error->all("Pair style cg/cut/coul/msm requires atom attribute q"); + error->all(FLERR,"Pair style cg/cut/coul/msm requires atom attribute q"); PairCMMCommon::init_style(); _ia=-1.0/cut_coul_global; diff --git a/src/GPU/pair_cg_cmm_coul_msm_gpu.cpp b/src/GPU/pair_cg_cmm_coul_msm_gpu.cpp index 467691c84d..7e0dcc079d 100644 --- a/src/GPU/pair_cg_cmm_coul_msm_gpu.cpp +++ b/src/GPU/pair_cg_cmm_coul_msm_gpu.cpp @@ -36,10 +36,6 @@ #include "kspace.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) -enum {C3=0,C4=1}; - // External functions from cuda library for atom decomposition int cmmm_gpu_init(const int ntypes, double **cutsq, int **cg_type, @@ -69,6 +65,8 @@ double cmmm_gpu_bytes(); using namespace LAMMPS_NS; +enum {C3=0,C4=1}; + /* ---------------------------------------------------------------------- */ PairCGCMMCoulMSMGPU::PairCGCMMCoulMSMGPU(LAMMPS *lmp) : PairCGCMMCoulMSM(lmp), @@ -119,7 +117,7 @@ void PairCGCMMCoulMSMGPU::compute(int eflag, int vflag) atom->nlocal, domain->boxlo, domain->prd); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startnewton_pair) - error->all("Cannot use newton pair with cg/cmm/coul/msm/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with cg/cmm/coul/msm/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; diff --git a/src/GPU/pair_cg_cmm_gpu.cpp b/src/GPU/pair_cg_cmm_gpu.cpp index 58d72708bb..4e409bd37a 100644 --- a/src/GPU/pair_cg_cmm_gpu.cpp +++ b/src/GPU/pair_cg_cmm_gpu.cpp @@ -36,9 +36,6 @@ #include "string.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition int cmm_gpu_init(const int ntypes, double **cutsq, int **cg_types, @@ -111,7 +108,7 @@ void PairCGCMMGPU::compute(int eflag, int vflag) vflag_atom, host_start, cpu_time, success); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startnewton_pair) - error->all("Cannot use newton pair with cg/cmm/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with cg/cmm/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; diff --git a/src/GPU/pair_coul_long_gpu.cpp b/src/GPU/pair_coul_long_gpu.cpp index 82c0ccba0e..5d311a34f4 100644 --- a/src/GPU/pair_coul_long_gpu.cpp +++ b/src/GPU/pair_coul_long_gpu.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Mike Brown (SNL) + Contributing author: Axel Kohlmeyer (Temple) ------------------------------------------------------------------------- */ #include "lmptype.h" @@ -37,9 +37,6 @@ #include "kspace.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -123,7 +120,7 @@ void PairCoulLongGPU::compute(int eflag, int vflag) atom->nlocal, domain->boxlo, domain->prd); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startq_flag) - error->all("Pair style coul/long/gpu requires atom attribute q"); + error->all(FLERR,"Pair style coul/long/gpu requires atom attribute q"); if (force->newton_pair) - error->all("Cannot use newton pair with coul/long/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with coul/long/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double cell_size = sqrt(cut_coul) + neighbor->skin; @@ -153,7 +150,7 @@ void PairCoulLongGPU::init_style() // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables diff --git a/src/GPU/pair_gayberne_gpu.cpp b/src/GPU/pair_gayberne_gpu.cpp index b3224f7e02..ce65ca2c83 100644 --- a/src/GPU/pair_gayberne_gpu.cpp +++ b/src/GPU/pair_gayberne_gpu.cpp @@ -38,9 +38,6 @@ #include "string.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition int gb_gpu_init(const int ntypes, const double gamma, const double upsilon, @@ -77,7 +74,7 @@ PairGayBerneGPU::PairGayBerneGPU(LAMMPS *lmp) : PairGayBerne(lmp), { avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); if (!avec) - error->all("Pair gayberne requires atom style ellipsoid"); + error->all(FLERR,"Pair gayberne requires atom style ellipsoid"); quat_nmax = 0; quat = NULL; } @@ -140,7 +137,7 @@ void PairGayBerneGPU::compute(int eflag, int vflag) cpu_time, success, quat); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_start < inum) { cpu_time = MPI_Wtime(); @@ -156,9 +153,9 @@ void PairGayBerneGPU::compute(int eflag, int vflag) void PairGayBerneGPU::init_style() { if (force->newton_pair) - error->all("Cannot use newton pair with gayberne/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with gayberne/gpu pair style"); if (!atom->ellipsoid_flag) - error->all("Pair gayberne/gpu requires atom style ellipsoid"); + error->all(FLERR,"Pair gayberne/gpu requires atom style ellipsoid"); // per-type shape precalculations // require that atom shapes are identical within each type @@ -166,7 +163,7 @@ void PairGayBerneGPU::init_style() for (int i = 1; i <= atom->ntypes; i++) { if (!atom->shape_consistency(i,shape1[i][0],shape1[i][1],shape1[i][2])) - error->all("Pair gayberne/gpu requires atoms with same type have same shape"); + error->all(FLERR,"Pair gayberne/gpu requires atoms with same type have same shape"); if (shape1[i][0] == 0.0) shape1[i][0] = shape1[i][1] = shape1[i][2] = 1.0; shape2[i][0] = shape1[i][0]*shape1[i][0]; diff --git a/src/GPU/pair_lj96_cut_gpu.cpp b/src/GPU/pair_lj96_cut_gpu.cpp index 4e4417692e..b678d842e9 100644 --- a/src/GPU/pair_lj96_cut_gpu.cpp +++ b/src/GPU/pair_lj96_cut_gpu.cpp @@ -36,9 +36,6 @@ #include "string.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition int lj96_gpu_init(const int ntypes, double **cutsq, double **host_lj1, @@ -110,7 +107,7 @@ void PairLJ96CutGPU::compute(int eflag, int vflag) vflag_atom, host_start, cpu_time, success); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startnewton_pair) - error->all("Cannot use newton pair with lj96/cut/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with lj96/cut/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; diff --git a/src/GPU/pair_lj_charmm_coul_long_gpu.cpp b/src/GPU/pair_lj_charmm_coul_long_gpu.cpp index 9be332ee5f..488d4195f4 100644 --- a/src/GPU/pair_lj_charmm_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_charmm_coul_long_gpu.cpp @@ -37,9 +37,6 @@ #include "kspace.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -129,7 +126,7 @@ void PairLJCharmmCoulLongGPU::compute(int eflag, int vflag) atom->nlocal, domain->boxlo, domain->prd); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startq_flag) - error->all("Pair style lj/charmm/coul/long/gpu requires atom attribute q"); + error->all(FLERR,"Pair style lj/charmm/coul/long/gpu requires atom attribute q"); if (force->newton_pair) - error->all("Cannot use newton pair with lj/charmm/coul/long/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with lj/charmm/coul/long/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double cut; @@ -173,7 +170,7 @@ void PairLJCharmmCoulLongGPU::init_style() // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables diff --git a/src/GPU/pair_lj_class2_coul_long_gpu.cpp b/src/GPU/pair_lj_class2_coul_long_gpu.cpp index a33723599b..adaee7ab6a 100644 --- a/src/GPU/pair_lj_class2_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_class2_coul_long_gpu.cpp @@ -37,9 +37,6 @@ #include "kspace.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -126,7 +123,7 @@ void PairLJClass2CoulLongGPU::compute(int eflag, int vflag) atom->nlocal, domain->boxlo, domain->prd); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startq_flag) - error->all("Pair style lj/class2/coul/long/gpu requires atom attribute q"); + error->all(FLERR,"Pair style lj/class2/coul/long/gpu requires atom attribute q"); if (force->newton_pair) - error->all("Cannot use newton pair with lj/class2/coul/long/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with lj/class2/coul/long/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; @@ -168,7 +165,7 @@ void PairLJClass2CoulLongGPU::init_style() // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; int maxspecial=0; diff --git a/src/GPU/pair_lj_class2_gpu.cpp b/src/GPU/pair_lj_class2_gpu.cpp index 0115ed956d..65dcea9040 100644 --- a/src/GPU/pair_lj_class2_gpu.cpp +++ b/src/GPU/pair_lj_class2_gpu.cpp @@ -36,9 +36,6 @@ #include "string.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition int lj96_gpu_init(const int ntypes, double **cutsq, double **host_lj1, @@ -109,7 +106,7 @@ void PairLJClass2GPU::compute(int eflag, int vflag) vflag_atom, host_start, cpu_time, success); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startnewton_pair) - error->all("Cannot use newton pair with lj/class2/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with lj/class2/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; diff --git a/src/GPU/pair_lj_cut_coul_cut_gpu.cpp b/src/GPU/pair_lj_cut_coul_cut_gpu.cpp index 77f49055a4..33a49f20f3 100644 --- a/src/GPU/pair_lj_cut_coul_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_cut_gpu.cpp @@ -36,9 +36,6 @@ #include "string.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition int ljc_gpu_init(const int ntypes, double **cutsq, double **host_lj1, @@ -117,7 +114,7 @@ void PairLJCutCoulCutGPU::compute(int eflag, int vflag) atom->nlocal, domain->boxlo, domain->prd); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startq_flag) - error->all("Pair style lj/cut/coul/cut/gpu requires atom attribute q"); + error->all(FLERR,"Pair style lj/cut/coul/cut/gpu requires atom attribute q"); if (force->newton_pair) - error->all("Cannot use newton pair with lj/cut/coul/cut/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with lj/cut/coul/cut/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; diff --git a/src/GPU/pair_lj_cut_coul_long_gpu.cpp b/src/GPU/pair_lj_cut_coul_long_gpu.cpp index f24eb5a372..16f609f953 100644 --- a/src/GPU/pair_lj_cut_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_long_gpu.cpp @@ -37,9 +37,6 @@ #include "kspace.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -127,7 +124,7 @@ void PairLJCutCoulLongGPU::compute(int eflag, int vflag) atom->nlocal, domain->boxlo, domain->prd); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startq_flag) - error->all("Pair style lj/cut/coul/long/gpu requires atom attribute q"); + error->all(FLERR,"Pair style lj/cut/coul/long/gpu requires atom attribute q"); if (force->newton_pair) - error->all("Cannot use newton pair with lj/cut/could/cut/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with lj/cut/could/cut/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; @@ -171,7 +168,7 @@ void PairLJCutCoulLongGPU::init_style() // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables diff --git a/src/GPU/pair_lj_cut_gpu.cpp b/src/GPU/pair_lj_cut_gpu.cpp index 79a1bbdc3f..2c0c2f3f1d 100644 --- a/src/GPU/pair_lj_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_gpu.cpp @@ -36,9 +36,6 @@ #include "string.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition int ljl_gpu_init(const int ntypes, double **cutsq, double **host_lj1, @@ -110,7 +107,7 @@ void PairLJCutGPU::compute(int eflag, int vflag) vflag_atom, host_start, cpu_time, success); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startnewton_pair) - error->all("Cannot use newton pair with lj/cut/gpu pair style"); + 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; diff --git a/src/GPU/pair_lj_cut_tgpu.cpp b/src/GPU/pair_lj_cut_tgpu.cpp index 718b03d3f6..c39823ff7a 100644 --- a/src/GPU/pair_lj_cut_tgpu.cpp +++ b/src/GPU/pair_lj_cut_tgpu.cpp @@ -35,9 +35,6 @@ #include "string.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition int ljl_gpu_init(const int ntypes, double **cutsq, double **host_lj1, @@ -115,7 +112,7 @@ void PairLJCutTGPU::compute(int eflag, int vflag) vflag_atom, host_start, cpu_time, success); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startnewton_pair) - error->all("Cannot use newton pair with lj/cut/tgpu pair style"); + error->all(FLERR,"Cannot use newton pair with lj/cut/tgpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; diff --git a/src/GPU/pair_lj_expand_gpu.cpp b/src/GPU/pair_lj_expand_gpu.cpp index dc8bff6c3d..40c7ea1a37 100644 --- a/src/GPU/pair_lj_expand_gpu.cpp +++ b/src/GPU/pair_lj_expand_gpu.cpp @@ -36,9 +36,6 @@ #include "string.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition int lje_gpu_init(const int ntypes, double **cutsq, double **host_lj1, @@ -111,7 +108,7 @@ void PairLJExpandGPU::compute(int eflag, int vflag) vflag_atom, host_start, cpu_time, success); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startnewton_pair) - error->all("Cannot use newton pair with lj/expand/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with lj/expand/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; diff --git a/src/GPU/pair_morse_gpu.cpp b/src/GPU/pair_morse_gpu.cpp index 9bee6b7316..0867e5a998 100644 --- a/src/GPU/pair_morse_gpu.cpp +++ b/src/GPU/pair_morse_gpu.cpp @@ -36,9 +36,6 @@ #include "string.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition int mor_gpu_init(const int ntypes, double **cutsq, double **host_morse1, @@ -109,7 +106,7 @@ void PairMorseGPU::compute(int eflag, int vflag) vflag_atom, host_start, cpu_time, success); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_startnewton_pair) - error->all("Cannot use newton pair with morse/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with morse/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; diff --git a/src/GPU/pair_omp_gpu.cpp b/src/GPU/pair_omp_gpu.cpp index b980203418..dc6229fd5e 100644 --- a/src/GPU/pair_omp_gpu.cpp +++ b/src/GPU/pair_omp_gpu.cpp @@ -42,14 +42,14 @@ PairOMPGPU::PairOMPGPU(LAMMPS *lmp) : Pointers(lmp) PairOMPGPU::~PairOMPGPU() { - mem_free(); + free_mem(); } /* ---------------------------------------------------------------------- free any allocated memory ------------------------------------------------------------------------- */ -void PairOMPGPU::mem_free() { +void PairOMPGPU::free_mem() { memory->sfree(eng_vdwl_thr); memory->sfree(eng_coul_thr); memory->destroy(virial_thr); @@ -71,7 +71,7 @@ void PairOMPGPU::mem_free() { void PairOMPGPU::init_style() { - mem_free(); + free_mem(); #pragma omp parallel { diff --git a/src/GPU/pair_omp_gpu.h b/src/GPU/pair_omp_gpu.h index 1ed36b49d5..4532cf5722 100644 --- a/src/GPU/pair_omp_gpu.h +++ b/src/GPU/pair_omp_gpu.h @@ -52,7 +52,7 @@ class PairOMPGPU : protected Pointers { PairOMPGPU(LAMMPS *); ~PairOMPGPU(); - void mem_free(); + void free_mem(); void init_style(); double memory_usage(); diff --git a/src/GPU/pair_resquared_gpu.cpp b/src/GPU/pair_resquared_gpu.cpp index 6d3d21bc9d..4057f45c5e 100644 --- a/src/GPU/pair_resquared_gpu.cpp +++ b/src/GPU/pair_resquared_gpu.cpp @@ -38,9 +38,6 @@ #include "string.h" #include "gpu_extra.h" -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition int re_gpu_init(const int ntypes, double **shape, double **well, @@ -76,7 +73,7 @@ PairRESquaredGPU::PairRESquaredGPU(LAMMPS *lmp) : PairRESquared(lmp), { avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); if (!avec) - error->all("Pair gayberne requires atom style ellipsoid"); + error->all(FLERR,"Pair gayberne requires atom style ellipsoid"); quat_nmax = 0; quat = NULL; } @@ -139,7 +136,7 @@ void PairRESquaredGPU::compute(int eflag, int vflag) cpu_time, success, quat); } if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (host_start < inum) { cpu_time = MPI_Wtime(); @@ -155,9 +152,9 @@ void PairRESquaredGPU::compute(int eflag, int vflag) void PairRESquaredGPU::init_style() { if (force->newton_pair) - error->all("Cannot use newton pair with resquared/gpu pair style"); + error->all(FLERR,"Cannot use newton pair with resquared/gpu pair style"); if (!atom->ellipsoid_flag) - error->all("Pair resquared/gpu requires atom style ellipsoid"); + error->all(FLERR,"Pair resquared/gpu requires atom style ellipsoid"); // per-type shape precalculations // require that atom shapes are identical within each type @@ -165,7 +162,7 @@ void PairRESquaredGPU::init_style() for (int i = 1; i <= atom->ntypes; i++) { if (!atom->shape_consistency(i,shape1[i][0],shape1[i][1],shape1[i][2])) - error->all("Pair resquared/gpu requires atoms with same type have same shape"); + error->all(FLERR,"Pair resquared/gpu requires atoms with same type have same shape"); if (setwell[i]) { shape2[i][0] = shape1[i][0]*shape1[i][0]; shape2[i][1] = shape1[i][1]*shape1[i][1]; diff --git a/src/GPU/pppm_gpu.cpp b/src/GPU/pppm_gpu.cpp index fc5338eafd..b707e7fab7 100644 --- a/src/GPU/pppm_gpu.cpp +++ b/src/GPU/pppm_gpu.cpp @@ -32,11 +32,13 @@ #include "domain.h" #include "fft3d_wrap.h" #include "remap_wrap.h" +#include "gpu_extra.h" +#include "math_const.h" #include "memory.h" #include "error.h" -#include "gpu_extra.h" using namespace LAMMPS_NS; +using namespace MathConst; #define MAXORDER 7 #define OFFSET 16384 @@ -52,9 +54,6 @@ using namespace LAMMPS_NS; #define ONEF 1.0 #endif -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - // External functions from cuda library for atom decomposition #ifdef FFT_SINGLE @@ -82,7 +81,7 @@ double PPPM_GPU_API(bytes)(); PPPMGPU::PPPMGPU(LAMMPS *lmp, int narg, char **arg) : PPPM(lmp, narg, arg) { - if (narg != 1) error->all("Illegal kspace_style pppm/gpu command"); + if (narg != 1) error->all(FLERR,"Illegal kspace_style pppm/gpu command"); density_brick_gpu = vd_brick = NULL; } @@ -106,7 +105,7 @@ void PPPMGPU::init() // GPU precision specific init. if (order>8) - error->all("Cannot use order greater than 8 with pppm/gpu."); + error->all(FLERR,"Cannot use order greater than 8 with pppm/gpu."); PPPM_GPU_API(clear)(poisson_time); int success; @@ -140,9 +139,9 @@ void PPPMGPU::compute(int eflag, int vflag) atom->q, domain->boxlo, delxinv, delyinv, delzinv); if (!success) - error->one("Out of memory on GPGPU"); + error->one(FLERR,"Out of memory on GPGPU"); if (flag != 0) - error->one("Out of range atoms - cannot compute PPPM"); + error->one(FLERR,"Out of range atoms - cannot compute PPPM"); int i; @@ -192,7 +191,7 @@ void PPPMGPU::compute(int eflag, int vflag) energy *= 0.5*volume; energy -= g_ewald*qsqsum/1.772453851 + - 0.5*PI*qsum*qsum / (g_ewald*g_ewald*volume); + MY_PI2*qsum*qsum / (g_ewald*g_ewald*volume); energy *= qqrd2e*scale; } diff --git a/src/GRANULAR/fix_freeze.cpp b/src/GRANULAR/fix_freeze.cpp index 997337a67b..848574e5fe 100644 --- a/src/GRANULAR/fix_freeze.cpp +++ b/src/GRANULAR/fix_freeze.cpp @@ -27,10 +27,10 @@ using namespace LAMMPS_NS; FixFreeze::FixFreeze(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 3) error->all("Illegal fix freeze command"); + if (narg != 3) error->all(FLERR,"Illegal fix freeze command"); if (!atom->torque_flag) - error->all("Fix freeze requires atom attribute torque"); + error->all(FLERR,"Fix freeze requires atom attribute torque"); vector_flag = 1; size_vector = 3; @@ -61,7 +61,7 @@ void FixFreeze::init() int count = 0; for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"freeze") == 0) count++; - if (count > 1) error->all("More than one fix freeze"); + if (count > 1) error->all(FLERR,"More than one fix freeze"); } /* ---------------------------------------------------------------------- */ diff --git a/src/GRANULAR/fix_pour.cpp b/src/GRANULAR/fix_pour.cpp index 1248c05db0..fe0ce40f31 100644 --- a/src/GRANULAR/fix_pour.cpp +++ b/src/GRANULAR/fix_pour.cpp @@ -27,10 +27,12 @@ #include "region_block.h" #include "region_cylinder.h" #include "random_park.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define EPSILON 0.001 @@ -39,12 +41,12 @@ using namespace LAMMPS_NS; FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 6) error->all("Illegal fix pour command"); + if (narg < 6) error->all(FLERR,"Illegal fix pour command"); time_depend = 1; if (!atom->radius_flag || !atom->rmass_flag) - error->all("Fix pour requires atom attributes radius, rmass"); + error->all(FLERR,"Fix pour requires atom attributes radius, rmass"); // required args @@ -52,9 +54,7 @@ FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) : ntype = atoi(arg[4]); seed = atoi(arg[5]); - if (seed <= 0) error->all("Illegal fix pour command"); - - PI = 4.0*atan(1.0); + if (seed <= 0) error->all(FLERR,"Illegal fix pour command"); // option defaults @@ -71,32 +71,32 @@ FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) : int iarg = 6; while (iarg < narg) { if (strcmp(arg[iarg],"region") == 0) { - if (iarg+2 > narg) error->all("Illegal fix pour command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix pour command"); iregion = domain->find_region(arg[iarg+1]); - if (iregion == -1) error->all("Fix pour region ID does not exist"); + if (iregion == -1) error->all(FLERR,"Fix pour region ID does not exist"); iarg += 2; } else if (strcmp(arg[iarg],"diam") == 0) { - if (iarg+3 > narg) error->all("Illegal fix pour command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix pour command"); radius_lo = 0.5 * atof(arg[iarg+1]); radius_hi = 0.5 * atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"dens") == 0) { - if (iarg+3 > narg) error->all("Illegal fix pour command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix pour command"); density_lo = atof(arg[iarg+1]); density_hi = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"vol") == 0) { - if (iarg+3 > narg) error->all("Illegal fix pour command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix pour command"); volfrac = atof(arg[iarg+1]); maxattempt = atoi(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"rate") == 0) { - if (iarg+2 > narg) error->all("Illegal fix pour command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix pour command"); rate = atof(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"vel") == 0) { if (domain->dimension == 3) { - if (iarg+6 > narg) error->all("Illegal fix pour command"); + if (iarg+6 > narg) error->all(FLERR,"Illegal fix pour command"); vxlo = atof(arg[iarg+1]); vxhi = atof(arg[iarg+2]); vylo = atof(arg[iarg+3]); @@ -104,23 +104,23 @@ FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) : vz = atof(arg[iarg+5]); iarg += 6; } else { - if (iarg+4 > narg) error->all("Illegal fix pour command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix pour command"); vxlo = atof(arg[iarg+1]); vxhi = atof(arg[iarg+2]); vy = atof(arg[iarg+3]); vz = 0.0; iarg += 4; } - } else error->all("Illegal fix pour command"); + } else error->all(FLERR,"Illegal fix pour command"); } // error checks on region and its extent being inside simulation box - if (iregion == -1) error->all("Must specify a region in fix pour"); + if (iregion == -1) error->all(FLERR,"Must specify a region in fix pour"); if (domain->regions[iregion]->bboxflag == 0) - error->all("Fix pour region does not support a bounding box"); + error->all(FLERR,"Fix pour region does not support a bounding box"); if (domain->regions[iregion]->dynamic_check()) - error->all("Fix pour region cannot be dynamic"); + error->all(FLERR,"Fix pour region cannot be dynamic"); if (strcmp(domain->regions[iregion]->style,"block") == 0) { region_style = 1; @@ -133,7 +133,7 @@ FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) : if (xlo < domain->boxlo[0] || xhi > domain->boxhi[0] || ylo < domain->boxlo[1] || yhi > domain->boxhi[1] || zlo < domain->boxlo[2] || zhi > domain->boxhi[2]) - error->all("Insertion region extends outside simulation box"); + error->all(FLERR,"Insertion region extends outside simulation box"); } else if (strcmp(domain->regions[iregion]->style,"cylinder") == 0) { region_style = 2; char axis = ((RegCylinder *) domain->regions[iregion])->axis; @@ -143,15 +143,15 @@ FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) : zlo = ((RegCylinder *) domain->regions[iregion])->lo; zhi = ((RegCylinder *) domain->regions[iregion])->hi; if (axis != 'z') - error->all("Must use a z-axis cylinder with fix pour"); + error->all(FLERR,"Must use a z-axis cylinder with fix pour"); if (xc-rc < domain->boxlo[0] || xc+rc > domain->boxhi[0] || yc-rc < domain->boxlo[1] || yc+rc > domain->boxhi[1] || zlo < domain->boxlo[2] || zhi > domain->boxhi[2]) - error->all("Insertion region extends outside simulation box"); - } else error->all("Must use a block or cylinder region with fix pour"); + error->all(FLERR,"Insertion region extends outside simulation box"); + } else error->all(FLERR,"Must use a block or cylinder region with fix pour"); if (region_style == 2 && domain->dimension == 2) - error->all("Must use a block region with fix pour for 2d simulations"); + error->all(FLERR,"Must use a block region with fix pour for 2d simulations"); // random number generator, same for all procs @@ -168,10 +168,12 @@ FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) : // assume grav = -magnitude at this point, enforce in init() int ifix; - for (ifix = 0; ifix < modify->nfix; ifix++) + for (ifix = 0; ifix < modify->nfix; ifix++) { if (strcmp(modify->fix[ifix]->style,"gravity") == 0) break; + if (strcmp(modify->fix[ifix]->style,"gravity/omp") == 0) break; + } if (ifix == modify->nfix) - error->all("No fix gravity defined for fix pour"); + error->all(FLERR,"No fix gravity defined for fix pour"); grav = - ((FixGravity *) modify->fix[ifix])->magnitude * force->ftm2v; // nfreq = timesteps between insertions @@ -214,11 +216,11 @@ FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) : double dy = yhi - ylo; if (dy < 1.0) dy = 1.0; volume = (xhi-xlo) * dy * (zhi-zlo); - } else volume = PI*rc*rc * (zhi-zlo); - volume_one = 4.0/3.0 * PI * radius_hi*radius_hi*radius_hi; + } else volume = MY_PI*rc*rc * (zhi-zlo); + volume_one = 4.0/3.0 * MY_PI * radius_hi*radius_hi*radius_hi; } else { volume = (xhi-xlo) * (yhi-ylo); - volume_one = PI * radius_hi*radius_hi; + volume_one = MY_PI * radius_hi*radius_hi; } nper = static_cast (volfrac*volume/volume_one); @@ -260,17 +262,19 @@ int FixPour::setmask() void FixPour::init() { - if (domain->triclinic) error->all("Cannot use fix pour with triclinic box"); + if (domain->triclinic) error->all(FLERR,"Cannot use fix pour with triclinic box"); // insure gravity fix exists // for 3d must point in -z, for 2d must point in -y // else insertion cannot work int ifix; - for (ifix = 0; ifix < modify->nfix; ifix++) + for (ifix = 0; ifix < modify->nfix; ifix++) { if (strcmp(modify->fix[ifix]->style,"gravity") == 0) break; + if (strcmp(modify->fix[ifix]->style,"gravity/omp") == 0) break; + } if (ifix == modify->nfix) - error->all("No fix gravity defined for fix pour"); + error->all(FLERR,"No fix gravity defined for fix pour"); double xgrav = ((FixGravity *) modify->fix[ifix])->xgrav; double ygrav = ((FixGravity *) modify->fix[ifix])->ygrav; @@ -279,16 +283,16 @@ void FixPour::init() if (domain->dimension == 3) { if (fabs(xgrav) > EPSILON || fabs(ygrav) > EPSILON || fabs(zgrav+1.0) > EPSILON) - error->all("Gravity must point in -z to use with fix pour in 3d"); + error->all(FLERR,"Gravity must point in -z to use with fix pour in 3d"); } else { if (fabs(xgrav) > EPSILON || fabs(ygrav+1.0) > EPSILON || fabs(zgrav) > EPSILON) - error->all("Gravity must point in -y to use with fix pour in 2d"); + error->all(FLERR,"Gravity must point in -y to use with fix pour in 2d"); } double gnew = - ((FixGravity *) modify->fix[ifix])->magnitude * force->ftm2v; if (gnew != grav) - error->all("Gravity changed since fix pour was created"); + error->all(FLERR,"Gravity changed since fix pour was created"); } /* ---------------------------------------------------------------------- @@ -415,7 +419,7 @@ void FixPour::pre_exchange() ninserted += nnear-nprevious; if (nnear - nprevious < nnew && me == 0) - error->warning("Less insertions than requested",0); + error->warning(FLERR,"Less insertions than requested",0); // check if new atom is in my sub-box or above it if I'm highest proc // if so, add to my list via create_atom() @@ -472,7 +476,7 @@ void FixPour::pre_exchange() m = atom->nlocal - 1; atom->type[m] = ntype; atom->radius[m] = radtmp; - atom->rmass[m] = 4.0*PI/3.0 * radtmp*radtmp*radtmp * denstmp; + atom->rmass[m] = 4.0*MY_PI/3.0 * radtmp*radtmp*radtmp * denstmp; atom->mask[m] = 1 | groupbit; atom->v[m][0] = vxtmp; atom->v[m][1] = vytmp; @@ -573,5 +577,5 @@ void FixPour::xyz_random(double h, double *coord) void FixPour::reset_dt() { - error->all("Cannot change timestep with fix pour"); + error->all(FLERR,"Cannot change timestep with fix pour"); } diff --git a/src/GRANULAR/fix_pour.h b/src/GRANULAR/fix_pour.h index d279f54046..1880597139 100644 --- a/src/GRANULAR/fix_pour.h +++ b/src/GRANULAR/fix_pour.h @@ -26,8 +26,11 @@ namespace LAMMPS_NS { class FixPour : public Fix { friend class PairGranHertzHistory; + friend class PairGranHertzHistoryOMP; friend class PairGranHooke; + friend class PairGranHookeOMP; friend class PairGranHookeHistory; + friend class PairGranHookeHistoryOMP; friend class PairGranHookeCuda; public: @@ -53,7 +56,6 @@ class FixPour : public Fix { int me,nprocs; int *recvcounts,*displs; - double PI; int nfreq,nfirst,ninserted,nper; double lo_current,hi_current; class FixShearHistory *fix_history; diff --git a/src/GRANULAR/fix_wall_gran.cpp b/src/GRANULAR/fix_wall_gran.cpp index 9758283399..020425d110 100644 --- a/src/GRANULAR/fix_wall_gran.cpp +++ b/src/GRANULAR/fix_wall_gran.cpp @@ -26,28 +26,27 @@ #include "pair.h" #include "modify.h" #include "respa.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; enum{XPLANE,YPLANE,ZPLANE,ZCYLINDER}; // XYZ PLANE need to be 0,1,2 enum{HOOKE,HOOKE_HISTORY,HERTZ_HISTORY}; #define BIG 1.0e20 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 10) error->all("Illegal fix wall/gran command"); + if (narg < 10) error->all(FLERR,"Illegal fix wall/gran command"); if (!atom->sphere_flag) - error->all("Fix wall/gran requires atom style sphere"); + error->all(FLERR,"Fix wall/gran requires atom style sphere"); restart_peratom = 1; create_attribute = 1; @@ -69,7 +68,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : if (kn < 0.0 || kt < 0.0 || gamman < 0.0 || gammat < 0.0 || xmu < 0.0 || xmu > 1.0 || dampflag < 0 || dampflag > 1) - error->all("Illegal fix wall/gran command"); + error->all(FLERR,"Illegal fix wall/gran command"); // convert Kn and Kt from pressure units to force/distance^2 if Hertzian @@ -82,7 +81,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : int iarg = 9; if (strcmp(arg[iarg],"xplane") == 0) { - if (narg < iarg+3) error->all("Illegal fix wall/gran command"); + if (narg < iarg+3) error->all(FLERR,"Illegal fix wall/gran command"); wallstyle = XPLANE; if (strcmp(arg[iarg+1],"NULL") == 0) lo = -BIG; else lo = atof(arg[iarg+1]); @@ -90,7 +89,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : else hi = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"yplane") == 0) { - if (narg < iarg+3) error->all("Illegal fix wall/gran command"); + if (narg < iarg+3) error->all(FLERR,"Illegal fix wall/gran command"); wallstyle = YPLANE; if (strcmp(arg[iarg+1],"NULL") == 0) lo = -BIG; else lo = atof(arg[iarg+1]); @@ -98,7 +97,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : else hi = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"zplane") == 0) { - if (narg < iarg+3) error->all("Illegal fix wall/gran command"); + if (narg < iarg+3) error->all(FLERR,"Illegal fix wall/gran command"); wallstyle = ZPLANE; if (strcmp(arg[iarg+1],"NULL") == 0) lo = -BIG; else lo = atof(arg[iarg+1]); @@ -106,7 +105,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : else hi = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"zcylinder") == 0) { - if (narg < iarg+2) error->all("Illegal fix wall/gran command"); + if (narg < iarg+2) error->all(FLERR,"Illegal fix wall/gran command"); wallstyle = ZCYLINDER; lo = hi = 0.0; cylradius = atof(arg[iarg+1]); @@ -120,52 +119,49 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"wiggle") == 0) { - if (iarg+4 > narg) error->all("Illegal fix wall/gran command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix wall/gran command"); if (strcmp(arg[iarg+1],"x") == 0) axis = 0; else if (strcmp(arg[iarg+1],"y") == 0) axis = 1; else if (strcmp(arg[iarg+1],"z") == 0) axis = 2; - else error->all("Illegal fix wall/gran command"); + else error->all(FLERR,"Illegal fix wall/gran command"); amplitude = atof(arg[iarg+2]); period = atof(arg[iarg+3]); wiggle = 1; iarg += 4; } else if (strcmp(arg[iarg],"shear") == 0) { - if (iarg+3 > narg) error->all("Illegal fix wall/gran command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix wall/gran command"); if (strcmp(arg[iarg+1],"x") == 0) axis = 0; else if (strcmp(arg[iarg+1],"y") == 0) axis = 1; else if (strcmp(arg[iarg+1],"z") == 0) axis = 2; - else error->all("Illegal fix wall/gran command"); + else error->all(FLERR,"Illegal fix wall/gran command"); vshear = atof(arg[iarg+2]); wshear = 1; iarg += 3; - } else error->all("Illegal fix wall/gran command"); + } else error->all(FLERR,"Illegal fix wall/gran command"); } if (wallstyle == XPLANE && domain->xperiodic) - error->all("Cannot use wall in periodic dimension"); + error->all(FLERR,"Cannot use wall in periodic dimension"); if (wallstyle == YPLANE && domain->yperiodic) - error->all("Cannot use wall in periodic dimension"); + error->all(FLERR,"Cannot use wall in periodic dimension"); if (wallstyle == ZPLANE && domain->zperiodic) - error->all("Cannot use wall in periodic dimension"); + error->all(FLERR,"Cannot use wall in periodic dimension"); if (wallstyle == ZCYLINDER && (domain->xperiodic || domain->yperiodic)) - error->all("Cannot use wall in periodic dimension"); + error->all(FLERR,"Cannot use wall in periodic dimension"); - if (wiggle && wshear) error->all("Cannot wiggle and shear fix wall/gran"); + if (wiggle && wshear) error->all(FLERR,"Cannot wiggle and shear fix wall/gran"); if (wiggle && wallstyle == ZCYLINDER && axis != 2) - error->all("Invalid wiggle direction for fix wall/gran"); + error->all(FLERR,"Invalid wiggle direction for fix wall/gran"); if (wshear && wallstyle == XPLANE && axis == 0) - error->all("Invalid shear direction for fix wall/gran"); + error->all(FLERR,"Invalid shear direction for fix wall/gran"); if (wshear && wallstyle == YPLANE && axis == 1) - error->all("Invalid shear direction for fix wall/gran"); + error->all(FLERR,"Invalid shear direction for fix wall/gran"); if (wshear && wallstyle == ZPLANE && axis == 2) - error->all("Invalid shear direction for fix wall/gran"); + error->all(FLERR,"Invalid shear direction for fix wall/gran"); // setup oscillations - if (wiggle) { - double PI = 4.0 * atan(1.0); - omega = 2.0*PI / period; - } + if (wiggle) omega = 2.0*MY_PI / period; // perform initial allocation of atom-based arrays // register with Atom class @@ -224,9 +220,13 @@ void FixWallGran::init() pairstyle = HOOKE; else if (force->pair_match("gran/hooke/history",1)) pairstyle = HOOKE_HISTORY; + else if (force->pair_match("gran/hooke/history/omp",1)) + pairstyle = HOOKE_HISTORY; else if (force->pair_match("gran/hertz/history",1)) pairstyle = HERTZ_HISTORY; - else error->all("Fix wall/gran is incompatible with Pair style"); + else if (force->pair_match("gran/hertz/history/omp",1)) + pairstyle = HERTZ_HISTORY; + else error->all(FLERR,"Fix wall/gran is incompatible with Pair style"); } /* ---------------------------------------------------------------------- */ diff --git a/src/GRANULAR/fix_wall_gran.h b/src/GRANULAR/fix_wall_gran.h index ae260e478e..343511c860 100644 --- a/src/GRANULAR/fix_wall_gran.h +++ b/src/GRANULAR/fix_wall_gran.h @@ -27,12 +27,12 @@ namespace LAMMPS_NS { class FixWallGran : public Fix { public: FixWallGran(class LAMMPS *, int, char **); - ~FixWallGran(); + virtual ~FixWallGran(); int setmask(); void init(); void setup(int); - void post_force(int); - void post_force_respa(int, int, int); + virtual void post_force(int); + virtual void post_force_respa(int, int, int); double memory_usage(); void grow_arrays(int); @@ -46,7 +46,7 @@ class FixWallGran : public Fix { int maxsize_restart(); void reset_dt(); - private: + protected: int wallstyle,pairstyle,wiggle,wshear,axis; double kn,kt,gamman,gammat,xmu; double lo,hi,cylradius; diff --git a/src/GRANULAR/pair_gran_hertz_history.cpp b/src/GRANULAR/pair_gran_hertz_history.cpp index 6c193e3517..a418e9352d 100644 --- a/src/GRANULAR/pair_gran_hertz_history.cpp +++ b/src/GRANULAR/pair_gran_hertz_history.cpp @@ -28,9 +28,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairGranHertzHistory::PairGranHertzHistory(LAMMPS *lmp) : @@ -256,7 +253,7 @@ void PairGranHertzHistory::compute(int eflag, int vflag) void PairGranHertzHistory::settings(int narg, char **arg) { - if (narg != 6) error->all("Illegal pair_style command"); + if (narg != 6) error->all(FLERR,"Illegal pair_style command"); kn = force->numeric(arg[0]); if (strcmp(arg[1],"NULL") == 0) kt = kn * 2.0/7.0; @@ -272,7 +269,7 @@ void PairGranHertzHistory::settings(int narg, char **arg) if (kn < 0.0 || kt < 0.0 || gamman < 0.0 || gammat < 0.0 || xmu < 0.0 || xmu > 1.0 || dampflag < 0 || dampflag > 1) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); // convert Kn and Kt from pressure units to force/distance^2 diff --git a/src/GRANULAR/pair_gran_hertz_history.h b/src/GRANULAR/pair_gran_hertz_history.h index 87a63fa57f..5c5877a161 100644 --- a/src/GRANULAR/pair_gran_hertz_history.h +++ b/src/GRANULAR/pair_gran_hertz_history.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class PairGranHertzHistory : public PairGranHookeHistory { public: PairGranHertzHistory(class LAMMPS *); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); }; diff --git a/src/GRANULAR/pair_gran_hooke.cpp b/src/GRANULAR/pair_gran_hooke.cpp index 542bbaa582..95651e7606 100644 --- a/src/GRANULAR/pair_gran_hooke.cpp +++ b/src/GRANULAR/pair_gran_hooke.cpp @@ -25,9 +25,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairGranHooke::PairGranHooke(LAMMPS *lmp) : PairGranHookeHistory(lmp) diff --git a/src/GRANULAR/pair_gran_hooke.h b/src/GRANULAR/pair_gran_hooke.h index 565a766f61..d5cff796f2 100644 --- a/src/GRANULAR/pair_gran_hooke.h +++ b/src/GRANULAR/pair_gran_hooke.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class PairGranHooke : public PairGranHookeHistory { public: PairGranHooke(class LAMMPS *); - void compute(int, int); + virtual void compute(int, int); }; } diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp index 149fa696f0..847ed84a58 100644 --- a/src/GRANULAR/pair_gran_hooke_history.cpp +++ b/src/GRANULAR/pair_gran_hooke_history.cpp @@ -38,9 +38,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairGranHookeHistory::PairGranHookeHistory(LAMMPS *lmp) : Pair(lmp) @@ -49,6 +46,7 @@ PairGranHookeHistory::PairGranHookeHistory(LAMMPS *lmp) : Pair(lmp) no_virial_fdotr_compute = 1; history = 1; fix_history = NULL; + suffix = NULL; laststep = -1; } @@ -58,6 +56,7 @@ PairGranHookeHistory::PairGranHookeHistory(LAMMPS *lmp) : Pair(lmp) PairGranHookeHistory::~PairGranHookeHistory() { if (fix_history) modify->delete_fix("SHEAR_HISTORY"); + if (suffix) delete[] suffix; if (allocated) { memory->destroy(setflag); @@ -311,7 +310,7 @@ void PairGranHookeHistory::allocate() void PairGranHookeHistory::settings(int narg, char **arg) { - if (narg != 6) error->all("Illegal pair_style command"); + if (narg != 6) error->all(FLERR,"Illegal pair_style command"); kn = force->numeric(arg[0]); if (strcmp(arg[1],"NULL") == 0) kt = kn * 2.0/7.0; @@ -327,7 +326,7 @@ void PairGranHookeHistory::settings(int narg, char **arg) if (kn < 0.0 || kt < 0.0 || gamman < 0.0 || gammat < 0.0 || xmu < 0.0 || xmu > 1.0 || dampflag < 0 || dampflag > 1) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -336,7 +335,7 @@ void PairGranHookeHistory::settings(int narg, char **arg) void PairGranHookeHistory::coeff(int narg, char **arg) { - if (narg > 2) error->all("Incorrect args for pair coefficients"); + if (narg > 2) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -351,7 +350,7 @@ void PairGranHookeHistory::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -365,9 +364,9 @@ void PairGranHookeHistory::init_style() // error and warning checks if (!atom->sphere_flag) - error->all("Pair granular requires atom style sphere"); + error->all(FLERR,"Pair granular requires atom style sphere"); if (comm->ghost_velocity == 0) - error->all("Pair granular requires ghost atoms store velocity"); + error->all(FLERR,"Pair granular requires ghost atoms store velocity"); // need a half neigh list and optionally a granular history neigh list @@ -389,14 +388,14 @@ void PairGranHookeHistory::init_style() // if first init, create Fix needed for storing shear history if (history && force->newton_pair == 1) - error->all("Pair granular with shear history requires newton pair off"); + error->all(FLERR,"Pair granular with shear history requires newton pair off"); if (history && fix_history == NULL) { char **fixarg = new char*[3]; fixarg[0] = (char *) "SHEAR_HISTORY"; fixarg[1] = (char *) "all"; fixarg[2] = (char *) "SHEAR_HISTORY"; - modify->add_fix(3,fixarg); + modify->add_fix(3,fixarg,suffix); delete [] fixarg; fix_history = (FixShearHistory *) modify->fix[modify->nfix-1]; fix_history->pair = this; diff --git a/src/GRANULAR/pair_gran_hooke_history.h b/src/GRANULAR/pair_gran_hooke_history.h index 2bc2cf63cc..e645c12bfe 100644 --- a/src/GRANULAR/pair_gran_hooke_history.h +++ b/src/GRANULAR/pair_gran_hooke_history.h @@ -49,7 +49,8 @@ class PairGranHookeHistory : public Pair { bigint laststep; class FixShearHistory *fix_history; - int shearupdate; + + char *suffix; double *onerad_dynamic,*onerad_frozen; double *maxrad_dynamic,*maxrad_frozen; diff --git a/src/KSPACE/ewald.cpp b/src/KSPACE/ewald.cpp index ad7a5923ec..b6cff3d932 100644 --- a/src/KSPACE/ewald.cpp +++ b/src/KSPACE/ewald.cpp @@ -26,24 +26,22 @@ #include "force.h" #include "pair.h" #include "domain.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define SMALL 0.00001 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ Ewald::Ewald(LAMMPS *lmp, int narg, char **arg) : KSpace(lmp, narg, arg) { - if (narg != 1) error->all("Illegal kspace_style ewald command"); + if (narg != 1) error->all(FLERR,"Illegal kspace_style ewald command"); precision = atof(arg[0]); - PI = 4.0*atan(1.0); kmax = 0; kxvecs = kyvecs = kzvecs = NULL; @@ -81,18 +79,18 @@ void Ewald::init() // error check - if (domain->triclinic) error->all("Cannot use Ewald with triclinic box"); + if (domain->triclinic) error->all(FLERR,"Cannot use Ewald with triclinic box"); if (domain->dimension == 2) - error->all("Cannot use Ewald with 2d simulation"); + error->all(FLERR,"Cannot use Ewald with 2d simulation"); - if (!atom->q_flag) error->all("Kspace style requires atom attribute q"); + if (!atom->q_flag) error->all(FLERR,"Kspace style requires atom attribute q"); if (slabflag == 0 && domain->nonperiodic > 0) - error->all("Cannot use nonperiodic boundaries with Ewald"); + error->all(FLERR,"Cannot use nonperiodic boundaries with Ewald"); if (slabflag == 1) { if (domain->xperiodic != 1 || domain->yperiodic != 1 || domain->boundary[2][0] != 1 || domain->boundary[2][1] != 1) - error->all("Incorrect boundaries with slab Ewald"); + error->all(FLERR,"Incorrect boundaries with slab Ewald"); } // extract short-range Coulombic cutoff from pair style @@ -101,11 +99,11 @@ void Ewald::init() scale = 1.0; if (force->pair == NULL) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); int itmp; double *p_cutoff = (double *) force->pair->extract("cut_coul",itmp); if (p_cutoff == NULL) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); double cutoff = *p_cutoff; qsum = qsqsum = 0.0; @@ -121,11 +119,11 @@ void Ewald::init() qsqsum = tmp; if (qsqsum == 0.0) - error->all("Cannot use kspace solver on system with no charge"); + error->all(FLERR,"Cannot use kspace solver on system with no charge"); if (fabs(qsum) > SMALL && comm->me == 0) { char str[128]; sprintf(str,"System is not charge neutral, net charge = %g",qsum); - error->warning(str); + error->warning(FLERR,str); } // setup K-space resolution @@ -168,17 +166,17 @@ void Ewald::setup() double zprd_slab = zprd*slab_volfactor; volume = xprd * yprd * zprd_slab; - unitk[0] = 2.0*PI/xprd; - unitk[1] = 2.0*PI/yprd; - unitk[2] = 2.0*PI/zprd_slab; + unitk[0] = 2.0*MY_PI/xprd; + unitk[1] = 2.0*MY_PI/yprd; + unitk[2] = 2.0*MY_PI/zprd_slab; // determine kmax // function of current box size, precision, G_ewald (short-range cutoff) - int nkxmx = static_cast ((g_ewald*xprd/PI) * sqrt(-log(precision))); - int nkymx = static_cast ((g_ewald*yprd/PI) * sqrt(-log(precision))); + int nkxmx = static_cast ((g_ewald*xprd/MY_PI) * sqrt(-log(precision))); + int nkymx = static_cast ((g_ewald*yprd/MY_PI) * sqrt(-log(precision))); int nkzmx = - static_cast ((g_ewald*zprd_slab/PI) * sqrt(-log(precision))); + static_cast ((g_ewald*zprd_slab/MY_PI) * sqrt(-log(precision))); int kmax_old = kmax; kmax = MAX(nkxmx,nkymx); @@ -284,9 +282,8 @@ void Ewald::compute(int eflag, int vflag) for (k = 0; k < kcount; k++) energy += ug[k] * (sfacrl_all[k]*sfacrl_all[k] + sfacim_all[k]*sfacim_all[k]); - PI = 4.0*atan(1.0); - energy -= g_ewald*qsqsum/1.772453851 + - 0.5*PI*qsum*qsum / (g_ewald*g_ewald*volume); + energy -= g_ewald*qsqsum/MY_PIS + + MY_PI2*qsum*qsum / (g_ewald*g_ewald*volume); energy *= qqrd2e*scale; } @@ -498,7 +495,7 @@ void Ewald::coeffs() double unitky = unitk[1]; double unitkz = unitk[2]; double g_ewald_sq_inv = 1.0 / (g_ewald*g_ewald); - double preu = 4.0*PI/volume; + double preu = 4.0*MY_PI/volume; kcount = 0; @@ -820,13 +817,13 @@ void Ewald::slabcorr(int eflag) // compute corrections - double e_slabcorr = 2.0*PI*dipole_all*dipole_all/volume; + double e_slabcorr = 2.0*MY_PI*dipole_all*dipole_all/volume; if (eflag) energy += qqrd2e*scale * e_slabcorr; // add on force corrections - double ffact = -4.0*PI*dipole_all/volume; + double ffact = -4.0*MY_PI*dipole_all/volume; double **f = atom->f; for (int i = 0; i < nlocal; i++) f[i][2] += qqrd2e*scale * q[i]*ffact; diff --git a/src/KSPACE/ewald.h b/src/KSPACE/ewald.h index 250b524de0..cd22f987f7 100644 --- a/src/KSPACE/ewald.h +++ b/src/KSPACE/ewald.h @@ -27,14 +27,13 @@ namespace LAMMPS_NS { class Ewald : public KSpace { public: Ewald(class LAMMPS *, int, char **); - ~Ewald(); + virtual ~Ewald(); void init(); void setup(); - void compute(int, int); + virtual void compute(int, int); double memory_usage(); - private: - double PI; + protected: double precision; int kcount,kmax,kmax3d,kmax_created; double qqrd2e; @@ -49,9 +48,9 @@ class Ewald : public KSpace { double *sfacrl,*sfacim,*sfacrl_all,*sfacim_all; double ***cs,***sn; - void eik_dot_r(); + virtual void eik_dot_r(); void coeffs(); - void allocate(); + virtual void allocate(); void deallocate(); void slabcorr(int); }; diff --git a/src/KSPACE/fft3d.cpp b/src/KSPACE/fft3d.cpp index fd44a42ef2..e3dbc63b1e 100644 --- a/src/KSPACE/fft3d.cpp +++ b/src/KSPACE/fft3d.cpp @@ -30,8 +30,8 @@ #include "kissfft.h" #endif -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) +#define MIN(A,B) ((A) < (B) ? (A) : (B)) +#define MAX(A,B) ((A) > (B) ? (A) : (B)) /* ---------------------------------------------------------------------- Data layout for 3d FFTs: diff --git a/src/KSPACE/fft3d_wrap.cpp b/src/KSPACE/fft3d_wrap.cpp index fa0d232a10..ef1298de40 100644 --- a/src/KSPACE/fft3d_wrap.cpp +++ b/src/KSPACE/fft3d_wrap.cpp @@ -30,7 +30,7 @@ FFT3d::FFT3d(LAMMPS *lmp, MPI_Comm comm, int nfast, int nmid, int nslow, in_ilo,in_ihi,in_jlo,in_jhi,in_klo,in_khi, out_ilo,out_ihi,out_jlo,out_jhi,out_klo,out_khi, scaled,permute,nbuf); - if (plan == NULL) error->one("Could not create 3d FFT plan"); + if (plan == NULL) error->one(FLERR,"Could not create 3d FFT plan"); } /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_born_coul_long.cpp b/src/KSPACE/pair_born_coul_long.cpp index fce0ce0846..2e607cd74d 100644 --- a/src/KSPACE/pair_born_coul_long.cpp +++ b/src/KSPACE/pair_born_coul_long.cpp @@ -26,13 +26,12 @@ #include "kspace.h" #include "neighbor.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 @@ -125,9 +124,9 @@ void PairBornCoulLong::compute(int eflag, int vflag) if (rsq < cutsq[itype][jtype]) { r2inv = 1.0/rsq; + r = sqrt(rsq); if (rsq < cut_coulsq) { - r = sqrt(rsq); grij = g_ewald * r; expm2 = exp(-grij*grij); t = 1.0 / (1.0 + EWALD_P*grij); @@ -139,7 +138,6 @@ void PairBornCoulLong::compute(int eflag, int vflag) if (rsq < cut_ljsq[itype][jtype]) { r6inv = r2inv*r2inv*r2inv; - r = sqrt(rsq); rexp = exp((sigma[itype][jtype]-r)*rhoinv[itype][jtype]); forceborn = born1[itype][jtype]*r*rexp - born2[itype][jtype]*r6inv + born3[itype][jtype]*r2inv*r6inv; @@ -213,7 +211,7 @@ void PairBornCoulLong::allocate() void PairBornCoulLong::settings(int narg, char **arg) { - if (narg < 1 || narg > 2) error->all("Illegal pair_style command"); + if (narg < 1 || narg > 2) error->all(FLERR,"Illegal pair_style command"); cut_lj_global = force->numeric(arg[0]); if (narg == 1) cut_coul = cut_lj_global; @@ -235,7 +233,7 @@ void PairBornCoulLong::settings(int narg, char **arg) void PairBornCoulLong::coeff(int narg, char **arg) { - if (narg < 7 || narg > 8) error->all("Incorrect args for pair coefficients"); + if (narg < 7 || narg > 8) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -245,7 +243,7 @@ void PairBornCoulLong::coeff(int narg, char **arg) double a_one = force->numeric(arg[2]); double rho_one = force->numeric(arg[3]); double sigma_one = force->numeric(arg[4]); - if (rho_one <= 0) error->all("Incorrect args for pair coefficients"); + if (rho_one <= 0) error->all(FLERR,"Incorrect args for pair coefficients"); double c_one = force->numeric(arg[5]); double d_one = force->numeric(arg[6]); @@ -266,7 +264,7 @@ void PairBornCoulLong::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -275,7 +273,7 @@ void PairBornCoulLong::coeff(int narg, char **arg) double PairBornCoulLong::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); double cut = MAX(cut_lj[i][j],cut_coul); cut_ljsq[i][j] = cut_lj[i][j] * cut_lj[i][j]; @@ -317,7 +315,6 @@ double PairBornCoulLong::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double rho1 = rho[i][j]; double rho2 = rho1*rho1; double rho3 = rho2*rho1; @@ -325,11 +322,11 @@ double PairBornCoulLong::init_one(int i, int j) double rc2 = rc*rc; double rc3 = rc2*rc; double rc5 = rc3*rc2; - etail_ij = 2.0*PI*all[0]*all[1] * + etail_ij = 2.0*MY_PI*all[0]*all[1] * (a[i][j]*exp((sigma[i][j]-rc)/rho1)*rho1* (rc2 + 2.0*rho1*rc + 2.0*rho2) - c[i][j]/(3.0*rc3) + d[i][j]/(5.0*rc5)); - ptail_ij = (-1/3.0)*2.0*PI*all[0]*all[1] * + ptail_ij = (-1/3.0)*2.0*MY_PI*all[0]*all[1] * (-a[i][j]*exp((sigma[i][j]-rc)/rho1) * (rc3 + 3.0*rho1*rc2 + 6.0*rho2*rc + 6.0*rho3) + 2.0*c[i][j]/rc3 - 8.0*d[i][j]/(5.0*rc5)); @@ -345,14 +342,14 @@ double PairBornCoulLong::init_one(int i, int j) void PairBornCoulLong::init_style() { if (!atom->q_flag) - error->all("Pair style born/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style born/coul/long requires atom attribute q"); cut_coulsq = cut_coul * cut_coul; // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; neighbor->request(this); diff --git a/src/KSPACE/pair_born_coul_long.h b/src/KSPACE/pair_born_coul_long.h index 9cbeb9deb0..3a8c910dbd 100644 --- a/src/KSPACE/pair_born_coul_long.h +++ b/src/KSPACE/pair_born_coul_long.h @@ -28,7 +28,7 @@ class PairBornCoulLong : public Pair { public: PairBornCoulLong(class LAMMPS *); virtual ~PairBornCoulLong(); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); void init_style(); diff --git a/src/KSPACE/pair_buck_coul_long.cpp b/src/KSPACE/pair_buck_coul_long.cpp index ba18aff25e..a68029f367 100644 --- a/src/KSPACE/pair_buck_coul_long.cpp +++ b/src/KSPACE/pair_buck_coul_long.cpp @@ -22,13 +22,12 @@ #include "kspace.h" #include "neighbor.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 @@ -118,9 +117,9 @@ void PairBuckCoulLong::compute(int eflag, int vflag) if (rsq < cutsq[itype][jtype]) { r2inv = 1.0/rsq; + r = sqrt(rsq); if (rsq < cut_coulsq) { - r = sqrt(rsq); grij = g_ewald * r; expm2 = exp(-grij*grij); t = 1.0 / (1.0 + EWALD_P*grij); @@ -132,7 +131,6 @@ void PairBuckCoulLong::compute(int eflag, int vflag) if (rsq < cut_ljsq[itype][jtype]) { r6inv = r2inv*r2inv*r2inv; - r = sqrt(rsq); rexp = exp(-r*rhoinv[itype][jtype]); forcebuck = buck1[itype][jtype]*r*rexp - buck2[itype][jtype]*r6inv; } else forcebuck = 0.0; @@ -202,7 +200,7 @@ void PairBuckCoulLong::allocate() void PairBuckCoulLong::settings(int narg, char **arg) { - if (narg < 1 || narg > 2) error->all("Illegal pair_style command"); + if (narg < 1 || narg > 2) error->all(FLERR,"Illegal pair_style command"); cut_lj_global = force->numeric(arg[0]); if (narg == 1) cut_coul = cut_lj_global; @@ -224,7 +222,7 @@ void PairBuckCoulLong::settings(int narg, char **arg) void PairBuckCoulLong::coeff(int narg, char **arg) { - if (narg < 5 || narg > 6) error->all("Incorrect args for pair coefficients"); + if (narg < 5 || narg > 6) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -233,7 +231,7 @@ void PairBuckCoulLong::coeff(int narg, char **arg) double a_one = force->numeric(arg[2]); double rho_one = force->numeric(arg[3]); - if (rho_one <= 0) error->all("Incorrect args for pair coefficients"); + if (rho_one <= 0) error->all(FLERR,"Incorrect args for pair coefficients"); double c_one = force->numeric(arg[4]); double cut_lj_one = cut_lj_global; @@ -251,7 +249,7 @@ void PairBuckCoulLong::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -260,7 +258,7 @@ void PairBuckCoulLong::coeff(int narg, char **arg) double PairBuckCoulLong::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); double cut = MAX(cut_lj[i][j],cut_coul); cut_ljsq[i][j] = cut_lj[i][j] * cut_lj[i][j]; @@ -297,17 +295,16 @@ double PairBuckCoulLong::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double rho1 = rho[i][j]; double rho2 = rho1*rho1; double rho3 = rho2*rho1; double rc = cut_lj[i][j]; double rc2 = rc*rc; double rc3 = rc2*rc; - etail_ij = 2.0*PI*all[0]*all[1]* + etail_ij = 2.0*MY_PI*all[0]*all[1]* (a[i][j]*exp(-rc/rho1)*rho1*(rc2 + 2.0*rho1*rc + 2.0*rho2) - c[i][j]/(3.0*rc3)); - ptail_ij = (-1/3.0)*2.0*PI*all[0]*all[1]* + ptail_ij = (-1/3.0)*2.0*MY_PI*all[0]*all[1]* (-a[i][j]*exp(-rc/rho1)* (rc3 + 3.0*rho1*rc2 + 6.0*rho2*rc + 6.0*rho3) + 2.0*c[i][j]/rc3); } @@ -322,14 +319,14 @@ double PairBuckCoulLong::init_one(int i, int j) void PairBuckCoulLong::init_style() { if (!atom->q_flag) - error->all("Pair style buck/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style buck/coul/long requires atom attribute q"); cut_coulsq = cut_coul * cut_coul; // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; neighbor->request(this); diff --git a/src/KSPACE/pair_coul_long.cpp b/src/KSPACE/pair_coul_long.cpp index dee833cb66..6a3f70b351 100644 --- a/src/KSPACE/pair_coul_long.cpp +++ b/src/KSPACE/pair_coul_long.cpp @@ -34,9 +34,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -199,7 +196,7 @@ void PairCoulLong::allocate() void PairCoulLong::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_coul = force->numeric(arg[0]); } @@ -210,7 +207,7 @@ void PairCoulLong::settings(int narg, char **arg) void PairCoulLong::coeff(int narg, char **arg) { - if (narg != 2) error->all("Incorrect args for pair coefficients"); + if (narg != 2) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -226,7 +223,7 @@ void PairCoulLong::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -236,7 +233,7 @@ void PairCoulLong::coeff(int narg, char **arg) void PairCoulLong::init_style() { if (!atom->q_flag) - error->all("Pair style lj/cut/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style lj/cut/coul/long requires atom attribute q"); neighbor->request(this); @@ -248,13 +245,13 @@ void PairCoulLong::init_style() ((Respa *) update->integrate)->level_inner >= 0) { cut_respa = ((Respa *) update->integrate)->cutoff; if (cut_coul < cut_respa[3]) - error->all("Pair cutoff < Respa interior cutoff"); + error->all(FLERR,"Pair cutoff < Respa interior cutoff"); } else cut_respa = NULL; // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables diff --git a/src/KSPACE/pair_lj_charmm_coul_long.cpp b/src/KSPACE/pair_lj_charmm_coul_long.cpp index 539cf34f73..1ff61a5ec0 100644 --- a/src/KSPACE/pair_lj_charmm_coul_long.cpp +++ b/src/KSPACE/pair_lj_charmm_coul_long.cpp @@ -37,9 +37,6 @@ using namespace LAMMPS_NS; enum{GEOMETRIC,ARITHMETIC,SIXTHPOWER}; // same as in pair.cpp -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -656,7 +653,7 @@ void PairLJCharmmCoulLong::allocate() void PairLJCharmmCoulLong::settings(int narg, char **arg) { - if (narg != 2 && narg != 3) error->all("Illegal pair_style command"); + if (narg != 2 && narg != 3) error->all(FLERR,"Illegal pair_style command"); cut_lj_inner = force->numeric(arg[0]); cut_lj = force->numeric(arg[1]); @@ -670,7 +667,7 @@ void PairLJCharmmCoulLong::settings(int narg, char **arg) void PairLJCharmmCoulLong::coeff(int narg, char **arg) { - if (narg != 4 && narg != 6) error->all("Illegal pair_coeff command"); + if (narg != 4 && narg != 6) error->all(FLERR,"Illegal pair_coeff command"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -698,7 +695,7 @@ void PairLJCharmmCoulLong::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -708,7 +705,7 @@ void PairLJCharmmCoulLong::coeff(int narg, char **arg) void PairLJCharmmCoulLong::init_style() { if (!atom->q_flag) - error->all("Pair style lj/charmm/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style lj/charmm/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists @@ -749,7 +746,7 @@ void PairLJCharmmCoulLong::init_style() // require cut_lj_inner < cut_lj if (cut_lj_inner >= cut_lj) - error->all("Pair inner cutoff >= Pair outer cutoff"); + error->all(FLERR,"Pair inner cutoff >= Pair outer cutoff"); cut_lj_innersq = cut_lj_inner * cut_lj_inner; cut_ljsq = cut_lj * cut_lj; @@ -765,15 +762,15 @@ void PairLJCharmmCoulLong::init_style() ((Respa *) update->integrate)->level_inner >= 0) { cut_respa = ((Respa *) update->integrate)->cutoff; if (MIN(cut_lj,cut_coul) < cut_respa[3]) - error->all("Pair cutoff < Respa interior cutoff"); + error->all(FLERR,"Pair cutoff < Respa interior cutoff"); if (cut_lj_inner < cut_respa[1]) - error->all("Pair inner cutoff < Respa interior cutoff"); + error->all(FLERR,"Pair inner cutoff < Respa interior cutoff"); } else cut_respa = NULL; // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables diff --git a/src/KSPACE/pair_lj_charmm_coul_long.h b/src/KSPACE/pair_lj_charmm_coul_long.h index 4c3f0171cb..515d5d429a 100644 --- a/src/KSPACE/pair_lj_charmm_coul_long.h +++ b/src/KSPACE/pair_lj_charmm_coul_long.h @@ -27,8 +27,9 @@ namespace LAMMPS_NS { class PairLJCharmmCoulLong : public Pair { public: PairLJCharmmCoulLong(class LAMMPS *); - ~PairLJCharmmCoulLong(); - void compute(int, int); + virtual ~PairLJCharmmCoulLong(); + + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); void init_style(); diff --git a/src/KSPACE/pair_lj_cut_coul_long.cpp b/src/KSPACE/pair_lj_cut_coul_long.cpp index 7ab653b58b..ff8fb1fd22 100644 --- a/src/KSPACE/pair_lj_cut_coul_long.cpp +++ b/src/KSPACE/pair_lj_cut_coul_long.cpp @@ -30,13 +30,12 @@ #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; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 @@ -593,7 +592,7 @@ void PairLJCutCoulLong::allocate() void PairLJCutCoulLong::settings(int narg, char **arg) { - if (narg < 1 || narg > 2) error->all("Illegal pair_style command"); + if (narg < 1 || narg > 2) error->all(FLERR,"Illegal pair_style command"); cut_lj_global = force->numeric(arg[0]); if (narg == 1) cut_coul = cut_lj_global; @@ -615,7 +614,7 @@ void PairLJCutCoulLong::settings(int narg, char **arg) void PairLJCutCoulLong::coeff(int narg, char **arg) { - if (narg < 4 || narg > 5) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 5) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -639,7 +638,7 @@ void PairLJCutCoulLong::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -649,7 +648,7 @@ void PairLJCutCoulLong::coeff(int narg, char **arg) void PairLJCutCoulLong::init_style() { if (!atom->q_flag) - error->all("Pair style lj/cut/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style lj/cut/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists @@ -699,7 +698,7 @@ void PairLJCutCoulLong::init_style() // insure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables @@ -756,7 +755,7 @@ double PairLJCutCoulLong::init_one(int i, int j) // check interior rRESPA cutoff if (cut_respa && MIN(cut_lj[i][j],cut_coul) < cut_respa[3]) - error->all("Pair cutoff < Respa interior cutoff"); + error->all(FLERR,"Pair cutoff < Respa interior cutoff"); // compute I,J contribution to long-range tail correction // count total # of atoms of type I and J via Allreduce @@ -773,15 +772,14 @@ double PairLJCutCoulLong::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double sig2 = sigma[i][j]*sigma[i][j]; double sig6 = sig2*sig2*sig2; double rc3 = cut_lj[i][j]*cut_lj[i][j]*cut_lj[i][j]; double rc6 = rc3*rc3; double rc9 = rc3*rc6; - etail_ij = 8.0*PI*all[0]*all[1]*epsilon[i][j] * + etail_ij = 8.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig6 - 3.0*rc6) / (9.0*rc9); - ptail_ij = 16.0*PI*all[0]*all[1]*epsilon[i][j] * + ptail_ij = 16.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (2.0*sig6 - 3.0*rc6) / (9.0*rc9); } diff --git a/src/KSPACE/pair_lj_cut_coul_long_tip4p.cpp b/src/KSPACE/pair_lj_cut_coul_long_tip4p.cpp index 2df4235f59..ece15c6839 100644 --- a/src/KSPACE/pair_lj_cut_coul_long_tip4p.cpp +++ b/src/KSPACE/pair_lj_cut_coul_long_tip4p.cpp @@ -37,9 +37,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -369,7 +366,7 @@ void PairLJCutCoulLongTIP4P::compute(int eflag, int vflag) void PairLJCutCoulLongTIP4P::settings(int narg, char **arg) { - if (narg < 6 || narg > 7) error->all("Illegal pair_style command"); + if (narg < 6 || narg > 7) error->all(FLERR,"Illegal pair_style command"); typeO = force->inumeric(arg[0]); typeH = force->inumeric(arg[1]); @@ -398,17 +395,18 @@ void PairLJCutCoulLongTIP4P::settings(int narg, char **arg) void PairLJCutCoulLongTIP4P::init_style() { if (atom->tag_enable == 0) - error->all("Pair style lj/cut/coul/long/tip4p requires atom IDs"); + error->all(FLERR,"Pair style lj/cut/coul/long/tip4p requires atom IDs"); if (!force->newton_pair) - error->all("Pair style lj/cut/coul/long/tip4p requires newton pair on"); + error->all(FLERR,"Pair style lj/cut/coul/long/tip4p requires newton pair on"); if (!atom->q_flag) - error->all("Pair style lj/cut/coul/long/tip4p requires atom attribute q"); - if (strcmp(force->kspace_style,"pppm/tip4p") != 0) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style lj/cut/coul/long/tip4p requires atom attribute q"); + if ( (strcmp(force->kspace_style,"pppm/tip4p") != 0) && + (strcmp(force->kspace_style,"pppm/tip4p/proxy") != 0) ) + error->all(FLERR,"Pair style is incompatible with KSpace style"); if (force->bond == NULL) - error->all("Must use a bond style with TIP4P potential"); + error->all(FLERR,"Must use a bond style with TIP4P potential"); if (force->angle == NULL) - error->all("Must use an angle style with TIP4P potential"); + error->all(FLERR,"Must use an angle style with TIP4P potential"); PairLJCutCoulLong::init_style(); @@ -482,9 +480,9 @@ void PairLJCutCoulLongTIP4P::find_M(int i, int &iH1, int &iH2, double *xM) iH1 = atom->map(atom->tag[i] + 1); iH2 = atom->map(atom->tag[i] + 2); - if (iH1 == -1 || iH2 == -1) error->one("TIP4P hydrogen is missing"); + if (iH1 == -1 || iH2 == -1) error->one(FLERR,"TIP4P hydrogen is missing"); if (atom->type[iH1] != typeH || atom->type[iH2] != typeH) - error->one("TIP4P hydrogen has incorrect atom type"); + error->one(FLERR,"TIP4P hydrogen has incorrect atom type"); double **x = atom->x; diff --git a/src/KSPACE/pair_lj_cut_coul_long_tip4p.h b/src/KSPACE/pair_lj_cut_coul_long_tip4p.h index fb660b7176..2206e0c93b 100644 --- a/src/KSPACE/pair_lj_cut_coul_long_tip4p.h +++ b/src/KSPACE/pair_lj_cut_coul_long_tip4p.h @@ -27,14 +27,14 @@ namespace LAMMPS_NS { class PairLJCutCoulLongTIP4P : public PairLJCutCoulLong { public: PairLJCutCoulLongTIP4P(class LAMMPS *); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void init_style(); void write_restart_settings(FILE *fp); void read_restart_settings(FILE *fp); void *extract(char *, int &); - private: + protected: int typeH,typeO; // atom types of TIP4P water H and O atoms int typeA,typeB; // angle and bond types of TIP4P water double qdist; // distance from O site to negative charge diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp index 40730df6ff..e2d017a6e5 100644 --- a/src/KSPACE/pppm.cpp +++ b/src/KSPACE/pppm.cpp @@ -35,7 +35,10 @@ #include "memory.h" #include "error.h" +#include "math_const.h" + using namespace LAMMPS_NS; +using namespace MathConst; #define MAXORDER 7 #define OFFSET 16384 @@ -51,17 +54,13 @@ using namespace LAMMPS_NS; #define ONEF 1.0 #endif -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PPPM::PPPM(LAMMPS *lmp, int narg, char **arg) : KSpace(lmp, narg, arg) { - if (narg < 1) error->all("Illegal kspace_style pppm command"); + if (narg < 1) error->all(FLERR,"Illegal kspace_style pppm command"); precision = atof(arg[0]); - PI = 4.0*atan(1.0); nfactors = 3; factors = new int[nfactors]; @@ -115,23 +114,23 @@ void PPPM::init() // error check if (domain->triclinic) - error->all("Cannot (yet) use PPPM with triclinic box"); - if (domain->dimension == 2) error->all("Cannot use PPPM with 2d simulation"); + error->all(FLERR,"Cannot (yet) use PPPM with triclinic box"); + if (domain->dimension == 2) error->all(FLERR,"Cannot use PPPM with 2d simulation"); - if (!atom->q_flag) error->all("Kspace style requires atom attribute q"); + if (!atom->q_flag) error->all(FLERR,"Kspace style requires atom attribute q"); if (slabflag == 0 && domain->nonperiodic > 0) - error->all("Cannot use nonperiodic boundaries with PPPM"); + error->all(FLERR,"Cannot use nonperiodic boundaries with PPPM"); if (slabflag == 1) { if (domain->xperiodic != 1 || domain->yperiodic != 1 || domain->boundary[2][0] != 1 || domain->boundary[2][1] != 1) - error->all("Incorrect boundaries with slab PPPM"); + error->all(FLERR,"Incorrect boundaries with slab PPPM"); } if (order > MAXORDER) { char str[128]; sprintf(str,"PPPM order cannot be greater than %d",MAXORDER); - error->all(str); + error->all(FLERR,str); } // free all arrays previously allocated @@ -144,11 +143,11 @@ void PPPM::init() scale = 1.0; if (force->pair == NULL) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); int itmp; double *p_cutoff = (double *) force->pair->extract("cut_coul",itmp); if (p_cutoff == NULL) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); cutoff = *p_cutoff; // if kspace is TIP4P, extract TIP4P params from pair style @@ -156,16 +155,17 @@ void PPPM::init() qdist = 0.0; - if (strcmp(force->kspace_style,"pppm/tip4p") == 0) { + if ( (strcmp(force->kspace_style,"pppm/tip4p") == 0) || + (strcmp(force->kspace_style,"pppm/tip4p/proxy") == 0) ) { if (force->pair == NULL) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); double *p_qdist = (double *) force->pair->extract("qdist",itmp); int *p_typeO = (int *) force->pair->extract("typeO",itmp); int *p_typeH = (int *) force->pair->extract("typeH",itmp); int *p_typeA = (int *) force->pair->extract("typeA",itmp); int *p_typeB = (int *) force->pair->extract("typeB",itmp); if (!p_qdist || !p_typeO || !p_typeH || !p_typeA || !p_typeB) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); qdist = *p_qdist; typeO = *p_typeO; typeH = *p_typeH; @@ -173,18 +173,28 @@ void PPPM::init() int typeB = *p_typeB; if (force->angle == NULL || force->bond == NULL) - error->all("Bond and angle potentials must be defined for TIP4P"); + error->all(FLERR,"Bond and angle potentials must be defined for TIP4P"); if (typeA < 1 || typeA > atom->nangletypes || force->angle->setflag[typeA] == 0) - error->all("Bad TIP4P angle type for PPPM/TIP4P"); + error->all(FLERR,"Bad TIP4P angle type for PPPM/TIP4P"); if (typeB < 1 || typeB > atom->nbondtypes || force->bond->setflag[typeB] == 0) - error->all("Bad TIP4P bond type for PPPM/TIP4P"); + error->all(FLERR,"Bad TIP4P bond type for PPPM/TIP4P"); double theta = force->angle->equilibrium_angle(typeA); double blen = force->bond->equilibrium_distance(typeB); alpha = qdist / (cos(0.5*theta) * blen); } + // if we have a /proxy pppm version check if the pair style is compatible + + if ( (strcmp(force->kspace_style,"pppm/proxy") == 0) || + (strcmp(force->kspace_style,"pppm/tip4p/proxy") == 0) ) { + if (force->pair == NULL) + error->all(FLERR,"KSpace style is incompatible with Pair style"); + if (strstr(force->pair_style,"pppm/") == NULL ) + error->all(FLERR,"KSpace style is incompatible with Pair style"); + } + // compute qsum & qsqsum and warn if not charge-neutral qsum = qsqsum = 0.0; @@ -200,11 +210,11 @@ void PPPM::init() qsqsum = tmp; if (qsqsum == 0.0) - error->all("Cannot use kspace solver on system with no charge"); + error->all(FLERR,"Cannot use kspace solver on system with no charge"); if (fabs(qsum) > SMALL && me == 0) { char str[128]; sprintf(str,"System is not charge neutral, net charge = %g",qsum); - error->warning(str); + error->warning(FLERR,str); } // setup FFT grid resolution and g_ewald @@ -216,14 +226,14 @@ void PPPM::init() while (order > 0) { if (iteration && me == 0) - error->warning("Reducing PPPM order b/c stencil extends " + error->warning(FLERR,"Reducing PPPM order b/c stencil extends " "beyond neighbor processor"); iteration++; set_grid(); if (nx_pppm >= OFFSET || ny_pppm >= OFFSET || nz_pppm >= OFFSET) - error->all("PPPM grid is too large"); + error->all(FLERR,"PPPM grid is too large"); // global indices of PPPM grid range from 0 to N-1 // nlo_in,nhi_in = lower/upper limits of the 3d sub-brick of @@ -394,7 +404,7 @@ void PPPM::init() order--; } - if (order == 0) error->all("PPPM order has been reduced to 0"); + if (order == 0) error->all(FLERR,"PPPM order has been reduced to 0"); // decomposition of FFT mesh // global indices range from 0 to N-1 @@ -523,9 +533,9 @@ void PPPM::setup() delvolinv = delxinv*delyinv*delzinv; - double unitkx = (2.0*PI/xprd); - double unitky = (2.0*PI/yprd); - double unitkz = (2.0*PI/zprd_slab); + double unitkx = (2.0*MY_PI/xprd); + double unitky = (2.0*MY_PI/yprd); + double unitkz = (2.0*MY_PI/zprd_slab); // fkx,fky,fkz for my FFT grid pts @@ -584,11 +594,11 @@ void PPPM::setup() double sum1,dot1,dot2; double numerator,denominator; - int nbx = static_cast ((g_ewald*xprd/(PI*nx_pppm)) * + int nbx = static_cast ((g_ewald*xprd/(MY_PI*nx_pppm)) * pow(-log(EPS_HOC),0.25)); - int nby = static_cast ((g_ewald*yprd/(PI*ny_pppm)) * + int nby = static_cast ((g_ewald*yprd/(MY_PI*ny_pppm)) * pow(-log(EPS_HOC),0.25)); - int nbz = static_cast ((g_ewald*zprd_slab/(PI*nz_pppm)) * + int nbz = static_cast ((g_ewald*zprd_slab/(MY_PI*nz_pppm)) * pow(-log(EPS_HOC),0.25)); double form = 1.0; @@ -710,8 +720,8 @@ void PPPM::compute(int eflag, int vflag) energy = energy_all; energy *= 0.5*volume; - energy -= g_ewald*qsqsum/1.772453851 + - 0.5*PI*qsum*qsum / (g_ewald*g_ewald*volume); + energy -= g_ewald*qsqsum/MY_PIS + + MY_PI2*qsum*qsum / (g_ewald*g_ewald*volume); energy *= qqrd2e*scale; } @@ -946,7 +956,7 @@ void PPPM::set_grid() g_ewald = gew2; fmid = diffpr(h_x,h_y,h_z,q2,acons); - if (f*fmid >= 0.0) error->all("Cannot compute PPPM G"); + if (f*fmid >= 0.0) error->all(FLERR,"Cannot compute PPPM G"); rtb = f < 0.0 ? (dgew=gew2-gew1,gew1) : (dgew=gew1-gew2,gew2); ncount = 0; while (fabs(dgew) > SMALL && fmid != 0.0) { @@ -955,7 +965,7 @@ void PPPM::set_grid() fmid = diffpr(h_x,h_y,h_z,q2,acons); if (fmid <= 0.0) rtb = g_ewald; ncount++; - if (ncount > LARGE) error->all("Cannot compute PPPM G"); + if (ncount > LARGE) error->all(FLERR,"Cannot compute PPPM G"); } } @@ -1030,7 +1040,7 @@ double PPPM::rms(double h, double prd, bigint natoms, for (int m = 0; m < order; m++) sum += acons[order][m] * pow(h*g_ewald,2.0*m); double value = q2 * pow(h*g_ewald,order) * - sqrt(g_ewald*prd*sqrt(2.0*PI)*sum/natoms) / (prd*prd); + sqrt(g_ewald*prd*sqrt(2.0*MY_PI)*sum/natoms) / (prd*prd); return value; } @@ -1499,7 +1509,7 @@ void PPPM::particle_map() nz+nlower < nzlo_out || nz+nupper > nzhi_out) flag = 1; } - if (flag) error->one("Out of range atoms - cannot compute PPPM"); + if (flag) error->one(FLERR,"Out of range atoms - cannot compute PPPM"); } /* ---------------------------------------------------------------------- @@ -1516,8 +1526,7 @@ void PPPM::make_rho() // clear 3d density array - FFT_SCALAR *vec = &density_brick[nzlo_out][nylo_out][nxlo_out]; - for (i = 0; i < ngrid; i++) vec[i] = ZEROF; + memset(&(density_brick[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 @@ -1778,17 +1787,19 @@ void PPPM::compute_rho1d(const FFT_SCALAR &dx, const FFT_SCALAR &dy, const FFT_SCALAR &dz) { int k,l; + FFT_SCALAR r1,r2,r3; for (k = (1-order)/2; k <= order/2; k++) { - rho1d[0][k] = ZEROF; - rho1d[1][k] = ZEROF; - rho1d[2][k] = ZEROF; + r1 = r2 = r3 = ZEROF; for (l = order-1; l >= 0; l--) { - rho1d[0][k] = rho_coeff[l][k] + rho1d[0][k]*dx; - rho1d[1][k] = rho_coeff[l][k] + rho1d[1][k]*dy; - rho1d[2][k] = rho_coeff[l][k] + rho1d[2][k]*dz; + r1 = rho_coeff[l][k] + r1*dx; + r2 = rho_coeff[l][k] + r2*dy; + r3 = rho_coeff[l][k] + r3*dz; } + rho1d[0][k] = r1; + rho1d[1][k] = r2; + rho1d[2][k] = r3; } } @@ -1876,13 +1887,13 @@ void PPPM::slabcorr(int eflag) // compute corrections - double e_slabcorr = 2.0*PI*dipole_all*dipole_all/volume; + double e_slabcorr = 2.0*MY_PI*dipole_all*dipole_all/volume; if (eflag) energy += qqrd2e*scale * e_slabcorr; // add on force corrections - double ffact = -4.0*PI*dipole_all/volume; + double ffact = -4.0*MY_PI*dipole_all/volume; double **f = atom->f; for (int i = 0; i < nlocal; i++) f[i][2] += qqrd2e*scale * q[i]*ffact; diff --git a/src/KSPACE/pppm.h b/src/KSPACE/pppm.h index 982b8f7c9e..e2a58e8804 100644 --- a/src/KSPACE/pppm.h +++ b/src/KSPACE/pppm.h @@ -47,7 +47,6 @@ class PPPM : public KSpace { protected: int me,nprocs; - double PI; double precision; int nfactors; int *factors; diff --git a/src/KSPACE/pppm_cg.cpp b/src/KSPACE/pppm_cg.cpp index 74b29e4653..daffb5ff2d 100644 --- a/src/KSPACE/pppm_cg.cpp +++ b/src/KSPACE/pppm_cg.cpp @@ -26,7 +26,10 @@ #include "memory.h" #include "pppm_cg.h" +#include "math_const.h" + using namespace LAMMPS_NS; +using namespace MathConst; #define OFFSET 16384 #define SMALLQ 0.00001 @@ -40,7 +43,7 @@ using namespace LAMMPS_NS; PPPMCG::PPPMCG(LAMMPS *lmp, int narg, char **arg) : PPPM(lmp, narg, arg) { - if ((narg < 1) || (narg > 2)) error->all("Illegal kspace_style pppm/cg command"); + if ((narg < 1) || (narg > 2)) error->all(FLERR,"Illegal kspace_style pppm/cg command"); if (narg == 2) smallq = atof(arg[1]); @@ -175,8 +178,8 @@ void PPPMCG::compute(int eflag, int vflag) energy = energy_all; energy *= 0.5*volume; - energy -= g_ewald*qsqsum/1.772453851 + - 0.5*PI*qsum*qsum / (g_ewald*g_ewald*volume); + energy -= g_ewald*qsqsum/MY_PIS + + MY_PI2*qsum*qsum / (g_ewald*g_ewald*volume); energy *= qqrd2e*scale; } @@ -232,7 +235,7 @@ void PPPMCG::particle_map() nz+nlower < nzlo_out || nz+nupper > nzhi_out) flag = 1; } - if (flag) error->one("Out of range atoms - cannot compute PPPM"); + if (flag) error->one(FLERR,"Out of range atoms - cannot compute PPPM"); } /* ---------------------------------------------------------------------- @@ -372,13 +375,13 @@ void PPPMCG::slabcorr(int eflag) // compute corrections - double e_slabcorr = 2.0*PI*dipole_all*dipole_all/volume; + double e_slabcorr = 2.0*MY_PI*dipole_all*dipole_all/volume; if (eflag) energy += qqrd2e*scale * e_slabcorr; // add on force corrections - double ffact = -4.0*PI*dipole_all/volume * qqrd2e * scale; + double ffact = -4.0*MY_PI*dipole_all/volume * qqrd2e * scale; double **f = atom->f; for (int j = 0; j < num_charged; j++) { diff --git a/src/KSPACE/pppm_tip4p.cpp b/src/KSPACE/pppm_tip4p.cpp index af0af92fad..a191fa742c 100644 --- a/src/KSPACE/pppm_tip4p.cpp +++ b/src/KSPACE/pppm_tip4p.cpp @@ -82,7 +82,7 @@ void PPPMTIP4P::particle_map() int flag_all; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); - if (flag_all) error->all("Out of range atoms - cannot compute PPPM"); + if (flag_all) error->all(FLERR,"Out of range atoms - cannot compute PPPM"); } /* ---------------------------------------------------------------------- @@ -253,9 +253,9 @@ void PPPMTIP4P::find_M(int i, int &iH1, int &iH2, double *xM) iH1 = atom->map(atom->tag[i] + 1); iH2 = atom->map(atom->tag[i] + 2); - if (iH1 == -1 || iH2 == -1) error->one("TIP4P hydrogen is missing"); + if (iH1 == -1 || iH2 == -1) error->one(FLERR,"TIP4P hydrogen is missing"); if (atom->type[iH1] != typeH || atom->type[iH2] != typeH) - error->one("TIP4P hydrogen has incorrect atom type"); + error->one(FLERR,"TIP4P hydrogen has incorrect atom type"); double **x = atom->x; diff --git a/src/KSPACE/remap.cpp b/src/KSPACE/remap.cpp index dbf9476a80..f702cf9e9e 100644 --- a/src/KSPACE/remap.cpp +++ b/src/KSPACE/remap.cpp @@ -19,8 +19,8 @@ #include "pack.h" -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) +#define MIN(A,B) ((A) < (B) ? (A) : (B)) +#define MAX(A,B) ((A) > (B) ? (A) : (B)) /* ---------------------------------------------------------------------- Data layout for 3d remaps: diff --git a/src/KSPACE/remap_wrap.cpp b/src/KSPACE/remap_wrap.cpp index 83631defe4..679c2a8365 100644 --- a/src/KSPACE/remap_wrap.cpp +++ b/src/KSPACE/remap_wrap.cpp @@ -30,7 +30,7 @@ Remap::Remap(LAMMPS *lmp, MPI_Comm comm, in_ilo,in_ihi,in_jlo,in_jhi,in_klo,in_khi, out_ilo,out_ihi,out_jlo,out_jhi,out_klo,out_khi, nqty,permute,memory,precision); - if (plan == NULL) error->one("Could not create 3d remap plan"); + if (plan == NULL) error->one(FLERR,"Could not create 3d remap plan"); } /* ---------------------------------------------------------------------- */ diff --git a/src/MAKE/Makefile.altix b/src/MAKE/Makefile.altix index 47e972d2c3..39d5d26779 100644 --- a/src/MAKE/Makefile.altix +++ b/src/MAKE/Makefile.altix @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.bgl b/src/MAKE/Makefile.bgl index dce6893600..ad3a64d468 100644 --- a/src/MAKE/Makefile.bgl +++ b/src/MAKE/Makefile.bgl @@ -98,4 +98,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.cygwin b/src/MAKE/Makefile.cygwin index c621df2e0f..493ae48f66 100644 --- a/src/MAKE/Makefile.cygwin +++ b/src/MAKE/Makefile.cygwin @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.encanto b/src/MAKE/Makefile.encanto index 045a8f0031..8140f73337 100644 --- a/src/MAKE/Makefile.encanto +++ b/src/MAKE/Makefile.encanto @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.fink b/src/MAKE/Makefile.fink index 9906bdf73c..67d81497e7 100644 --- a/src/MAKE/Makefile.fink +++ b/src/MAKE/Makefile.fink @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.g++ b/src/MAKE/Makefile.g++ index c9e068aa86..62f82e372a 100755 --- a/src/MAKE/Makefile.g++ +++ b/src/MAKE/Makefile.g++ @@ -6,10 +6,10 @@ SHELL = /bin/sh # compiler/linker settings # specify flags and libraries needed for your compiler -CC = g++4 +CC = g++ CCFLAGS = -g -O # -Wunused DEPFLAGS = -M -LINK = g++4 +LINK = g++ LINKFLAGS = -g -O LIB = ARCHIVE = ar @@ -35,7 +35,7 @@ LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG MPI_INC = -DMPICH_SKIP_MPICXX MPI_PATH = -MPI_LIB = -lmpich -lpthread +MPI_LIB = -lmpich -lmpl -lpthread # FFT library, OPTIONAL # see discussion in doc/Section_start.html#2_2 (step 6) @@ -57,7 +57,7 @@ FFT_LIB = -lfftw JPG_INC = JPG_PATH = -JPG_LIB = /usr/local/lib/libjpeg.a +JPG_LIB = -ljpeg # --------------------------------------------------------------------- # build rules and dependencies @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.g++3 b/src/MAKE/Makefile.g++3 index cbdb280820..490f47b7be 100755 --- a/src/MAKE/Makefile.g++3 +++ b/src/MAKE/Makefile.g++3 @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.glory b/src/MAKE/Makefile.glory index ed6fa3acb0..0e61e441a0 100644 --- a/src/MAKE/Makefile.glory +++ b/src/MAKE/Makefile.glory @@ -110,4 +110,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.jaguar b/src/MAKE/Makefile.jaguar index 118ccac606..0449e5348f 100644 --- a/src/MAKE/Makefile.jaguar +++ b/src/MAKE/Makefile.jaguar @@ -99,4 +99,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.lam b/src/MAKE/Makefile.lam index f7bc330cb5..2c86ad752f 100644 --- a/src/MAKE/Makefile.lam +++ b/src/MAKE/Makefile.lam @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.linux b/src/MAKE/Makefile.linux index 428f73709d..cf39084f2d 100755 --- a/src/MAKE/Makefile.linux +++ b/src/MAKE/Makefile.linux @@ -24,7 +24,7 @@ SIZE = size # LAMMPS ifdef settings, OPTIONAL # see possible settings in doc/Section_start.html#2_2 (step 4) -LMP_INC = -DLAMMPS_GZIP +LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # MPI library, REQUIRED # see discussion in doc/Section_start.html#2_2 (step 5) @@ -35,7 +35,7 @@ LMP_INC = -DLAMMPS_GZIP MPI_INC = -DMPICH_SKIP_MPICXX MPI_PATH = -MPI_LIB = -lmpich -lpthread +MPI_LIB = -lmpich -lmpl -lpthread # FFT library, OPTIONAL # see discussion in doc/Section_start.html#2_2 (step 6) @@ -57,7 +57,7 @@ FFT_LIB = -lfftw JPG_INC = JPG_PATH = -JPG_LIB = +JPG_LIB = -ljpeg # --------------------------------------------------------------------- # build rules and dependencies @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.mac b/src/MAKE/Makefile.mac index 67a6932048..0742fc945a 100755 --- a/src/MAKE/Makefile.mac +++ b/src/MAKE/Makefile.mac @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.mac_mpi b/src/MAKE/Makefile.mac_mpi index b63d806b7a..cd14f16b12 100755 --- a/src/MAKE/Makefile.mac_mpi +++ b/src/MAKE/Makefile.mac_mpi @@ -95,4 +95,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.mingw b/src/MAKE/Makefile.mingw index 2a2202fb54..44286bc252 100644 --- a/src/MAKE/Makefile.mingw +++ b/src/MAKE/Makefile.mingw @@ -101,4 +101,4 @@ mpi.o: ../STUBS/mpi.c ../STUBS/mpi.h $(CC) $(CCFLAGS) $(EXTRA_INC) -c $< DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.mkl b/src/MAKE/Makefile.mkl index 83a07e20ce..043390f1c8 100644 --- a/src/MAKE/Makefile.mkl +++ b/src/MAKE/Makefile.mkl @@ -98,4 +98,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.odin b/src/MAKE/Makefile.odin index 4ab791bcf1..479ef95ea9 100755 --- a/src/MAKE/Makefile.odin +++ b/src/MAKE/Makefile.odin @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.openmpi b/src/MAKE/Makefile.openmpi index db9d01a821..ed3427a454 100644 --- a/src/MAKE/Makefile.openmpi +++ b/src/MAKE/Makefile.openmpi @@ -93,4 +93,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.pgi b/src/MAKE/Makefile.pgi index bcfae62ec1..67db1a0fe2 100644 --- a/src/MAKE/Makefile.pgi +++ b/src/MAKE/Makefile.pgi @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.power5 b/src/MAKE/Makefile.power5 index 12712d0a20..26d87dc92e 100644 --- a/src/MAKE/Makefile.power5 +++ b/src/MAKE/Makefile.power5 @@ -93,4 +93,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.qed b/src/MAKE/Makefile.qed index 15ff05567d..49349d45d2 100644 --- a/src/MAKE/Makefile.qed +++ b/src/MAKE/Makefile.qed @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.redsky b/src/MAKE/Makefile.redsky index 2323b4fc86..bc06bc8b2f 100644 --- a/src/MAKE/Makefile.redsky +++ b/src/MAKE/Makefile.redsky @@ -121,4 +121,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.sdsc b/src/MAKE/Makefile.sdsc index 0bd78adb96..7ef819b34e 100644 --- a/src/MAKE/Makefile.sdsc +++ b/src/MAKE/Makefile.sdsc @@ -97,4 +97,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.seaborg b/src/MAKE/Makefile.seaborg index d3fb643400..e05116dcd4 100644 --- a/src/MAKE/Makefile.seaborg +++ b/src/MAKE/Makefile.seaborg @@ -93,4 +93,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.serial b/src/MAKE/Makefile.serial index f2cae6dcc8..8849b18432 100755 --- a/src/MAKE/Makefile.serial +++ b/src/MAKE/Makefile.serial @@ -7,10 +7,10 @@ SHELL = /bin/sh # generally no need to edit this section # unless additional compiler/linker flags or libraries needed for your machine -CC = g++4 +CC = g++ CCFLAGS = -O DEPFLAGS = -M -LINK = g++4 +LINK = g++ LINKFLAGS = -O LIB = ARCHIVE = ar @@ -45,7 +45,7 @@ MPI_LIB = ../STUBS/libmpi.a # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_NONE +FFT_INC = FFT_PATH = FFT_LIB = @@ -93,4 +93,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.serial_debug b/src/MAKE/Makefile.serial_debug index 378e3e275b..51f3d732d9 100644 --- a/src/MAKE/Makefile.serial_debug +++ b/src/MAKE/Makefile.serial_debug @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.sgi b/src/MAKE/Makefile.sgi index 10a41218f4..8b928717af 100644 --- a/src/MAKE/Makefile.sgi +++ b/src/MAKE/Makefile.sgi @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.solaris b/src/MAKE/Makefile.solaris index 4f27651af7..bdee7ad9fc 100644 --- a/src/MAKE/Makefile.solaris +++ b/src/MAKE/Makefile.solaris @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.spirit b/src/MAKE/Makefile.spirit index 29397aafe6..0c89ed3e71 100644 --- a/src/MAKE/Makefile.spirit +++ b/src/MAKE/Makefile.spirit @@ -100,4 +100,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.tacc b/src/MAKE/Makefile.tacc index 09bdf45c50..512c44988e 100644 --- a/src/MAKE/Makefile.tacc +++ b/src/MAKE/Makefile.tacc @@ -95,4 +95,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.tbird b/src/MAKE/Makefile.tbird index 65b34ca4a1..3ee125d876 100644 --- a/src/MAKE/Makefile.tbird +++ b/src/MAKE/Makefile.tbird @@ -111,4 +111,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.tesla b/src/MAKE/Makefile.tesla index dd1e2c7b2d..1fa76e6b2f 100755 --- a/src/MAKE/Makefile.tesla +++ b/src/MAKE/Makefile.tesla @@ -92,4 +92,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.tunnison b/src/MAKE/Makefile.tunnison index bbfd84c20c..25426113f3 100644 --- a/src/MAKE/Makefile.tunnison +++ b/src/MAKE/Makefile.tunnison @@ -103,4 +103,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.xe6 b/src/MAKE/Makefile.xe6 index d394809ded..ee2f866836 100644 --- a/src/MAKE/Makefile.xe6 +++ b/src/MAKE/Makefile.xe6 @@ -93,4 +93,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.xt3 b/src/MAKE/Makefile.xt3 index 7017a5da81..f5cdc9f437 100644 --- a/src/MAKE/Makefile.xt3 +++ b/src/MAKE/Makefile.xt3 @@ -94,4 +94,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MAKE/Makefile.xt5 b/src/MAKE/Makefile.xt5 index 9fb5968191..f5000f0029 100644 --- a/src/MAKE/Makefile.xt5 +++ b/src/MAKE/Makefile.xt5 @@ -93,4 +93,4 @@ lib: $(OBJ) # Individual dependencies DEPENDS = $(OBJ:.o=.d) -include $(DEPENDS) +sinclude $(DEPENDS) diff --git a/src/MANYBODY/fix_qeq_comb.cpp b/src/MANYBODY/fix_qeq_comb.cpp index d1537f78bf..7d36ee157e 100644 --- a/src/MANYBODY/fix_qeq_comb.cpp +++ b/src/MANYBODY/fix_qeq_comb.cpp @@ -32,14 +32,11 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixQEQComb::FixQEQComb(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 5) error->all("Illegal fix qeq/comb command"); + if (narg < 5) error->all(FLERR,"Illegal fix qeq/comb command"); peratom_flag = 1; size_peratom_cols = 0; @@ -49,7 +46,7 @@ FixQEQComb::FixQEQComb(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) precision = force->numeric(arg[4]); if (nevery <= 0 || precision <= 0.0) - error->all("Illegal fix qeq/comb command"); + error->all(FLERR,"Illegal fix qeq/comb command"); MPI_Comm_rank(world,&me); @@ -60,17 +57,17 @@ FixQEQComb::FixQEQComb(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) int iarg = 5; while (iarg < narg) { if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) error->all("Illegal fix qeq/comb command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix qeq/comb command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix qeq/comb file %s",arg[iarg+1]); - error->one(str); + error->one(FLERR,str); } } iarg += 2; - } else error->all("Illegal fix qeq/comb command"); + } else error->all(FLERR,"Illegal fix qeq/comb command"); } nmax = atom->nmax; @@ -111,16 +108,16 @@ int FixQEQComb::setmask() void FixQEQComb::init() { if (!atom->q_flag) - error->all("Fix qeq/comb requires atom attribute q"); + error->all(FLERR,"Fix qeq/comb requires atom attribute q"); comb = (PairComb *) force->pair_match("comb",1); - if (comb == NULL) error->all("Must use pair_style comb with fix qeq/comb"); + if (comb == NULL) error->all(FLERR,"Must use pair_style comb with fix qeq/comb"); if (strstr(update->integrate_style,"respa")) nlevels_respa = ((Respa *) update->integrate)->nlevels; ngroup = group->count(igroup); - if (ngroup == 0) error->all("Fix qeq/comb group has no atoms"); + if (ngroup == 0) error->all(FLERR,"Fix qeq/comb group has no atoms"); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/fix_qeq_comb.h b/src/MANYBODY/fix_qeq_comb.h index f8ddd0018a..48c7947f03 100644 --- a/src/MANYBODY/fix_qeq_comb.h +++ b/src/MANYBODY/fix_qeq_comb.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class FixQEQComb : public Fix { public: FixQEQComb(class LAMMPS *, int, char **); - ~FixQEQComb(); + virtual ~FixQEQComb(); int setmask(); - void init(); + virtual void init(); void setup(int); - void post_force(int); + virtual void post_force(int); void post_force_respa(int,int,int); double memory_usage(); - private: + protected: int me,firstflag; double precision; int nlevels_respa; diff --git a/src/MANYBODY/pair_adp.cpp b/src/MANYBODY/pair_adp.cpp index c2823c73e8..8ce9b57732 100644 --- a/src/MANYBODY/pair_adp.cpp +++ b/src/MANYBODY/pair_adp.cpp @@ -31,15 +31,14 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define MAXLINE 1024 /* ---------------------------------------------------------------------- */ PairADP::PairADP(LAMMPS *lmp) : Pair(lmp) { + restartinfo = 0; + nmax = 0; rho = NULL; fp = NULL; @@ -423,7 +422,7 @@ void PairADP::allocate() void PairADP::settings(int narg, char **arg) { - if (narg > 0) error->all("Illegal pair_style command"); + if (narg > 0) error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -438,12 +437,12 @@ void PairADP::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read ADP parameter file @@ -472,7 +471,7 @@ void PairADP::coeff(int narg, char **arg) for (j = 0; j < setfl->nelements; j++) if (strcmp(arg[i],setfl->elements[j]) == 0) break; if (j < setfl->nelements) map[i-2] = j; - else error->all("No matching element in ADP potential file"); + else error->all(FLERR,"No matching element in ADP potential file"); } // clear setflag since coeff() called once with I,J = * * @@ -496,7 +495,7 @@ void PairADP::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } @@ -549,7 +548,7 @@ void PairADP::read_file(char *filename) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open ADP potential file %s",filename); - error->one(str); + error->one(FLERR,str); } } @@ -570,7 +569,7 @@ void PairADP::read_file(char *filename) sscanf(line,"%d",&file->nelements); int nwords = atom->count_words(line); if (nwords != file->nelements + 1) - error->all("Incorrect element names in ADP potential file"); + error->all(FLERR,"Incorrect element names in ADP potential file"); char **words = new char*[file->nelements+1]; nwords = 0; @@ -1025,8 +1024,7 @@ void PairADP::unpack_reverse_comm(int n, int *list, double *buf) double PairADP::memory_usage() { - double bytes = maxeatom * sizeof(double); - bytes += maxvatom*6 * sizeof(double); + double bytes = Pair::memory_usage(); bytes += 21 * nmax * sizeof(double); return bytes; } diff --git a/src/MANYBODY/pair_adp.h b/src/MANYBODY/pair_adp.h index ee1d9af005..f50a3e4080 100644 --- a/src/MANYBODY/pair_adp.h +++ b/src/MANYBODY/pair_adp.h @@ -27,8 +27,8 @@ namespace LAMMPS_NS { class PairADP : public Pair { public: PairADP(class LAMMPS *); - ~PairADP(); - void compute(int, int); + virtual ~PairADP(); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); void init_style(); @@ -40,7 +40,7 @@ class PairADP : public Pair { void unpack_reverse_comm(int, int *, double *); double memory_usage(); - private: + protected: int nmax; // allocated size of per-atom arrays double cutforcesq,cutmax; diff --git a/src/MANYBODY/pair_airebo.cpp b/src/MANYBODY/pair_airebo.cpp index 427495433c..c2625072cc 100644 --- a/src/MANYBODY/pair_airebo.cpp +++ b/src/MANYBODY/pair_airebo.cpp @@ -13,6 +13,8 @@ /* ---------------------------------------------------------------------- Contributing author: Ase Henry (MIT) + Bugfixes and optimizations: + Marcel Fallet & Steve Stuart (Clemson), Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ #include "math.h" @@ -29,13 +31,12 @@ #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; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; #define MAXLINE 1024 #define TOL 1.0e-9 @@ -55,8 +56,6 @@ PairAIREBO::PairAIREBO(LAMMPS *lmp) : Pair(lmp) maxpage = 0; pages = NULL; nC = nH = NULL; - - PI = 4.0*atan(1.0); } /* ---------------------------------------------------------------------- @@ -135,7 +134,7 @@ void PairAIREBO::allocate() void PairAIREBO::settings(int narg, char **arg) { - if (narg != 1 && narg != 3) error->all("Illegal pair_style command"); + if (narg != 1 && narg != 3) error->all(FLERR,"Illegal pair_style command"); cutlj = force->numeric(arg[0]); @@ -155,12 +154,12 @@ void PairAIREBO::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read args that map atom types to C and H // map[i] = which element (0,1) the Ith atom type is, -1 if NULL @@ -173,7 +172,7 @@ void PairAIREBO::coeff(int narg, char **arg) map[i-2] = 0; } else if (strcmp(arg[i],"H") == 0) { map[i-2] = 1; - } else error->all("Incorrect args for pair coefficients"); + } else error->all(FLERR,"Incorrect args for pair coefficients"); } // read potential file and initialize fitting splines @@ -198,7 +197,7 @@ void PairAIREBO::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -208,9 +207,9 @@ void PairAIREBO::coeff(int narg, char **arg) void PairAIREBO::init_style() { if (atom->tag_enable == 0) - error->all("Pair style AIREBO requires atom IDs"); + error->all(FLERR,"Pair style AIREBO requires atom IDs"); if (force->newton_pair == 0) - error->all("Pair style AIREBO requires newton pair on"); + error->all(FLERR,"Pair style AIREBO requires newton pair on"); // need a full neighbor list, including neighbors of ghosts @@ -223,7 +222,7 @@ void PairAIREBO::init_style() pgsize = neighbor->pgsize; oneatom = neighbor->oneatom; - if (maxpage == 0) add_pages(0); + if (maxpage == 0) add_pages(); } /* ---------------------------------------------------------------------- @@ -232,7 +231,7 @@ void PairAIREBO::init_style() double PairAIREBO::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); // convert to C,H types @@ -306,7 +305,7 @@ void PairAIREBO::REBO_neigh() int nlocal = atom->nlocal; int nall = nlocal + atom->nghost; - if (nall > maxlocal) { + if (atom->nmax > maxlocal) { maxlocal = atom->nmax; memory->destroy(REBO_numneigh); memory->sfree(REBO_firstneigh); @@ -327,7 +326,7 @@ void PairAIREBO::REBO_neigh() // store all REBO neighs of owned and ghost atoms // scan full neighbor list of I - npage = 0; + int npage = 0; int npnt = 0; for (ii = 0; ii < allnum; ii++) { @@ -336,7 +335,7 @@ void PairAIREBO::REBO_neigh() if (pgsize - npnt < oneatom) { npnt = 0; npage++; - if (npage == maxpage) add_pages(npage); + if (npage == maxpage) add_pages(); } neighptr = &pages[npage][npnt]; n = 0; @@ -371,7 +370,7 @@ void PairAIREBO::REBO_neigh() REBO_numneigh[i] = n; npnt += n; if (npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } } @@ -1198,60 +1197,6 @@ void PairAIREBO::TORSION(int eflag, int vflag) } } -// ---------------------------------------------------------------------- -// S'(t) and S(t) cutoff functions -// ---------------------------------------------------------------------- - -/* ---------------------------------------------------------------------- - cutoff function Sprime - return cutoff and dX = derivative -------------------------------------------------------------------------- */ - -double PairAIREBO::Sp(double Xij, double Xmin, double Xmax, double &dX) -{ - double cutoff; - - double t = (Xij-Xmin) / (Xmax-Xmin); - if (t <= 0.0) { - cutoff = 1.0; - dX = 0.0; - } - else if (t >= 1.0) { - cutoff = 0.0; - dX = 0.0; - } - else { - cutoff = 0.5 * (1.0+cos(PI*t)); - dX = (-0.5*PI*sin(PI*t)) / (Xmax-Xmin); - } - return cutoff; -} - -/* ---------------------------------------------------------------------- - LJ cutoff function Sp2 - return cutoff and dX = derivative -------------------------------------------------------------------------- */ - -double PairAIREBO::Sp2(double Xij, double Xmin, double Xmax, double &dX) -{ - double cutoff; - - double t = (Xij-Xmin) / (Xmax-Xmin); - if (t <= 0.0) { - cutoff = 1.0; - dX = 0.0; - } - if (t >= 1.0) { - cutoff = 0.0; - dX = 0.0; - } - if (t>0.0 && t<1.0) { - cutoff = (1.0-(t*t*(3.0-2.0*t))); - dX = 6.0*(t*t-t) / (Xmax-Xmin); - } - return cutoff; -} - /* ---------------------------------------------------------------------- Bij function ------------------------------------------------------------------------- */ @@ -2125,11 +2070,6 @@ double PairAIREBO::bondorderLJ(int i, int j, double rij[3], double rijmag, NjiC = nC[atomj]-(wij*kronecker(itype,0)); NjiH = nH[atomj]-(wij*kronecker(itype,1)); - rij[0] = rij0[0]; - rij[1] = rij0[1]; - rij[2] = rij0[2]; - rijmag = rij0mag; - bij = 0.0; tmp = 0.0; tmp2 = 0.0; @@ -3135,7 +3075,7 @@ double PairAIREBO::PijSpline(double NijC, double NijH, int typei, int typej, if (typei == 0 && typej == 1){ if (NijC < pCHdom[0][0]) NijC=pCHdom[0][0]; if (NijC > pCHdom[0][1]) NijC=pCHdom[0][1]; - if (NijH < pCHdom[0][0]) NijH=pCHdom[1][0]; + if (NijH < pCHdom[1][0]) NijH=pCHdom[1][0]; if (NijH > pCHdom[1][1]) NijH=pCHdom[1][1]; if (fabs(NijC-floor(NijC)) < TOL && fabs(NijH-floor(NijH)) < TOL) { @@ -3340,27 +3280,17 @@ double PairAIREBO::TijSpline(double Nij, double Nji, } /* ---------------------------------------------------------------------- - Kronecker delta function + add pages to REBO neighbor list ------------------------------------------------------------------------- */ -double PairAIREBO::kronecker(int a, int b) -{ - double kd; - if (a == b) kd = 1.0; - else kd = 0.0; - return kd; -} - -/* ---------------------------------------------------------------------- - add pages to REBO neighbor list, starting at npage -------------------------------------------------------------------------- */ - -void PairAIREBO::add_pages(int npage) +void PairAIREBO::add_pages() { + int toppage = maxpage; maxpage += PGDELTA; + pages = (int **) memory->srealloc(pages,maxpage*sizeof(int *),"AIREBO:pages"); - for (int i = npage; i < maxpage; i++) + for (int i = toppage; i < maxpage; i++) memory->create(pages[i],pgsize,"AIREBO:pages[i]"); } @@ -3401,7 +3331,7 @@ void PairAIREBO::read_file(char *filename) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open AIREBO potential file %s",filename); - error->one(str); + error->one(FLERR,str); } // skip initial comment lines @@ -3956,17 +3886,23 @@ void PairAIREBO::read_file(char *filename) double PairAIREBO::Sp5th(double x, double coeffs[6], double *df) { - double f; - int i; - i = 0; - f = 0.0; - *df = 0.0; + double f, d; + const double x2 = x*x; + const double x3 = x2*x; - for (i = 0; i<6; i++) { - f += coeffs[i]*pow(x,((double) i)); - if (i > 0) *df += coeffs[i]*((double) i)*pow(x,((double) i-1.0)); - } + f = coeffs[0]; + f += coeffs[1]*x; + d = coeffs[1]; + f += coeffs[2]*x2; + d += 2.0*coeffs[2]*x; + f += coeffs[3]*x3; + d += 3.0*coeffs[3]*x2; + f += coeffs[4]*x2*x2; + d += 4.0*coeffs[4]*x3; + f += coeffs[5]*x2*x3; + d += 5.0*coeffs[5]*x2*x2; + *df = d; return f; } @@ -3977,25 +3913,28 @@ double PairAIREBO::Sp5th(double x, double coeffs[6], double *df) double PairAIREBO::Spbicubic(double x, double y, double coeffs[16], double df[2]) { - double f; - int i,j,cn; + double f,xn,yn,xn1,yn1,c; + int i,j; f = 0.0; df[0] = 0.0; df[1] = 0.0; - cn = 0; + xn = 1.0; for (i = 0; i < 4; i++) { + yn = 1.0; for (j = 0; j < 4; j++) { - f += coeffs[cn]*pow(x,((double) i))*pow(y,((double) j)); - if (i > 0) df[0] += - (coeffs[cn]*((double) i)*pow(x,((double) i-1.0)) * - pow(y,((double) j))); - if (j > 0) df[1] += - (coeffs[cn]*((double) j)*pow(x,((double) i)) * - pow(y,((double) j-1.0))); - cn++; + c = coeffs[i*4+j]; + + f += c*xn*yn; + if (i > 0) df[0] += c * ((double) i) * xn1 * yn; + if (j > 0) df[1] += c * ((double) j) * xn * yn1; + + yn1 = yn; + yn *= y; } + xn1 = xn; + xn *= x; } return f; @@ -4008,31 +3947,36 @@ double PairAIREBO::Spbicubic(double x, double y, double PairAIREBO::Sptricubic(double x, double y, double z, double coeffs[64], double df[3]) { - double f,ir,jr,kr; - int i,j,k,cn; + double f,ir,jr,kr,xn,yn,zn,xn1,yn1,zn1,c; + int i,j,k; f = 0.0; df[0] = 0.0; df[1] = 0.0; df[2] = 0.0; - cn = 0; + xn = 1.0; for (i = 0; i < 4; i++) { ir = (double) i; + yn = 1.0; for (j = 0; j < 4; j++) { jr = (double) j; + zn = 1.0; for (k = 0; k < 4; k++) { kr = (double) k; - f += (coeffs[cn]*pow(x,ir)*pow(y,jr)*pow(z,kr)); - if (i > 0) df[0] += - (coeffs[cn]*ir*pow(x,ir-1.0)*pow(y,jr)*pow(z,kr)); - if (j > 0) df[1] += - (coeffs[cn]*jr*pow(x,ir)*pow(y,jr-1.0)*pow(z,kr)); - if (k > 0) df[2] += - (coeffs[cn]*kr*pow(x,ir)*pow(y,jr)*pow(z,kr-1.0)); - cn++; + c = coeffs[16*i+4*j+k]; + f += c*xn*yn*zn; + if (i > 0) df[0] += c * ir * xn1 * yn * zn; + if (j > 0) df[1] += c * jr * xn * yn1 * zn; + if (k > 0) df[2] += c * kr * xn * yn * zn1; + zn1 = zn; + zn *= z; } + yn1 = yn; + yn *= y; } + xn1 = xn; + xn *= x; } return f; diff --git a/src/MANYBODY/pair_airebo.h b/src/MANYBODY/pair_airebo.h index b51c00bf2b..0c4795ab0d 100644 --- a/src/MANYBODY/pair_airebo.h +++ b/src/MANYBODY/pair_airebo.h @@ -21,6 +21,8 @@ PairStyle(airebo,PairAIREBO) #define LMP_PAIR_AIREBO_H #include "pair.h" +#include "math.h" +#include "math_const.h" namespace LAMMPS_NS { @@ -28,7 +30,7 @@ class PairAIREBO : public Pair { public: PairAIREBO(class LAMMPS *); virtual ~PairAIREBO(); - void compute(int, int); + virtual void compute(int, int); virtual void settings(int, char **); void coeff(int, char **); void init_style(); @@ -36,17 +38,16 @@ class PairAIREBO : public Pair { double memory_usage(); protected: + int **pages; // neighbor list pages + int *map; // 0 (C), 1 (H), or -1 (NULL) for each type + int me; int ljflag,torflag; // 0/1 if LJ,torsion terms included int maxlocal; // size of numneigh, firstneigh arrays - int **pages; // neighbor list pages int maxpage; // # of pages currently allocated int pgsize; // size of neighbor page int oneatom; // max # of neighbors for one atom - int npage; // current page in page list - int *map; // 0 (C), 1 (H), or -1 (NULL) for each type - double PI; double cutlj; // user-specified LJ cutoff double cutljrebosq; // cut for when to compute // REBO neighs of ghost atoms @@ -78,12 +79,12 @@ class PairAIREBO : public Pair { double PCCf[5][5],PCCdfdx[5][5],PCCdfdy[5][5],PCHf[5][5]; double PCHdfdx[5][5],PCHdfdy[5][5]; - double piCCf[5][5][10],piCCdfdx[5][5][10]; - double piCCdfdy[5][5][10],piCCdfdz[5][5][10]; - double piCHf[5][5][10],piCHdfdx[5][5][10]; - double piCHdfdy[5][5][10],piCHdfdz[5][5][10]; - double piHHf[5][5][10],piHHdfdx[5][5][10]; - double piHHdfdy[5][5][10],piHHdfdz[5][5][10]; + double piCCf[5][5][11],piCCdfdx[5][5][11]; + double piCCdfdy[5][5][11],piCCdfdz[5][5][11]; + double piCHf[5][5][11],piCHdfdx[5][5][11]; + double piCHdfdy[5][5][11],piCHdfdz[5][5][11]; + double piHHf[5][5][11],piHHdfdx[5][5][11]; + double piHHdfdy[5][5][11],piHHdfdz[5][5][11]; double Tf[5][5][10],Tdfdx[5][5][10],Tdfdy[5][5][10],Tdfdz[5][5][10]; void REBO_neigh(); @@ -95,17 +96,12 @@ class PairAIREBO : public Pair { double bondorderLJ(int, int, double *, double, double, double *, double, double **, int); - double Sp(double, double, double, double &); - double Sp2(double, double, double, double &); - double gSpline(double, double, int, double *, double *); double PijSpline(double, double, int, int, double *); double piRCSpline(double, double, double, int, int, double *); double TijSpline(double, double, double, double *); - double kronecker(int, int); - - void add_pages(int); + void add_pages(); void read_file(char *); double Sp5th(double, double *, double *); @@ -114,6 +110,63 @@ class PairAIREBO : public Pair { void spline_init(); void allocate(); + + // ---------------------------------------------------------------------- + // S'(t) and S(t) cutoff functions + // added to header for inlining + // ---------------------------------------------------------------------- + + /* ---------------------------------------------------------------------- + cutoff function Sprime + return cutoff and dX = derivative + no side effects + ------------------------------------------------------------------------- */ + + inline double Sp(double Xij, double Xmin, double Xmax, double &dX) const { + double cutoff; + + double t = (Xij-Xmin) / (Xmax-Xmin); + if (t <= 0.0) { + cutoff = 1.0; + dX = 0.0; + } else if (t >= 1.0) { + cutoff = 0.0; + dX = 0.0; + } else { + cutoff = 0.5 * (1.0+cos(t*MathConst::MY_PI)); + dX = (-0.5*MathConst::MY_PI*sin(t*MathConst::MY_PI)) / (Xmax-Xmin); + } + return cutoff; + }; + + /* ---------------------------------------------------------------------- + LJ cutoff function Sp2 + return cutoff and dX = derivative + no side effects + ------------------------------------------------------------------------- */ + + inline double Sp2(double Xij, double Xmin, double Xmax, double &dX) const { + double cutoff; + + double t = (Xij-Xmin) / (Xmax-Xmin); + if (t <= 0.0) { + cutoff = 1.0; + dX = 0.0; + } else if (t >= 1.0) { + cutoff = 0.0; + dX = 0.0; + } else { + cutoff = (1.0-(t*t*(3.0-2.0*t))); + dX = 6.0*(t*t-t) / (Xmax-Xmin); + } + return cutoff; + }; + + /* kronecker delta function returning a double */ + inline double kronecker(const int a, const int b) const { + return (a == b) ? 1.0 : 0.0; + }; + }; } diff --git a/src/MANYBODY/pair_comb.cpp b/src/MANYBODY/pair_comb.cpp index 4b203731fd..51bc45ad93 100644 --- a/src/MANYBODY/pair_comb.cpp +++ b/src/MANYBODY/pair_comb.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Tzu-Ray Shan (U Florida, rayshan@ufl.edu) + Contributing author: Tzu-Ray Shan (U Florida, present: tnshan@sandia.gov) LAMMPS implementation of the Charge-optimized many-body (COMB) potential based on the HELL MD program (Prof Simon Phillpot, UF, sphil@mse.ufl.edu) and Aidan Thompson's Tersoff code in LAMMPS @@ -29,29 +29,30 @@ #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" +#include "group.h" +#include "update.h" +#include "math_const.h" #include "memory.h" #include "error.h" -#include "group.h" using namespace LAMMPS_NS; +using namespace MathConst; #define MAXLINE 1024 #define DELTA 4 +#define PGDELTA 1 /* ---------------------------------------------------------------------- */ PairComb::PairComb(LAMMPS *lmp) : Pair(lmp) { single_enable = 0; + restartinfo = 0; one_coeff = 1; - PI = 4.0*atan(1.0); - PI2 = 2.0*atan(1.0); - PI4 = atan(1.0); - PIsq = sqrt(PI); - nmax = 0; NCo = NULL; + bbij = NULL; nelements = 0; elements = NULL; @@ -68,6 +69,11 @@ PairComb::PairComb(LAMMPS *lmp) : Pair(lmp) dphin = NULL; erpaw = NULL; + sht_num = NULL; + sht_first = NULL; + maxpage = 0; + pages = NULL; + // set comm size needed by this Pair comm_forward = 1; @@ -84,6 +90,7 @@ PairComb::~PairComb() if (elements) for (int i = 0; i < nelements; i++) delete [] elements[i]; + delete [] elements; memory->sfree(params); memory->destroy(elem2param); @@ -95,6 +102,9 @@ PairComb::~PairComb() memory->destroy(phin); memory->destroy(dphin); memory->destroy(erpaw); + memory->destroy(bbij); + memory->destroy(sht_num); + memory->destroy(sht_first); if (allocated) { memory->destroy(setflag); @@ -122,17 +132,25 @@ void PairComb::compute(int eflag, int vflag) double yaself; double potal,fac11,fac11e; double vionij,fvionij,sr1,sr2,sr3,Eov,Fov; + int sht_jnum, *sht_jlist; evdwl = ecoul = 0.0; if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = vflag_atom = 0; - // grow coordination array if necessary + // Build short range neighbor list + // int every=neighbor->every; + // int ntimestep=update->ntimestep; + // if(ntimestep <= 1 || (ntimestep % every == 0)) + Short_neigh(); + // grow coordination array if necessary if (atom->nmax > nmax) { memory->destroy(NCo); + memory->destroy(bbij); nmax = atom->nmax; memory->create(NCo,nmax,"pair:NCo"); + memory->create(bbij,nmax,nmax,"pair:bbij"); } double **x = atom->x; @@ -177,6 +195,8 @@ void PairComb::compute(int eflag, int vflag) jlist = firstneigh[i]; jnum = numneigh[i]; + sht_jlist = sht_first[i]; + sht_jnum = sht_num[i]; for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; @@ -258,8 +278,8 @@ void PairComb::compute(int eflag, int vflag) // accumulate coordination number information if (cor_flag) { - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; + for (jj = 0; jj < sht_jnum; jj++) { + j = sht_jlist[jj]; j &= NEIGHMASK; jtype = map[type[j]]; iparam_ij = elem2param[itype][jtype][jtype]; @@ -277,11 +297,12 @@ void PairComb::compute(int eflag, int vflag) } // three-body interactions - // skip immediately if I-J is not within cutoff + // half i-j loop - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; + for (jj = 0; jj < sht_jnum; jj++) { + j = sht_jlist[jj]; j &= NEIGHMASK; + jtype = map[type[j]]; iparam_ij = elem2param[itype][jtype][jtype]; @@ -301,9 +322,9 @@ void PairComb::compute(int eflag, int vflag) zeta_ij = 0.0; cuo_flag1 = 0; cuo_flag2 = 0; - for (kk = 0; kk < jnum; kk++) { - if (jj == kk) continue; - k = jlist[kk]; + for (kk = 0; kk < sht_jnum; kk++) { + k = sht_jlist[kk]; + if (j == k) continue; k &= NEIGHMASK; ktype = map[type[k]]; iparam_ijk = elem2param[itype][jtype][ktype]; @@ -324,9 +345,9 @@ void PairComb::compute(int eflag, int vflag) if (cuo_flag1 && cuo_flag2) cuo_flag = 1; else cuo_flag = 0; - force_zeta(¶ms[iparam_ij],rsq1,zeta_ij,fpair, - prefactor,eflag,evdwl,iq,jq); - + force_zeta(¶ms[iparam_ij],eflag,i,j,rsq1,zeta_ij, + iq,jq,fpair,prefactor,evdwl); + // over-coordination correction for HfO2 if (cor_flag && NCo[i] != 0) @@ -346,9 +367,9 @@ void PairComb::compute(int eflag, int vflag) // attractive term via loop over k (3-body forces) - for (kk = 0; kk < jnum; kk++) { - if (jj == kk) continue; - k = jlist[kk]; + for (kk = 0; kk < sht_jnum; kk++) { + k = sht_jlist[kk]; + if (j == k) continue; k &= NEIGHMASK; ktype = map[type[k]]; iparam_ijk = elem2param[itype][jtype][ktype]; @@ -417,7 +438,7 @@ void PairComb::allocate() void PairComb::settings(int narg, char **arg) { - if (narg > 0) error->all("Illegal pair_style command"); + if (narg > 0) error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -431,12 +452,12 @@ void PairComb::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read args that map atom types to elements in potential file // map[i] = which element the Ith atom type is, -1 if NULL @@ -502,7 +523,7 @@ void PairComb::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -512,11 +533,11 @@ void PairComb::coeff(int narg, char **arg) void PairComb::init_style() { if (atom->tag_enable == 0) - error->all("Pair style COMB requires atom IDs"); + error->all(FLERR,"Pair style COMB requires atom IDs"); if (force->newton_pair == 0) - error->all("Pair style COMB requires newton pair on"); + error->all(FLERR,"Pair style COMB requires newton pair on"); if (!atom->q_flag) - error->all("Pair style COMB requires atom attribute q"); + error->all(FLERR,"Pair style COMB requires atom attribute q"); // ptr to QEQ fix @@ -530,6 +551,11 @@ void PairComb::init_style() int irequest = neighbor->request(this); neighbor->requests[irequest]->half = 0; neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->ghost = 1; + + pgsize = neighbor->pgsize; + oneatom = neighbor->oneatom; + if (maxpage == 0) add_pages(); } /* ---------------------------------------------------------------------- @@ -538,7 +564,7 @@ void PairComb::init_style() double PairComb::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); return cutmax; } @@ -561,7 +587,7 @@ void PairComb::read_file(char *file) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open COMB potential file %s",file); - error->one(str); + error->one(FLERR,str); } } @@ -611,7 +637,7 @@ void PairComb::read_file(char *file) } if (nwords != params_per_line) - error->all("Incorrect format in COMB potential file"); + error->all(FLERR,"Incorrect format in COMB potential file"); // words = ptrs to all words in line @@ -719,13 +745,13 @@ void PairComb::read_file(char *file) // params[nparams].dj < 0.0 || params[nparams].dk < 0.0 || // params[nparams].dl < 0.0 || params[nparams].dm < 0.0 || params[nparams].esm1 < 0.0) - error->all("Illegal COMB parameter"); + error->all(FLERR,"Illegal COMB parameter"); if (params[nparams].lam11 < params[nparams].lam21 || params[nparams].lam12 < params[nparams].lam22 || params[nparams].biga1< params[nparams].bigb1 || params[nparams].biga2< params[nparams].bigb2) - error->all("Illegal COMB parameter"); + error->all(FLERR,"Illegal COMB parameter"); nparams++; } @@ -753,11 +779,11 @@ void PairComb::setup() for (m = 0; m < nparams; m++) { if (i == params[m].ielement && j == params[m].jelement && k == params[m].kelement) { - if (n >= 0) error->all("Potential file has duplicate entry"); + if (n >= 0) error->all(FLERR,"Potential file has duplicate entry"); n = m; } } - if (n < 0) error->all("Potential file is missing an entry"); + if (n < 0) error->all(FLERR,"Potential file is missing an entry"); elem2param[i][j][k] = n; } @@ -799,11 +825,12 @@ void PairComb::setup() // set cutmax to max of all params - cutmax = 0.0; + cutmax = cutmin = 0.0; cor_flag = 0; for (m = 0; m < nparams; m++) { if (params[m].cut > cutmax) cutmax = params[m].cut; if (params[m].lcut > cutmax) cutmax = params[m].lcut; + if (params[m].cutsq > cutmin) cutmin = params[m].cutsq+1.0; if (params[m].hfocor > 0.0001) cor_flag = 1; } } @@ -901,7 +928,7 @@ double PairComb::elp(Param *param, double rsqij, double rsqik, double rij,rik,costheta,lp1,lp3,lp6; double rmu,rmu2,comtt,fck; double pplp1 = param->plp1, pplp3 = param->plp3, pplp6 = param->plp6; - double c123 = cos(param->a123*PI/180.0); + double c123 = cos(param->a123*MY_PI/180.0); // cos(theta) of the i-j-k // cutoff function of rik @@ -930,7 +957,7 @@ double PairComb::elp(Param *param, double rsqij, double rsqik, comtt += param->aconf *(4.0-(rmu-c123)*(rmu-c123)); } - return 0.5 * fck * comtt; + return 1.0 * fck * comtt; } return 0.0; @@ -955,7 +982,7 @@ void PairComb::flp(Param *param, double rsqij, double rsqik, double pplp1 = param->plp1; double pplp3 = param->plp3; double pplp6 = param->plp6; - double c123 = cos(param->a123*PI/180.0); + double c123 = cos(param->a123*MY_PI/180.0); // fck_d = derivative of cutoff function @@ -996,10 +1023,10 @@ void PairComb::flp(Param *param, double rsqij, double rsqik, com4k = fcj * fck_d * comtt; com5 = fcj * fck * comtt_d; - ffj1 =-0.5*(com5/(rij*rik)); - ffj2 = 0.5*(com5*rmu/rsqij); + ffj1 =-1.0*(com5/(rij*rik)); + ffj2 = 1.0*(com5*rmu/rsqij); ffk1 = ffj1; - ffk2 = 0.5*(-com4k/rik+com5*rmu/rsqik); + ffk2 = 1.0*(-com4k/rik+com5*rmu/rsqik); } else { ffj1 = 0.0; ffj2 = 0.0; @@ -1024,9 +1051,9 @@ void PairComb::flp(Param *param, double rsqij, double rsqik, /* ---------------------------------------------------------------------- */ -void PairComb::force_zeta(Param *param, double rsq, double zeta_ij, - double &fforce, double &prefactor, - int eflag, double &eng, double iq, double jq) +void PairComb::force_zeta(Param *param, int eflag, int i, int j, double rsq, + double zeta_ij, double iq, double jq, double &fforce, + double &prefactor, double &eng) { double r,fa,fa_d,bij; @@ -1035,11 +1062,13 @@ void PairComb::force_zeta(Param *param, double rsq, double zeta_ij, fa = comb_fa(r,param,iq,jq); fa_d = comb_fa_d(r,param,iq,jq); bij = comb_bij(zeta_ij,param); + bbij[i][j] = bij; + + // force fforce = 0.5*bij*fa_d / r; prefactor = -0.5*fa * comb_bij_d(zeta_ij,param); // eng = attractive energy - if (eflag) eng = 0.5*bij*fa; } @@ -1052,7 +1081,7 @@ double PairComb::comb_fc(double r, Param *param) if (r < comb_R-comb_D) return 1.0; if (r > comb_R+comb_D) return 0.0; - return 0.5*(1.0 + cos(PI*(r - comb_R)/comb_D)); + return 0.5*(1.0 + cos(MY_PI*(r - comb_R)/comb_D)); } /* ---------------------------------------------------------------------- */ @@ -1064,7 +1093,7 @@ double PairComb::comb_fc_d(double r, Param *param) if (r < comb_R-comb_D) return 0.0; if (r > comb_R+comb_D) return 0.0; - return -(PI2/comb_D) * sin(PI*(r - comb_R)/comb_D); + return -(MY_PI2/comb_D) * sin(MY_PI*(r - comb_R)/comb_D); } /* ---------------------------------------------------------------------- */ @@ -1076,7 +1105,7 @@ double PairComb::comb_fc2(double r) if (r < comb_R) return 0.0; if (r > comb_D) return 1.0; - return 0.5*(1.0 + cos(PI*(r - comb_R)/(comb_D-comb_R))); + return 0.5*(1.0 + cos(MY_PI*(r - comb_R)/(comb_D-comb_R))); } /* ---------------------------------------------------------------------- */ @@ -1088,7 +1117,7 @@ double PairComb::comb_fc2_d(double r) if (r < comb_R) return 0.0; if (r > comb_D) return 0.0; - return -(PI2/(comb_D-comb_R)) * sin(PI*(r - comb_R)/(comb_D-comb_R)); + return -(MY_PI2/(comb_D-comb_R)) * sin(MY_PI*(r - comb_R)/(comb_D-comb_R)); } /* ---------------------------------------------------------------------- */ @@ -1100,7 +1129,7 @@ double PairComb::comb_fc3(double r) if (r < comb_R) return 1.0; if (r > comb_D) return 0.0; - return 0.5*(1.0 + cos(PI*(r - comb_R)/(comb_D-comb_R))); + return 0.5*(1.0 + cos(MY_PI*(r - comb_R)/(comb_D-comb_R))); } /* ---------------------------------------------------------------------- */ @@ -1112,7 +1141,7 @@ double PairComb::comb_fc3_d(double r) if (r < comb_R) return 0.0; if (r > comb_D) return 0.0; - return -(PI2/(comb_D-comb_R)) * sin(PI*(r - comb_R)/(comb_D-comb_R)); + return -(MY_PI2/(comb_D-comb_R)) * sin(MY_PI*(r - comb_R)/(comb_D-comb_R)); } /* ---------------------------------------------------------------------- */ @@ -1343,6 +1372,7 @@ void PairComb::sm_table() double exp2ear,exp2ebr,exp2earsh,exp2ebrsh,fafbsh,dfafbsh; int n = atom->ntypes; + int nmax = atom->nmax; dra = 0.001; // lookup table step size drin = 0.1; // starting distance of 1/r @@ -1351,7 +1381,7 @@ void PairComb::sm_table() nntypes = int((n+1)*n/2); // interaction types ncoul = int((rc-drin)/dra)+1; - +/* memory->destroy(intype); memory->destroy(fafb); memory->destroy(dfafb); @@ -1359,7 +1389,7 @@ void PairComb::sm_table() memory->destroy(phin); memory->destroy(dphin); memory->destroy(erpaw); - +*/ // allocate arrays memory->create(intype,n,n,"pair:intype"); @@ -1369,6 +1399,11 @@ void PairComb::sm_table() memory->create(phin,ncoul,nntypes,"pair:phin"); memory->create(dphin,ncoul,nntypes,"pair:dphin"); memory->create(erpaw,25000,2,"pair:erpaw"); + memory->create(NCo,nmax,"pair:NCo"); + memory->create(bbij,nmax,nmax,"pair:bbij"); + memory->create(sht_num,nmax,"pair:sht_num"); + sht_first = (int **) memory->smalloc(nmax*sizeof(int *), + "pair:sht_first"); // set interaction number: 0-0=0, 1-1=1, 0-1=1-0=2 @@ -1504,10 +1539,10 @@ void PairComb::potal_calc(double &calc1, double &calc2, double &calc3) alf = 0.20; esucon = force->qqr2e; - calc2 = (erfc(rcoul*alf)/rcoul/rcoul+2.0*alf/PIsq* + calc2 = (erfc(rcoul*alf)/rcoul/rcoul+2.0*alf/MY_PIS* exp(-alf*alf*rcoul*rcoul)/rcoul)*esucon/rcoul; calc3 = (erfc(rcoul*alf)/rcoul)*esucon; - calc1 = -(alf/PIsq*esucon+calc3*0.5); + calc1 = -(alf/MY_PIS*esucon+calc3*0.5); } /* ---------------------------------------------------------------------- */ @@ -1553,7 +1588,7 @@ void PairComb::direct(int inty, int mr1, int mr2, int mr3, double rsq, r = sqrt(rsq); r3 = r * rsq; alf = 0.20; - alfdpi = 2.0*alf/PIsq; + alfdpi = 2.0*alf/MY_PIS; esucon = force->qqr2e; pot_tmp = 0.0; pot_d = 0.0; @@ -1614,7 +1649,7 @@ void PairComb::field(Param *param, double rsq, double iq,double jq, double PairComb::yasu_char(double *qf_fix, int &igroup) { - int i,j,k,ii,jj,kk,jnum; + int i,j,k,ii,jj,kk,jnum,itag,jtag; int itype,jtype,ktype,iparam_i,iparam_ij,iparam_ijk; double xtmp,ytmp,ztmp; double rsq1,rsq2,delr1[3],delr2[3],zeta_ij; @@ -1622,10 +1657,12 @@ double PairComb::yasu_char(double *qf_fix, int &igroup) double iq,jq,fqi,fqj,fqij,fqjj; double potal,fac11,fac11e,sr1,sr2,sr3; int mr1,mr2,mr3,inty; + int sht_jnum, *sht_jlist; double **x = atom->x; double *q = atom->q; int *type = atom->type; + int *tag = atom->tag; int inum = list->inum; ilist = list->ilist; @@ -1656,6 +1693,7 @@ double PairComb::yasu_char(double *qf_fix, int &igroup) for (ii = 0; ii < inum; ii ++) { i = ilist[ii]; + itag = tag[i]; if (mask[i] & groupbit) { itype = map[type[i]]; xtmp = x[i][0]; @@ -1672,10 +1710,24 @@ double PairComb::yasu_char(double *qf_fix, int &igroup) jlist = firstneigh[i]; jnum = numneigh[i]; + sht_jlist = sht_first[i]; + sht_jnum = sht_num[i]; for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; j &= NEIGHMASK; + jtag = tag[j]; + + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < x[i][2]) continue; + if (x[j][2] == ztmp && x[j][1] < ytmp) continue; + if (x[j][2] == ztmp && x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + jtype = map[type[j]]; jq = q[j]; @@ -1706,38 +1758,31 @@ double PairComb::yasu_char(double *qf_fix, int &igroup) qfo_field(¶ms[iparam_ij],rsq1,iq,jq,fqij,fqjj); fqi += fqij; qf[j] += fqjj; + } - // polarization field charge force // three-body interactions + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = map[type[j]]; + jq = q[j]; + + delr1[0] = x[j][0] - xtmp; + delr1[1] = x[j][1] - ytmp; + delr1[2] = x[j][2] - ztmp; + rsq1 = vec3_dot(delr1,delr1); + + iparam_ij = elem2param[itype][jtype][jtype]; if (rsq1 > params[iparam_ij].cutsq) continue; - zeta_ij = 0.0; - - for (kk = 0; kk < jnum; kk++) { - if (jj == kk) continue; - k = jlist[kk]; - k &= NEIGHMASK; - ktype = map[type[k]]; - iparam_ijk = elem2param[itype][jtype][ktype]; - - delr2[0] = x[k][0] - xtmp; - delr2[1] = x[k][1] - ytmp; - delr2[2] = x[k][2] - ztmp; - rsq2 = vec3_dot(delr2,delr2); - - if (rsq2 > params[iparam_ijk].cutsq) continue; - zeta_ij += zeta(¶ms[iparam_ijk],rsq1,rsq2,delr1,delr2); - } - // charge force in Aij and Bij - qfo_short(¶ms[iparam_ij],rsq1,zeta_ij,iq,jq,fqij,fqjj); + qfo_short(¶ms[iparam_ij],i,j,rsq1,iq,jq,fqij,fqjj); fqi += fqij; qf[j] += fqjj; } - qf[i] += fqi; - } } @@ -1779,14 +1824,14 @@ double PairComb::qfo_self(Param *param, double qi, double selfpot) // char str[128]; // sprintf(str,"Pair COMB charge %.10f with force %.10f hit min barrier", // qi,self_d); - // error->warning(str,0); + // error->warning(FLERR,str,0); self_d += 4.0 * cmin * pow((qi-qmin),3); } if (qi > qmax) { // char str[128]; // sprintf(str,"Pair COMB charge %.10f with force %.10f hit max barrier", // qi,self_d); - // error->warning(str,0); + // error->warning(FLERR,str,0); self_d += 4.0 * cmax * pow((qi-qmax),3); } @@ -1809,7 +1854,7 @@ void PairComb::qfo_direct(int inty, int mr1, int mr2, int mr3, erfcc = sr1*erpaw[mr1][0] + sr2*erpaw[mr2][0] + sr3*erpaw[mr3][0]; fafbn1= sr1*fafb[mr1][inty] + sr2*fafb[mr2][inty] + sr3*fafb[mr3][inty]; vm = (erfcc/r * esucon - fac11e); - fqij = 0.5 * (vm+esucon*fafbn1); + fqij = 1.0 * (vm+esucon*fafbn1); } /* ---------------------------------------------------------------------- */ @@ -1835,13 +1880,13 @@ void PairComb::qfo_field(Param *param, double rsq,double iq,double jq, // field correction charge force - fqij = 0.5 * rf5 * (cmj1 + 2.0 * iq * cmj2); - fqjj = 0.5 * rf5 * (cmi1 + 2.0 * jq * cmi2); + fqij = 1.0 * rf5 * (cmj1 + 2.0 * iq * cmj2); + fqjj = 1.0 * rf5 * (cmi1 + 2.0 * jq * cmi2); } /* ---------------------------------------------------------------------- */ -void PairComb::qfo_short(Param *param, double rsq, double zeta_ij, +void PairComb::qfo_short(Param *param, int i, int j, double rsq, double iq, double jq, double &fqij, double &fqjj) { double r,tmp_fc,tmp_fc_d,tmp_exp1,tmp_exp2; @@ -1866,7 +1911,7 @@ void PairComb::qfo_short(Param *param, double rsq, double zeta_ij, tmp_fc_d = comb_fc_d(r,param); tmp_exp1 = exp(-param->rlm1 * r); tmp_exp2 = exp(-param->rlm2 * r); - bij = comb_bij(zeta_ij,param); + bij = bbij[i][j]; //comb_bij(zeta_ij,param); arr1 = 2.22850; arr2 = 1.89350; fc2j = comb_fc2(r); @@ -2025,5 +2070,92 @@ double PairComb::memory_usage() double bytes = maxeatom * sizeof(double); bytes += maxvatom*6 * sizeof(double); bytes += nmax * sizeof(int); + bytes += nmax * nmax * sizeof(int); return bytes; } +/* ---------------------------------------------------------------------- */ + +void PairComb::Short_neigh() +{ + int nj,itype,jtype,iparam_ij; + int inum,jnum,i,j,ii,jj; + int *neighptrj,*ilist,*jlist,*numneigh; + int **firstneigh; + double xtmp,ytmp,ztmp,rr,rsq,delrj[3]; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + int ntype = atom->ntypes; + + if (atom->nmax > nmax) { + nmax = int(1.0 * atom->nmax); + memory->sfree(sht_num); + memory->sfree(sht_first); + memory->create(sht_num,nmax,"pair:sht_num"); + sht_first = (int **) memory->smalloc(nmax*sizeof(int *), + "pair:sht_first"); + } + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + int npntj = 0; + int npage = 0; + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + itype = type[i]; + + if (pgsize - npntj < oneatom) { + npntj = 0; + npage++; + if (npage == maxpage) add_pages(); + } + + nj = 0; + neighptrj = &pages[npage][npntj]; + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = type[j]; + iparam_ij = elem2param[itype][jtype][jtype]; + + delrj[0] = xtmp - x[j][0]; + delrj[1] = ytmp - x[j][1]; + delrj[2] = ztmp - x[j][2]; + rsq = vec3_dot(delrj,delrj); + + if (rsq > cutmin) continue; + neighptrj[nj++] = j; + } + + sht_first[i] = neighptrj; + sht_num[i] = nj; + npntj += nj; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairComb::add_pages() +{ + int toppage = maxpage; + maxpage += PGDELTA; + + pages = (int **) + memory->srealloc(pages,maxpage*sizeof(int *),"pair:pages"); + for (int i = toppage; i < maxpage; i++) + memory->create(pages[i],pgsize,"pair:pages[i]"); +} + +/* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_comb.h b/src/MANYBODY/pair_comb.h index 555cf7509b..0a8b11ad05 100644 --- a/src/MANYBODY/pair_comb.h +++ b/src/MANYBODY/pair_comb.h @@ -58,7 +58,6 @@ class PairComb : public Pair { int powermint; }; - double PI,PI2,PI4,PIsq; double cutmax; // max cutoff for all elements int nelements; // # of unique elements char **elements; // names of unique elements @@ -76,6 +75,7 @@ class PairComb : public Pair { double *charge; int **intype, *typeno; int *NCo, cor_flag, cuo_flag, cuo_flag1, cuo_flag2; + double **bbij; void allocate(); virtual void read_file(char *); @@ -83,8 +83,8 @@ class PairComb : public Pair { virtual void repulsive(Param *, double, double &, int, double &, double, double); double zeta(Param *, double, double, double *, double *); - void force_zeta(Param *, double, double, double &, double &, - int, double &, double,double); + void force_zeta(Param *, int, int, int, double, double, double, double, + double &, double &, double &); void attractive(Param *, double, double, double, double *, double *, double *, double *, double *); double elp(Param *, double, double, double *, double *); @@ -115,7 +115,8 @@ class PairComb : public Pair { double,double,double,double &,double &); void field(Param *,double,double,double,double &,double &); double qfo_self(Param *, double, double); - void qfo_short(Param *, double, double, double, double, double &, double &); + void qfo_short(Param *, int, int, double, double, double, + double &, double &); void qfo_direct (int, int, int, int, double, double, double, double, double, double &); void qfo_field(Param *, double,double ,double ,double &, double &); @@ -126,6 +127,14 @@ class PairComb : public Pair { int pack_comm(int , int *, double *, int, int *); void unpack_comm(int , int , double *); + // Short range neighbor list + + void add_pages(); + void Short_neigh(); + int maxpage, pgsize, oneatom, **pages; + int *sht_num, **sht_first; // short-range neighbor list + double cutmin; + // vector functions, inline for efficiency inline double vec3_dot(double *x, double *y) { diff --git a/src/MANYBODY/pair_eam.cpp b/src/MANYBODY/pair_eam.cpp index bc87ad4b85..7ccb61c776 100644 --- a/src/MANYBODY/pair_eam.cpp +++ b/src/MANYBODY/pair_eam.cpp @@ -30,15 +30,14 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define MAXLINE 1024 /* ---------------------------------------------------------------------- */ PairEAM::PairEAM(LAMMPS *lmp) : Pair(lmp) { + restartinfo = 0; + nmax = 0; rho = NULL; fp = NULL; @@ -332,7 +331,7 @@ void PairEAM::allocate() void PairEAM::settings(int narg, char **arg) { - if (narg > 0) error->all("Illegal pair_style command"); + if (narg > 0) error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -344,7 +343,7 @@ void PairEAM::coeff(int narg, char **arg) { if (!allocated) allocate(); - if (narg != 3) error->all("Incorrect args for pair coefficients"); + if (narg != 3) error->all(FLERR,"Incorrect args for pair coefficients"); // parse pair of atom types @@ -384,7 +383,7 @@ void PairEAM::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -440,7 +439,7 @@ void PairEAM::read_file(char *filename) if (fptr == NULL) { char str[128]; sprintf(str,"Cannot open EAM potential file %s",filename); - error->one(str); + error->one(FLERR,str); } } diff --git a/src/MANYBODY/pair_eam.h b/src/MANYBODY/pair_eam.h index 4508cf4764..1b7b1f1f00 100644 --- a/src/MANYBODY/pair_eam.h +++ b/src/MANYBODY/pair_eam.h @@ -46,7 +46,7 @@ class PairEAM : public Pair { PairEAM(class LAMMPS *); virtual ~PairEAM(); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); virtual void coeff(int, char **); void init_style(); diff --git a/src/MANYBODY/pair_eam_alloy.cpp b/src/MANYBODY/pair_eam_alloy.cpp index 0584022586..5b6cd72f51 100644 --- a/src/MANYBODY/pair_eam_alloy.cpp +++ b/src/MANYBODY/pair_eam_alloy.cpp @@ -47,12 +47,12 @@ void PairEAMAlloy::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read EAM setfl file @@ -79,7 +79,7 @@ void PairEAMAlloy::coeff(int narg, char **arg) for (j = 0; j < setfl->nelements; j++) if (strcmp(arg[i],setfl->elements[j]) == 0) break; if (j < setfl->nelements) map[i-2] = j; - else error->all("No matching element in EAM potential file"); + else error->all(FLERR,"No matching element in EAM potential file"); } // clear setflag since coeff() called once with I,J = * * @@ -103,7 +103,7 @@ void PairEAMAlloy::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -125,7 +125,7 @@ void PairEAMAlloy::read_file(char *filename) if (fptr == NULL) { char str[128]; sprintf(str,"Cannot open EAM potential file %s",filename); - error->one(str); + error->one(FLERR,str); } } @@ -146,7 +146,7 @@ void PairEAMAlloy::read_file(char *filename) sscanf(line,"%d",&file->nelements); int nwords = atom->count_words(line); if (nwords != file->nelements + 1) - error->all("Incorrect element names in EAM potential file"); + error->all(FLERR,"Incorrect element names in EAM potential file"); char **words = new char*[file->nelements+1]; nwords = 0; diff --git a/src/MANYBODY/pair_eam_fs.cpp b/src/MANYBODY/pair_eam_fs.cpp index ccd4d7e30d..0ac0768b98 100644 --- a/src/MANYBODY/pair_eam_fs.cpp +++ b/src/MANYBODY/pair_eam_fs.cpp @@ -47,12 +47,12 @@ void PairEAMFS::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read EAM Finnis-Sinclair file @@ -79,7 +79,7 @@ void PairEAMFS::coeff(int narg, char **arg) for (j = 0; j < fs->nelements; j++) if (strcmp(arg[i],fs->elements[j]) == 0) break; if (j < fs->nelements) map[i-2] = j; - else error->all("No matching element in EAM potential file"); + else error->all(FLERR,"No matching element in EAM potential file"); } // clear setflag since coeff() called once with I,J = * * @@ -103,7 +103,7 @@ void PairEAMFS::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -125,7 +125,7 @@ void PairEAMFS::read_file(char *filename) if (fptr == NULL) { char str[128]; sprintf(str,"Cannot open EAM potential file %s",filename); - error->one(str); + error->one(FLERR,str); } } @@ -146,7 +146,7 @@ void PairEAMFS::read_file(char *filename) sscanf(line,"%d",&file->nelements); int nwords = atom->count_words(line); if (nwords != file->nelements + 1) - error->all("Incorrect element names in EAM potential file"); + error->all(FLERR,"Incorrect element names in EAM potential file"); char **words = new char*[file->nelements+1]; nwords = 0; diff --git a/src/MANYBODY/pair_eim.cpp b/src/MANYBODY/pair_eim.cpp index 07c2706c06..a86fa2557c 100644 --- a/src/MANYBODY/pair_eim.cpp +++ b/src/MANYBODY/pair_eim.cpp @@ -30,9 +30,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define MAXLINE 1024 /* ---------------------------------------------------------------------- */ @@ -40,6 +37,7 @@ using namespace LAMMPS_NS; PairEIM::PairEIM(LAMMPS *lmp) : Pair(lmp) { single_enable = 0; + restartinfo = 0; one_coeff = 1; setfl = NULL; @@ -344,7 +342,7 @@ void PairEIM::allocate() void PairEIM::settings(int narg, char **arg) { - if (narg > 0) error->all("Illegal pair_style command"); + if (narg > 0) error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -357,12 +355,12 @@ void PairEIM::coeff(int narg, char **arg) if (!allocated) allocate(); - if (narg < 5) error->all("Incorrect args for pair coefficients"); + if (narg < 5) error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read EIM element names before filename // nelements = # of EIM elements to read from file @@ -373,7 +371,7 @@ void PairEIM::coeff(int narg, char **arg) delete [] elements; } nelements = narg - 3 - atom->ntypes; - if (nelements < 1) error->all("Incorrect args for pair coefficients"); + if (nelements < 1) error->all(FLERR,"Incorrect args for pair coefficients"); elements = new char*[nelements]; for (i = 0; i < nelements; i++) { @@ -397,7 +395,7 @@ void PairEIM::coeff(int narg, char **arg) if (strcmp(arg[i],elements[j]) == 0) break; if (j < nelements) map[m] = j; else if (strcmp(arg[i],"NULL") == 0) map[m] = -1; - else error->all("Incorrect args for pair coefficients"); + else error->all(FLERR,"Incorrect args for pair coefficients"); } // clear setflag since coeff() called once with I,J = * * @@ -419,7 +417,7 @@ void PairEIM::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -462,7 +460,7 @@ void PairEIM::read_file(char *filename) if (fptr == NULL) { char str[128]; sprintf(str,"Cannot open EIM potential file %s",filename); - error->one(str); + error->one(FLERR,str); } } @@ -491,7 +489,7 @@ void PairEIM::read_file(char *filename) if (me == 0) if (!grabglobal(fptr)) - error->one("Could not grab global entry from EIM potential file"); + error->one(FLERR,"Could not grab global entry from EIM potential file"); MPI_Bcast(&setfl->division,1,MPI_DOUBLE,0,world); MPI_Bcast(&setfl->rbig,1,MPI_DOUBLE,0,world); MPI_Bcast(&setfl->rsmall,1,MPI_DOUBLE,0,world); @@ -499,7 +497,7 @@ void PairEIM::read_file(char *filename) for (int i = 0; i < nelements; i++) { if (me == 0) if (!grabsingle(fptr,i)) - error->one("Could not grab element entry from EIM potential file"); + error->one(FLERR,"Could not grab element entry from EIM potential file"); MPI_Bcast(&setfl->ielement[i],1,MPI_INT,0,world); MPI_Bcast(&setfl->mass[i],1,MPI_DOUBLE,0,world); MPI_Bcast(&setfl->negativity[i],1,MPI_DOUBLE,0,world); @@ -517,7 +515,7 @@ void PairEIM::read_file(char *filename) else ij = nelements*(j+1) - (j+1)*(j+2)/2 + i; if (me == 0) if (grabpair(fptr,i,j) == 0) - error->one("Could not grab pair entry from EIM potential file"); + error->one(FLERR,"Could not grab pair entry from EIM potential file"); MPI_Bcast(&setfl->rcutphiA[ij],1,MPI_DOUBLE,0,world); MPI_Bcast(&setfl->rcutphiR[ij],1,MPI_DOUBLE,0,world); MPI_Bcast(&setfl->Eb[ij],1,MPI_DOUBLE,0,world); diff --git a/src/MANYBODY/pair_eim.h b/src/MANYBODY/pair_eim.h index 22b89f2b98..cc4939c81c 100644 --- a/src/MANYBODY/pair_eim.h +++ b/src/MANYBODY/pair_eim.h @@ -28,8 +28,8 @@ namespace LAMMPS_NS { class PairEIM : public Pair { public: PairEIM(class LAMMPS *); - ~PairEIM(); - void compute(int, int); + virtual ~PairEIM(); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); void init_style(); @@ -41,7 +41,7 @@ class PairEIM : public Pair { void unpack_reverse_comm(int, int *, double *); double memory_usage(); - private: + protected: double **cutforcesq,cutmax; int nmax; double *rho,*fp; diff --git a/src/MANYBODY/pair_rebo.cpp b/src/MANYBODY/pair_rebo.cpp index 5a73f7bda0..efda8c2c9e 100644 --- a/src/MANYBODY/pair_rebo.cpp +++ b/src/MANYBODY/pair_rebo.cpp @@ -27,7 +27,7 @@ PairREBO::PairREBO(LAMMPS *lmp) : PairAIREBO(lmp) {} void PairREBO::settings(int narg, char **arg) { - if (narg != 0) error->all("Illegal pair_style command"); + if (narg != 0) error->all(FLERR,"Illegal pair_style command"); cutlj = 0.0; ljflag = torflag = 0; diff --git a/src/MANYBODY/pair_sw.cpp b/src/MANYBODY/pair_sw.cpp index c0661cc1a1..deae3cb26f 100755 --- a/src/MANYBODY/pair_sw.cpp +++ b/src/MANYBODY/pair_sw.cpp @@ -41,6 +41,7 @@ using namespace LAMMPS_NS; PairSW::PairSW(LAMMPS *lmp) : Pair(lmp) { single_enable = 0; + restartinfo = 0; one_coeff = 1; nelements = 0; @@ -215,7 +216,7 @@ void PairSW::allocate() void PairSW::settings(int narg, char **arg) { - if (narg != 0) error->all("Illegal pair_style command"); + if (narg != 0) error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -229,12 +230,12 @@ void PairSW::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read args that map atom types to elements in potential file // map[i] = which element the Ith atom type is, -1 if NULL @@ -287,7 +288,7 @@ void PairSW::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -297,9 +298,9 @@ void PairSW::coeff(int narg, char **arg) void PairSW::init_style() { if (atom->tag_enable == 0) - error->all("Pair style Stillinger-Weber requires atom IDs"); + error->all(FLERR,"Pair style Stillinger-Weber requires atom IDs"); if (force->newton_pair == 0) - error->all("Pair style Stillinger-Weber requires newton pair on"); + error->all(FLERR,"Pair style Stillinger-Weber requires newton pair on"); // need a full neighbor list @@ -314,7 +315,7 @@ void PairSW::init_style() double PairSW::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); return cutmax; } @@ -338,7 +339,7 @@ void PairSW::read_file(char *file) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open Stillinger-Weber potential file %s",file); - error->one(str); + error->one(FLERR,str); } } @@ -389,7 +390,7 @@ void PairSW::read_file(char *file) } if (nwords != params_per_line) - error->all("Incorrect format in Stillinger-Weber potential file"); + error->all(FLERR,"Incorrect format in Stillinger-Weber potential file"); // words = ptrs to all words in line @@ -439,7 +440,7 @@ void PairSW::read_file(char *file) params[nparams].gamma < 0.0 || params[nparams].biga < 0.0 || params[nparams].bigb < 0.0 || params[nparams].powerp < 0.0 || params[nparams].powerq < 0.0 || params[nparams].tol < 0.0) - error->all("Illegal Stillinger-Weber parameter"); + error->all(FLERR,"Illegal Stillinger-Weber parameter"); nparams++; } @@ -468,11 +469,11 @@ void PairSW::setup() for (m = 0; m < nparams; m++) { if (i == params[m].ielement && j == params[m].jelement && k == params[m].kelement) { - if (n >= 0) error->all("Potential file has duplicate entry"); + if (n >= 0) error->all(FLERR,"Potential file has duplicate entry"); n = m; } } - if (n < 0) error->all("Potential file is missing an entry"); + if (n < 0) error->all(FLERR,"Potential file is missing an entry"); elem2param[i][j][k] = n; } diff --git a/src/MANYBODY/pair_sw.h b/src/MANYBODY/pair_sw.h index 45053afc45..ddd23df169 100755 --- a/src/MANYBODY/pair_sw.h +++ b/src/MANYBODY/pair_sw.h @@ -27,14 +27,14 @@ namespace LAMMPS_NS { class PairSW : public Pair { public: PairSW(class LAMMPS *); - ~PairSW(); - void compute(int, int); + virtual ~PairSW(); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); void init_style(); - private: + protected: struct Param { double epsilon,sigma; double littlea,lambda,gamma,costheta; diff --git a/src/MANYBODY/pair_tersoff.cpp b/src/MANYBODY/pair_tersoff.cpp index b6e8819406..f284f12fd1 100755 --- a/src/MANYBODY/pair_tersoff.cpp +++ b/src/MANYBODY/pair_tersoff.cpp @@ -29,7 +29,10 @@ #include "memory.h" #include "error.h" +#include "math_const.h" + using namespace LAMMPS_NS; +using namespace MathConst; #define MAXLINE 1024 #define DELTA 4 @@ -39,12 +42,9 @@ using namespace LAMMPS_NS; PairTersoff::PairTersoff(LAMMPS *lmp) : Pair(lmp) { single_enable = 0; + restartinfo = 0; one_coeff = 1; - PI = 4.0*atan(1.0); - PI2 = 2.0*atan(1.0); - PI4 = atan(1.0); - nelements = 0; elements = NULL; nparams = maxparam = 0; @@ -256,7 +256,7 @@ void PairTersoff::allocate() void PairTersoff::settings(int narg, char **arg) { - if (narg != 0) error->all("Illegal pair_style command"); + if (narg != 0) error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -270,12 +270,12 @@ void PairTersoff::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read args that map atom types to elements in potential file // map[i] = which element the Ith atom type is, -1 if NULL @@ -328,7 +328,7 @@ void PairTersoff::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -338,9 +338,9 @@ void PairTersoff::coeff(int narg, char **arg) void PairTersoff::init_style() { if (atom->tag_enable == 0) - error->all("Pair style Tersoff requires atom IDs"); + error->all(FLERR,"Pair style Tersoff requires atom IDs"); if (force->newton_pair == 0) - error->all("Pair style Tersoff requires newton pair on"); + error->all(FLERR,"Pair style Tersoff requires newton pair on"); // need a full neighbor list @@ -355,7 +355,7 @@ void PairTersoff::init_style() double PairTersoff::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); return cutmax; } @@ -379,7 +379,7 @@ void PairTersoff::read_file(char *file) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open Tersoff potential file %s",file); - error->one(str); + error->one(FLERR,str); } } @@ -429,7 +429,7 @@ void PairTersoff::read_file(char *file) } if (nwords != params_per_line) - error->all("Incorrect format in Tersoff potential file"); + error->all(FLERR,"Incorrect format in Tersoff potential file"); // words = ptrs to all words in line @@ -490,7 +490,7 @@ void PairTersoff::read_file(char *file) params[nparams].powerm - params[nparams].powermint != 0.0 || (params[nparams].powermint != 3 && params[nparams].powermint != 1) || params[nparams].gamma < 0.0) - error->all("Illegal Tersoff parameter"); + error->all(FLERR,"Illegal Tersoff parameter"); nparams++; } @@ -518,11 +518,11 @@ void PairTersoff::setup() for (m = 0; m < nparams; m++) { if (i == params[m].ielement && j == params[m].jelement && k == params[m].kelement) { - if (n >= 0) error->all("Potential file has duplicate entry"); + if (n >= 0) error->all(FLERR,"Potential file has duplicate entry"); n = m; } } - if (n < 0) error->all("Potential file is missing an entry"); + if (n < 0) error->all(FLERR,"Potential file is missing an entry"); elem2param[i][j][k] = n; } @@ -634,7 +634,7 @@ double PairTersoff::ters_fc(double r, Param *param) if (r < ters_R-ters_D) return 1.0; if (r > ters_R+ters_D) return 0.0; - return 0.5*(1.0 - sin(PI2*(r - ters_R)/ters_D)); + return 0.5*(1.0 - sin(MY_PI2*(r - ters_R)/ters_D)); } /* ---------------------------------------------------------------------- */ @@ -646,7 +646,7 @@ double PairTersoff::ters_fc_d(double r, Param *param) if (r < ters_R-ters_D) return 0.0; if (r > ters_R+ters_D) return 0.0; - return -(PI4/ters_D) * cos(PI2*(r - ters_R)/ters_D); + return -(MY_PI4/ters_D) * cos(MY_PI2*(r - ters_R)/ters_D); } /* ---------------------------------------------------------------------- */ @@ -700,27 +700,6 @@ double PairTersoff::ters_bij_d(double zeta, Param *param) /* ---------------------------------------------------------------------- */ -double PairTersoff::ters_gijk(double costheta, Param *param) -{ - double ters_c = param->c; - double ters_d = param->d; - - return param->gamma*(1.0 + pow(ters_c/ters_d,2.0) - - pow(ters_c,2.0) / (pow(ters_d,2.0) + pow(param->h - costheta,2.0))); -}; - -/* ---------------------------------------------------------------------- */ - -double PairTersoff::ters_gijk_d(double costheta, Param *param) -{ - double numerator = -2.0 * pow(param->c,2) * (param->h - costheta); - double denominator = pow(pow(param->d,2.0) + - pow(param->h - costheta,2.0),2.0); - return param->gamma*numerator/denominator; -} - -/* ---------------------------------------------------------------------- */ - void PairTersoff::ters_zetaterm_d(double prefactor, double *rij_hat, double rij, double *rik_hat, double rik, @@ -794,4 +773,4 @@ void PairTersoff::costheta_d(double *rij_hat, double rij, vec3_scale(1.0/rik,drk,drk); vec3_add(drj,drk,dri); vec3_scale(-1.0,dri,dri); -}; +} diff --git a/src/MANYBODY/pair_tersoff.h b/src/MANYBODY/pair_tersoff.h index 49d3079286..92dbe635bd 100755 --- a/src/MANYBODY/pair_tersoff.h +++ b/src/MANYBODY/pair_tersoff.h @@ -28,7 +28,7 @@ class PairTersoff : public Pair { public: PairTersoff(class LAMMPS *); virtual ~PairTersoff(); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); void init_style(); @@ -49,22 +49,22 @@ class PairTersoff : public Pair { double ZBLcut,ZBLexpscale; }; - double PI,PI2,PI4; - double cutmax; // max cutoff for all elements - int nelements; // # of unique elements + Param *params; // parameter set for an I-J-K interaction char **elements; // names of unique elements int ***elem2param; // mapping from element triplets to parameters int *map; // mapping from atom types to elements + double cutmax; // max cutoff for all elements + int nelements; // # of unique elements int nparams; // # of stored parameter sets int maxparam; // max # of parameter sets - Param *params; // parameter set for an I-J-K interaction void allocate(); virtual void read_file(char *); void setup(); virtual void repulsive(Param *, double, double &, int, double &); double zeta(Param *, double, double, double *, double *); - void force_zeta(Param *, double, double, double &, double &, int, double &); + virtual void force_zeta(Param *, double, double, double &, + double &, int, double &); void attractive(Param *, double, double, double, double *, double *, double *, double *, double *); @@ -74,26 +74,52 @@ class PairTersoff : public Pair { virtual double ters_fa_d(double, Param *); double ters_bij(double, Param *); double ters_bij_d(double, Param *); - double ters_gijk(double, Param *); - double ters_gijk_d(double, Param *); + void ters_zetaterm_d(double, double *, double, double *, double, double *, double *, double *, Param *); void costheta_d(double *, double, double *, double, double *, double *, double *); - // vector functions, inline for efficiency + // inlined functions for efficiency - inline double vec3_dot(double *x, double *y) { + inline double ters_gijk(const double costheta, + const Param * const param) const { + const double ters_c = param->c * param->c; + const double ters_d = param->d * param->d; + const double hcth = param->h - costheta; + + return param->gamma*(1.0 + ters_c/ters_d - ters_c / (ters_d + hcth*hcth)); + } + + inline double ters_gijk_d(const double costheta, + const Param * const param) const { + const double ters_c = param->c * param->c; + const double ters_d = param->d * param->d; + const double hcth = param->h - costheta; + const double numerator = -2.0 * ters_c * hcth; + const double denominator = 1.0/(ters_d + hcth*hcth); + return param->gamma*numerator*denominator*denominator; + } + + inline double vec3_dot(const double x[3], const double y[3]) const { return x[0]*y[0] + x[1]*y[1] + x[2]*y[2]; } - inline void vec3_add(double *x, double *y, double *z) { + + inline void vec3_add(const double x[3], const double y[3], + double * const z) const { z[0] = x[0]+y[0]; z[1] = x[1]+y[1]; z[2] = x[2]+y[2]; } - inline void vec3_scale(double k, double *x, double *y) { + + inline void vec3_scale(const double k, const double x[3], + double y[3]) const { y[0] = k*x[0]; y[1] = k*x[1]; y[2] = k*x[2]; } - inline void vec3_scaleadd(double k, double *x, double *y, double *z) { - z[0] = k*x[0]+y[0]; z[1] = k*x[1]+y[1]; z[2] = k*x[2]+y[2]; + + inline void vec3_scaleadd(const double k, const double x[3], + const double y[3], double * const z) const { + z[0] = k*x[0]+y[0]; + z[1] = k*x[1]+y[1]; + z[2] = k*x[2]+y[2]; } }; diff --git a/src/MANYBODY/pair_tersoff_zbl.cpp b/src/MANYBODY/pair_tersoff_zbl.cpp index dfa0da021e..a4f6ee3edd 100644 --- a/src/MANYBODY/pair_tersoff_zbl.cpp +++ b/src/MANYBODY/pair_tersoff_zbl.cpp @@ -31,7 +31,9 @@ #include "memory.h" #include "error.h" +#include "math_const.h" using namespace LAMMPS_NS; +using namespace MathConst; #define MAXLINE 1024 #define DELTA 4 @@ -54,7 +56,7 @@ PairTersoffZBL::PairTersoffZBL(LAMMPS *lmp) : PairTersoff(lmp) global_a_0 = 0.529; global_epsilon_0 = 0.00552635 * 0.043365121; global_e = 1.0; - } else error->all("Pair tersoff/zbl requires metal or real units"); + } else error->all(FLERR,"Pair tersoff/zbl requires metal or real units"); } /* ---------------------------------------------------------------------- */ @@ -76,7 +78,7 @@ void PairTersoffZBL::read_file(char *file) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open Tersoff potential file %s",file); - error->one(str); + error->one(FLERR,str); } } @@ -126,7 +128,7 @@ void PairTersoffZBL::read_file(char *file) } if (nwords != params_per_line) - error->all("Incorrect format in Tersoff potential file"); + error->all(FLERR,"Incorrect format in Tersoff potential file"); // words = ptrs to all words in line @@ -195,7 +197,7 @@ void PairTersoffZBL::read_file(char *file) params[nparams].gamma < 0.0 || params[nparams].Z_i < 1.0 || params[nparams].Z_j < 1.0 || params[nparams].ZBLcut < 0.0 || params[nparams].ZBLexpscale < 0.0) - error->all("Illegal Tersoff parameter"); + error->all(FLERR,"Illegal Tersoff parameter"); nparams++; } @@ -224,7 +226,7 @@ void PairTersoffZBL::repulsive(Param *param, double rsq, double &fforce, double esq = pow(global_e,2.0); double a_ij = (0.8854*global_a_0) / (pow(param->Z_i,0.23) + pow(param->Z_j,0.23)); - double premult = (param->Z_i * param->Z_j * esq)/(4.0*PI*global_epsilon_0); + double premult = (param->Z_i * param->Z_j * esq)/(4.0*MY_PI*global_epsilon_0); double r_ov_a = r/a_ij; double phi = 0.1818*exp(-3.2*r_ov_a) + 0.5099*exp(-0.9423*r_ov_a) + 0.2802*exp(-0.4029*r_ov_a) + 0.02817*exp(-0.2016*r_ov_a); @@ -232,7 +234,7 @@ void PairTersoffZBL::repulsive(Param *param, double rsq, double &fforce, 0.9423*0.5099*exp(-0.9423*r_ov_a) - 0.4029*0.2802*exp(-0.4029*r_ov_a) - 0.2016*0.02817*exp(-0.2016*r_ov_a)); - double fforce_ZBL = premult*-pow(r,-2.0)* phi + premult*pow(r,-1.0)*dphi; + double fforce_ZBL = premult*-phi/rsq + premult*dphi/r; double eng_ZBL = premult*(1.0/r)*phi; // combine two parts with smoothing by Fermi-like function diff --git a/src/MC/Install.sh b/src/MC/Install.sh new file mode 100644 index 0000000000..845b5b1c2e --- /dev/null +++ b/src/MC/Install.sh @@ -0,0 +1,31 @@ +# Install/unInstall package files in LAMMPS + +if (test $1 = 1) then + + cp fix_bond_break.cpp .. + cp fix_bond_create.cpp .. + cp fix_bond_swap.cpp .. + cp fix_gcmc.cpp .. + cp pair_dsmc.cpp .. + + cp fix_bond_break.h .. + cp fix_bond_create.h .. + cp fix_bond_swap.h .. + cp fix_gcmc.h .. + cp pair_dsmc.h .. + +elif (test $1 = 0) then + + rm -f ../fix_bond_break.cpp + rm -f ../fix_bond_create.cpp + rm -f ../fix_bond_swap.cpp + rm -f ../fix_gcmc.cpp + rm -f ../pair_dsmc.cpp + + rm -f ../fix_bond_break.h + rm -f ../fix_bond_create.h + rm -f ../fix_bond_swap.h + rm -f ../fix_gcmc.h + rm -f ../pair_dsmc.h + +fi diff --git a/src/MOLECULE/fix_bond_break.cpp b/src/MC/fix_bond_break.cpp similarity index 92% rename from src/MOLECULE/fix_bond_break.cpp rename to src/MC/fix_bond_break.cpp index a4c44338da..888c247da7 100755 --- a/src/MOLECULE/fix_bond_break.cpp +++ b/src/MC/fix_bond_break.cpp @@ -29,20 +29,17 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixBondBreak::FixBondBreak(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 6) error->all("Illegal fix bond/break command"); + if (narg < 6) error->all(FLERR,"Illegal fix bond/break command"); MPI_Comm_rank(world,&me); nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix bond/break command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix bond/break command"); force_reneighbor = 1; next_reneighbor = -1; @@ -55,8 +52,8 @@ FixBondBreak::FixBondBreak(LAMMPS *lmp, int narg, char **arg) : double cutoff = atof(arg[5]); if (btype < 1 || btype > atom->nbondtypes) - error->all("Invalid bond type in fix bond/break command"); - if (cutoff < 0.0) error->all("Illegal fix bond/break command"); + error->all(FLERR,"Invalid bond type in fix bond/break command"); + if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/break command"); cutsq = cutoff*cutoff; @@ -68,20 +65,20 @@ FixBondBreak::FixBondBreak(LAMMPS *lmp, int narg, char **arg) : int iarg = 6; while (iarg < narg) { if (strcmp(arg[iarg],"prob") == 0) { - if (iarg+3 > narg) error->all("Illegal fix bond/break command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/break command"); fraction = atof(arg[iarg+1]); seed = atoi(arg[iarg+2]); if (fraction < 0.0 || fraction > 1.0) - error->all("Illegal fix bond/break command"); - if (seed <= 0) error->all("Illegal fix bond/break command"); + error->all(FLERR,"Illegal fix bond/break command"); + if (seed <= 0) error->all(FLERR,"Illegal fix bond/break command"); iarg += 3; - } else error->all("Illegal fix bond/break command"); + } else error->all(FLERR,"Illegal fix bond/break command"); } // error check if (atom->molecular == 0) - error->all("Cannot use fix bond/break with non-molecular systems"); + error->all(FLERR,"Cannot use fix bond/break with non-molecular systems"); // initialize Marsaglia RNG with processor-unique seed @@ -137,13 +134,13 @@ void FixBondBreak::init() force->special_lj[3] != 1.0) flag = 1; if (force->special_coul[1] != 0.0 || force->special_coul[2] != 1.0 || force->special_coul[3] != 1.0) flag = 1; - if (flag) error->all("Fix bond/break requires special_bonds = 0,1,1"); + if (flag) error->all(FLERR,"Fix bond/break requires special_bonds = 0,1,1"); // warn if angles, dihedrals, impropers are being used if (force->angle || force->dihedral || force->improper) { if (me == 0) - error->warning("Broken bonds will not alter angles, " + error->warning(FLERR,"Broken bonds will not alter angles, " "dihedrals, or impropers"); } diff --git a/src/MOLECULE/fix_bond_break.h b/src/MC/fix_bond_break.h similarity index 100% rename from src/MOLECULE/fix_bond_break.h rename to src/MC/fix_bond_break.h diff --git a/src/MOLECULE/fix_bond_create.cpp b/src/MC/fix_bond_create.cpp similarity index 89% rename from src/MOLECULE/fix_bond_create.cpp rename to src/MC/fix_bond_create.cpp index 295f04981b..042ff80dbc 100755 --- a/src/MOLECULE/fix_bond_create.cpp +++ b/src/MC/fix_bond_create.cpp @@ -33,20 +33,17 @@ using namespace LAMMPS_NS; #define BIG 1.0e20 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixBondCreate::FixBondCreate(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 8) error->all("Illegal fix bond/create command"); + if (narg < 8) error->all(FLERR,"Illegal fix bond/create command"); MPI_Comm_rank(world,&me); nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix bond/create command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix bond/create command"); force_reneighbor = 1; next_reneighbor = -1; @@ -62,10 +59,10 @@ FixBondCreate::FixBondCreate(LAMMPS *lmp, int narg, char **arg) : if (iatomtype < 1 || iatomtype > atom->ntypes || jatomtype < 1 || jatomtype > atom->ntypes) - error->all("Invalid atom type in fix bond/create command"); - if (cutoff < 0.0) error->all("Illegal fix bond/create command"); + error->all(FLERR,"Invalid atom type in fix bond/create command"); + if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/create command"); if (btype < 1 || btype > atom->nbondtypes) - error->all("Invalid bond type in fix bond/create command"); + error->all(FLERR,"Invalid bond type in fix bond/create command"); cutsq = cutoff*cutoff; @@ -81,39 +78,39 @@ FixBondCreate::FixBondCreate(LAMMPS *lmp, int narg, char **arg) : int iarg = 8; while (iarg < narg) { if (strcmp(arg[iarg],"iparam") == 0) { - if (iarg+3 > narg) error->all("Illegal fix bond/create command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/create command"); imaxbond = atoi(arg[iarg+1]); inewtype = atoi(arg[iarg+2]); - if (imaxbond < 0) error->all("Illegal fix bond/create command"); + if (imaxbond < 0) error->all(FLERR,"Illegal fix bond/create command"); if (inewtype < 1 || inewtype > atom->ntypes) - error->all("Invalid atom type in fix bond/create command"); + error->all(FLERR,"Invalid atom type in fix bond/create command"); iarg += 3; } else if (strcmp(arg[iarg],"jparam") == 0) { - if (iarg+3 > narg) error->all("Illegal fix bond/create command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/create command"); jmaxbond = atoi(arg[iarg+1]); jnewtype = atoi(arg[iarg+2]); - if (jmaxbond < 0) error->all("Illegal fix bond/create command"); + if (jmaxbond < 0) error->all(FLERR,"Illegal fix bond/create command"); if (jnewtype < 1 || jnewtype > atom->ntypes) - error->all("Invalid atom type in fix bond/create command"); + error->all(FLERR,"Invalid atom type in fix bond/create command"); iarg += 3; } else if (strcmp(arg[iarg],"prob") == 0) { - if (iarg+3 > narg) error->all("Illegal fix bond/create command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/create command"); fraction = atof(arg[iarg+1]); seed = atoi(arg[iarg+2]); if (fraction < 0.0 || fraction > 1.0) - error->all("Illegal fix bond/create command"); - if (seed <= 0) error->all("Illegal fix bond/create command"); + error->all(FLERR,"Illegal fix bond/create command"); + if (seed <= 0) error->all(FLERR,"Illegal fix bond/create command"); iarg += 3; - } else error->all("Illegal fix bond/create command"); + } else error->all(FLERR,"Illegal fix bond/create command"); } // error check if (atom->molecular == 0) - error->all("Cannot use fix bond/create with non-molecular systems"); + error->all(FLERR,"Cannot use fix bond/create with non-molecular systems"); if (iatomtype == jatomtype && ((imaxbond != jmaxbond) || (inewtype != jnewtype))) - error->all("Inconsistent iparam/jparam values in fix bond/create command"); + error->all(FLERR,"Inconsistent iparam/jparam values in fix bond/create command"); // initialize Marsaglia RNG with processor-unique seed @@ -179,24 +176,24 @@ void FixBondCreate::init() // check cutoff for iatomtype,jatomtype if (force->pair == NULL || cutsq > force->pair->cutsq[iatomtype][jatomtype]) - error->all("Fix bond/create cutoff is longer than pairwise cutoff"); + error->all(FLERR,"Fix bond/create cutoff is longer than pairwise cutoff"); // require special bonds = 0,1,1 if (force->special_lj[1] != 0.0 || force->special_lj[2] != 1.0 || force->special_lj[3] != 1.0) - error->all("Fix bond/create requires special_bonds lj = 0,1,1"); + error->all(FLERR,"Fix bond/create requires special_bonds lj = 0,1,1"); if (atom->q_flag) if (force->special_coul[1] != 0.0 || force->special_coul[2] != 1.0 || force->special_coul[3] != 1.0) - error->all("Fix bond/create requires special_bonds coul = 0,1,1"); + error->all(FLERR,"Fix bond/create requires special_bonds coul = 0,1,1"); // warn if angles, dihedrals, impropers are being used if (force->angle || force->dihedral || force->improper) { if (me == 0) - error->warning("Created bonds will not create angles, " + error->warning(FLERR,"Created bonds will not create angles, " "dihedrals, or impropers"); } @@ -251,7 +248,7 @@ void FixBondCreate::setup(int vflag) if (newton_bond) { m = atom->map(bond_atom[i][j]); if (m < 0) - error->one("Could not count initial bonds in fix bond/create"); + error->one(FLERR,"Could not count initial bonds in fix bond/create"); bondcount[m]++; } } @@ -411,7 +408,7 @@ void FixBondCreate::post_integrate() if (!newton_bond || tag[i] < tag[j]) { if (num_bond[i] == atom->bond_per_atom) - error->one("New bond exceeded bonds per atom in fix bond/create"); + error->one(FLERR,"New bond exceeded bonds per atom in fix bond/create"); bond_type[i][num_bond[i]] = btype; bond_atom[i][num_bond[i]] = tag[j]; num_bond[i]++; @@ -424,7 +421,7 @@ void FixBondCreate::post_integrate() n1 = nspecial[i][0]; n3 = nspecial[i][2]; if (n3 == atom->maxspecial) - error->one("New bond exceeded special list size in fix bond/create"); + error->one(FLERR,"New bond exceeded special list size in fix bond/create"); for (m = n3; m > n1; m--) slist[m+1] = slist[m]; slist[n1] = tag[j]; nspecial[i][0]++; diff --git a/src/MOLECULE/fix_bond_create.h b/src/MC/fix_bond_create.h similarity index 100% rename from src/MOLECULE/fix_bond_create.h rename to src/MC/fix_bond_create.h diff --git a/src/MOLECULE/fix_bond_swap.cpp b/src/MC/fix_bond_swap.cpp similarity index 96% rename from src/MOLECULE/fix_bond_swap.cpp rename to src/MC/fix_bond_swap.cpp index daf9b13501..1984f9f40b 100644 --- a/src/MOLECULE/fix_bond_swap.cpp +++ b/src/MC/fix_bond_swap.cpp @@ -41,7 +41,7 @@ using namespace LAMMPS_NS; FixBondSwap::FixBondSwap(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 6) error->all("Illegal fix bond/swap command"); + if (narg != 6) error->all(FLERR,"Illegal fix bond/swap command"); vector_flag = 1; size_vector = 2; @@ -111,11 +111,11 @@ void FixBondSwap::init() // require an atom style with molecule IDs if (atom->molecule == NULL) - error->all("Must use atom style with molecule IDs with fix bond/swap"); + error->all(FLERR,"Must use atom style with molecule IDs with fix bond/swap"); int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix bond/swap does not exist"); + error->all(FLERR,"Temperature ID for fix bond/swap does not exist"); temperature = modify->compute[icompute]; // pair and bonds must be defined @@ -123,20 +123,20 @@ void FixBondSwap::init() // special bonds must be 0 1 1 if (force->pair == NULL || force->bond == NULL) - error->all("Fix bond/swap requires pair and bond styles"); + error->all(FLERR,"Fix bond/swap requires pair and bond styles"); if (force->pair->single_enable == 0) - error->all("Pair style does not support fix bond/swap"); + error->all(FLERR,"Pair style does not support fix bond/swap"); if (force->angle == NULL && atom->nangles > 0 && comm->me == 0) - error->warning("Fix bond/swap will ignore defined angles"); + error->warning(FLERR,"Fix bond/swap will ignore defined angles"); if (force->dihedral || force->improper) - error->all("Fix bond/swap cannot use dihedral or improper styles"); + error->all(FLERR,"Fix bond/swap cannot use dihedral or improper styles"); if (force->special_lj[1] != 0.0 || force->special_lj[2] != 1.0 || force->special_lj[3] != 1.0) - error->all("Fix bond/swap requires special_bonds = 0,1,1"); + error->all(FLERR,"Fix bond/swap requires special_bonds = 0,1,1"); // need a half neighbor list, built when ever re-neighboring occurs @@ -596,7 +596,7 @@ void FixBondSwap::pre_neighbor() int FixBondSwap::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -607,13 +607,13 @@ int FixBondSwap::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != igroup && comm->me == 0) - error->warning("Group for fix_modify temp != fix group"); + error->warning(FLERR,"Group for fix_modify temp != fix group"); return 2; } return 0; diff --git a/src/MOLECULE/fix_bond_swap.h b/src/MC/fix_bond_swap.h similarity index 100% rename from src/MOLECULE/fix_bond_swap.h rename to src/MC/fix_bond_swap.h diff --git a/src/MC/fix_gcmc.cpp b/src/MC/fix_gcmc.cpp new file mode 100644 index 0000000000..9c8654100d --- /dev/null +++ b/src/MC/fix_gcmc.cpp @@ -0,0 +1,563 @@ +/* ---------------------------------------------------------------------- + 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: Paul Crozier (SNL) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "stdlib.h" +#include "string.h" +#include "fix_gcmc.h" +#include "atom.h" +#include "atom_vec.h" +#include "update.h" +#include "modify.h" +#include "fix.h" +#include "comm.h" +#include "group.h" +#include "domain.h" +#include "random_park.h" +#include "force.h" +#include "pair.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +/* ---------------------------------------------------------------------- */ + +FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (narg < 11) error->all(FLERR,"Illegal fix GCMC command"); + + vector_flag = 1; + size_vector = 6; + global_freq = 1; + extvector = 0; + restart_global = 1; + time_depend = 1; + + // required args + + nevery = atoi(arg[3]); + nexchanges = atoi(arg[4]); + nmcmoves = atoi(arg[5]); + ntype = atoi(arg[6]); + seed = atoi(arg[7]); + reservoir_temperature = atof(arg[8]); + chemical_potential = atof(arg[9]); + displace = atof(arg[10]); + + if (ntype <= 0 || ntype > atom->ntypes) + error->all(FLERR,"Invalid atom type in fix GCMC command"); + if (nexchanges < 0) error->all(FLERR,"Illegal fix GCMC command"); + if (nmcmoves < 0) error->all(FLERR,"Illegal fix GCMC command"); + if (seed <= 0) error->all(FLERR,"Illegal fix GCMC command"); + if (reservoir_temperature < 0.0) error->all(FLERR,"Illegal fix GCMC command"); + if (displace < 0.0) error->all(FLERR,"Illegal fix GCMC command"); + + // compute beta, lambda, sigma, and the zz factor + + beta = 1.0/(force->boltz*reservoir_temperature); + double gas_mass = atom->mass[ntype]; + double lambda = sqrt(force->hplanck*force->hplanck/ + (2.0*MY_PI*gas_mass*force->mvv2e* + force->boltz*reservoir_temperature)); + sigma = sqrt(force->boltz*reservoir_temperature/gas_mass/force->mvv2e); + zz = exp(beta*chemical_potential)/(pow(lambda,3)); + + // set defaults + + molflag = 0; + + // read options from end of input line + + options(narg-11,&arg[11]); + + // random number generator, same for all procs + + random_equal = new RanPark(lmp,seed); + + // random number generator, not the same for all procs + + random_unequal = new RanPark(lmp,seed); + + // compute the number of MC cycles that occur nevery timesteps + + ncycles = nexchanges + nmcmoves; + + // set up reneighboring + + force_reneighbor = 1; + next_reneighbor = update->ntimestep + 1; + + // zero out counters + + nmove_attempts = 0.0; + nmove_successes = 0.0; + ndel_attempts = 0.0; + ndel_successes = 0.0; + ninsert_attempts = 0.0; + ninsert_successes = 0.0; + + nmax = 0; + local_gas_list = NULL; +} + +/* ---------------------------------------------------------------------- */ + +FixGCMC::~FixGCMC() +{ + delete random_equal; + delete random_unequal; + memory->sfree(local_gas_list); +} + +/* ---------------------------------------------------------------------- */ + +int FixGCMC::setmask() +{ + int mask = 0; + mask |= PRE_EXCHANGE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixGCMC::init() +{ + // check that no deletable atoms are in atom->firstgroup + // deleting such an atom would not leave firstgroup atoms first + + int *type = atom->type; + + if (atom->firstgroup >= 0) { + int *mask = atom->mask; + int nlocal = atom->nlocal; + int firstgroupbit = group->bitmask[atom->firstgroup]; + + int flag = 0; + for (int i = 0; i < nlocal; i++) + if ((type[i] == ntype) && (mask[i] && firstgroupbit)) flag = 1; + + int flagall; + MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); + + if (flagall) + error->all(FLERR,"Cannot do GCMC on atoms in atom_modify first group"); + } + + // if molflag not set, warn if any deletable atom has a mol ID + + if (molflag == 0 && atom->molecule_flag) { + int *molecule = atom->molecule; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int flag = 0; + for (int i = 0; i < nlocal; i++) + if (type[i] == ntype) + if (molecule[i]) flag = 1; + int flagall; + MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); + if (flagall && comm->me == 0) + error->warning(FLERR,"Fix GCMC may delete atom with non-zero molecule ID"); + } + + if (molflag && atom->molecule_flag == 0) + error->all(FLERR,"Fix GCMC molecule command requires atom attribute molecule"); + + if (molflag != 0) error->all(FLERR,"Fix GCMC molecule feature does not yet work"); + + if (force->pair->single_enable == 0) + error->all(FLERR,"Fix GCMC incompatible with given pair_style"); +} + +/* ---------------------------------------------------------------------- + attempt particle insertions and deletions + done before exchange, borders, reneighbor + so that ghost atoms and neighbor lists will be correct +------------------------------------------------------------------------- */ + +void FixGCMC::pre_exchange() +{ + // just return if should not be called on this timestep + + if (next_reneighbor != update->ntimestep) return; + + if (domain->triclinic == 0) { + xlo = domain->boxlo[0]; + xhi = domain->boxhi[0]; + ylo = domain->boxlo[1]; + yhi = domain->boxhi[1]; + zlo = domain->boxlo[2]; + zhi = domain->boxhi[2]; + sublo = domain->sublo; + subhi = domain->subhi; + } else { + xlo = domain->boxlo_bound[0]; + xhi = domain->boxhi_bound[0]; + ylo = domain->boxlo_bound[1]; + yhi = domain->boxhi_bound[1]; + zlo = domain->boxlo_bound[2]; + zhi = domain->boxhi_bound[2]; + sublo = domain->sublo_lamda; + subhi = domain->subhi_lamda; + } + + volume = domain->xprd * domain->yprd * domain->zprd; + + // grow local_gas_list array if necessary + + if (atom->nlocal > nmax) { + memory->sfree(local_gas_list); + nmax = atom->nmax; + local_gas_list = (int *) memory->smalloc(nmax*sizeof(int), + "GCMC:local_gas_list"); + } + + int *type = atom->type; + ngas_local = 0; + for (int i = 0; i < atom->nlocal; i++) + if (type[i] == ntype) + local_gas_list[ngas_local++] = i; + + MPI_Allreduce(&ngas_local,&ngas,1,MPI_INT,MPI_SUM,world); + MPI_Scan(&ngas_local,&ngas_before,1,MPI_INT,MPI_SUM,world); + ngas_before -= ngas_local; + + // perform ncycles MC cycles + + for (int i = 0; i < ncycles; i++) { + int random_int_fraction = + static_cast(random_equal->uniform()*ncycles) + 1; + if (random_int_fraction <= nmcmoves) { + attempt_move(); + } else { + if (random_equal->uniform() < 0.5) attempt_deletion(); + else attempt_insertion(); + } + } + + next_reneighbor = update->ntimestep + nevery; +} + +/* ---------------------------------------------------------------------- + choose particle randomly across all procs and attempt displacement +------------------------------------------------------------------------- */ + +void FixGCMC::attempt_move() +{ + int i,iwhichglobal,iwhichlocal; + double rx,ry,rz; + double coord[3]; + double **x = atom->x; + + nmove_attempts += 1.0; + + int success = 0; + iwhichglobal = static_cast (ngas*random_equal->uniform()); + if ((iwhichglobal >= ngas_before) && + (iwhichglobal < ngas_before + ngas_local)) { + iwhichlocal = iwhichglobal - ngas_before; + i = local_gas_list[iwhichlocal]; + double energy_before = energy(i,x[i]); + double rsq = 1.1; + while (rsq > 1.0) { + rx = 2*random_unequal->uniform() - 1.0; + ry = 2*random_unequal->uniform() - 1.0; + if (domain->dimension == 3) rz = 2*random_unequal->uniform() - 1.0; + else rz = 0.0; + rsq = rx*rx + ry*ry + rz*rz; + } + coord[0] = x[i][0] + displace*rx; + coord[1] = x[i][1] + displace*ry; + coord[2] = x[i][2] + displace*rz; + double energy_after = energy(i,coord); + if (random_unequal->uniform() < exp(-beta*(energy_after - energy_before))) { + x[i][0] = coord[0]; + x[i][1] = coord[1]; + x[i][2] = coord[2]; + success = 1; + } + } + + int success_all = 0; + MPI_Allreduce(&success,&success_all,1,MPI_INT,MPI_MAX,world); + + if (success_all) { + nmove_successes += 1.0; + comm->borders(); + } + +} + +/* ---------------------------------------------------------------------- + attempt particle deletion +------------------------------------------------------------------------- */ + +void FixGCMC::attempt_deletion() +{ + ndel_attempts += 1.0; + + if (ngas == 0) return; + + int i,iwhichglobal,iwhichlocal; + AtomVec *avec = atom->avec; + + // choose particle randomly across all procs and delete it + // keep ngas, ngas_local, ngas_before, and local_gas_list current + // after each deletion + + int success = 0; + iwhichglobal = static_cast (ngas*random_equal->uniform()); + if ((iwhichglobal >= ngas_before) && + (iwhichglobal < ngas_before + ngas_local)) { + iwhichlocal = iwhichglobal - ngas_before; + i = local_gas_list[iwhichlocal]; + double deletion_energy = energy(i,atom->x[i]); + if (random_unequal->uniform() < + ngas*exp(beta*deletion_energy)/(zz*volume)) { + avec->copy(atom->nlocal-1,i,1); + atom->nlocal--; + local_gas_list[iwhichlocal] = local_gas_list[ngas_local-1]; + ngas_local--; + success = 1; + } + } + + int success_all = 0; + MPI_Allreduce(&success,&success_all,1,MPI_INT,MPI_MAX,world); + + if (success_all) { + ngas--; + ndel_successes += 1.0; + atom->natoms--; + if (iwhichglobal < ngas_before) ngas_before--; + comm->borders(); + if (atom->tag_enable) { + atom->tag_extend(); + if (atom->map_style) { + atom->map_init(); + atom->map_set(); + } + } + } +} + +/* ---------------------------------------------------------------------- + attempt particle insertion +------------------------------------------------------------------------- */ + +void FixGCMC::attempt_insertion() +{ + int flag,success; + double coord[3],lamda[3]; + double *newcoord; + + ninsert_attempts += 1.0; + + // choose random position for new atom within box + + coord[0] = xlo + random_equal->uniform() * (xhi-xlo); + coord[1] = ylo + random_equal->uniform() * (yhi-ylo); + coord[2] = zlo + random_equal->uniform() * (zhi-zlo); + + // check if new atom is in my sub-box or above it if I'm highest proc + // if so, add to my list via create_atom() + // initialize info about the atoms + // set group mask to "all" plus fix group + + if (domain->triclinic) { + domain->x2lamda(coord,lamda); + newcoord = lamda; + } else newcoord = coord; + + flag = 0; + if (newcoord[0] >= sublo[0] && newcoord[0] < subhi[0] && + newcoord[1] >= sublo[1] && newcoord[1] < subhi[1] && + newcoord[2] >= sublo[2] && newcoord[2] < subhi[2]) flag = 1; + + success = 0; + if (flag) { + int nall = atom->nlocal + atom->nghost; + double insertion_energy = energy(nall,coord); + if (random_unequal->uniform() < + zz*volume*exp(-beta*insertion_energy)/(ngas+1)) { + atom->avec->create_atom(ntype,coord); + int m = atom->nlocal - 1; + atom->type[m] = ntype; + atom->mask[m] = 1 | groupbit; + atom->v[m][0] = random_unequal->gaussian()*sigma; + atom->v[m][1] = random_unequal->gaussian()*sigma; + atom->v[m][2] = random_unequal->gaussian()*sigma; + + int nfix = modify->nfix; + Fix **fix = modify->fix; + for (int j = 0; j < nfix; j++) + if (fix[j]->create_attribute) fix[j]->set_arrays(m); + + if (atom->nlocal > nmax) { + nmax = atom->nmax; + local_gas_list = (int *) + memory->srealloc(local_gas_list,nmax*sizeof(int), + "GCMC:local_gas_list"); + } + + local_gas_list[ngas_local] = atom->nlocal; + ngas_local++; + success = 1; + } + } + + int success_all = 0; + MPI_Allreduce(&success,&success_all,1,MPI_INT,MPI_MAX,world); + + if (success_all) { + ngas++; + ninsert_successes += 1.0; + MPI_Scan(&ngas_local,&ngas_before,1,MPI_INT,MPI_SUM,world); + ngas_before -= ngas_local; + comm->borders(); + if (atom->tag_enable) { + atom->natoms++; + atom->tag_extend(); + if (atom->map_style) { + atom->map_init(); + atom->map_set(); + } + } + } +} + +/* ---------------------------------------------------------------------- + compute particle's interaction energy with the rest of the system +------------------------------------------------------------------------- */ + +double FixGCMC::energy(int i, double *coord) +{ + double delx,dely,delz,rsq; + + double **x = atom->x; + int *type = atom->type; + int nall = atom->nlocal + atom->nghost; + pair = force->pair; + cutsq = force->pair->cutsq; + + double fpair = 0.0; + double factor_coul = 1.0; + double factor_lj = 1.0; + + double total_energy = 0.0; + for (int j = 0; j < nall; j++) { + + if (i == j) continue; + + delx = coord[0] - x[j][0]; + dely = coord[1] - x[j][1]; + delz = coord[2] - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + int jtype = type[j]; + + if (rsq < cutsq[ntype][jtype]) + total_energy += + pair->single(i,j,ntype,jtype,rsq,factor_coul,factor_lj,fpair); + } + + return total_energy; +} + +/* ---------------------------------------------------------------------- + parse optional parameters at end of input line +------------------------------------------------------------------------- */ + +void FixGCMC::options(int narg, char **arg) +{ + if (narg < 0) error->all(FLERR,"Illegal fix GCMC command"); + + int iarg = 0; + while (iarg < narg) { + if (strcmp(arg[iarg],"molecule") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix GCMC command"); + if (strcmp(arg[iarg+1],"no") == 0) molflag = 0; + else if (strcmp(arg[iarg+1],"yes") == 0) molflag = 1; + else error->all(FLERR,"Illegal fix evaporate command"); + iarg += 2; + } else error->all(FLERR,"Illegal fix GCMC command"); + } +} + +/* ---------------------------------------------------------------------- + return acceptance ratios +------------------------------------------------------------------------- */ + +double FixGCMC::compute_vector(int n) +{ + if (n == 0) return nmove_attempts; + if (n == 1) return nmove_successes; + if (n == 2) return ndel_attempts; + if (n == 3) return ndel_successes; + if (n == 4) return ninsert_attempts; + if (n == 5) return ninsert_successes; + return 0.0; +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +double FixGCMC::memory_usage() +{ + double bytes = nmax * sizeof(int); + return bytes; +} + +/* ---------------------------------------------------------------------- + pack entire state of Fix into one write +------------------------------------------------------------------------- */ + +void FixGCMC::write_restart(FILE *fp) +{ + int n = 0; + double list[4]; + list[n++] = random_equal->state(); + list[n++] = random_unequal->state(); + list[n++] = next_reneighbor; + + if (comm->me == 0) { + int size = n * sizeof(double); + fwrite(&size,sizeof(int),1,fp); + fwrite(list,sizeof(double),n,fp); + } +} + +/* ---------------------------------------------------------------------- + use state info from restart file to restart the Fix +------------------------------------------------------------------------- */ + +void FixGCMC::restart(char *buf) +{ + int n = 0; + double *list = (double *) buf; + + seed = static_cast (list[n++]); + random_equal->reset(seed); + + seed = static_cast (list[n++]); + random_unequal->reset(seed); + + next_reneighbor = static_cast (list[n++]); +} diff --git a/src/MC/fix_gcmc.h b/src/MC/fix_gcmc.h new file mode 100644 index 0000000000..77b9f300e9 --- /dev/null +++ b/src/MC/fix_gcmc.h @@ -0,0 +1,78 @@ +/* ---------------------------------------------------------------------- + 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(gcmc,FixGCMC) + +#else + +#ifndef LMP_FIX_GCMC_H +#define LMP_FIX_GCMC_H + +#include "stdio.h" +#include "fix.h" + +namespace LAMMPS_NS { + +class FixGCMC : public Fix { + public: + FixGCMC(class LAMMPS *, int, char **); + ~FixGCMC(); + int setmask(); + void init(); + void pre_exchange(); + void attempt_move(); + void attempt_deletion(); + void attempt_insertion(); + double energy(int, double *); + double compute_vector(int); + double memory_usage(); + void write_restart(FILE *); + void restart(char *); + + private: + int ntype,nevery,seed; + int ncycles,nexchanges,nmcmoves; + int ngas; // # of gas molecules (or atoms) on all procs + int ngas_local; // # of gas molecules (or atoms) on this proc + int ngas_before; // # of gas molecules (or atoms) on procs < this proc + int molflag; // 0 = atomic, 1 = molecular system + double nmove_attempts; + double nmove_successes; + double ndel_attempts; + double ndel_successes; + double ninsert_attempts; + double ninsert_successes; + + int nmax; + double reservoir_temperature; + double chemical_potential; + double displace; + double beta,zz,sigma,volume; + double xlo,xhi,ylo,yhi,zlo,zhi; + double *sublo,*subhi; + int *local_gas_list; + double **cutsq; + class Pair *pair; + + class RanPark *random_equal; + class RanPark *random_unequal; + + void options(int, char **); +}; + +} + +#endif +#endif diff --git a/src/DSMC/pair_dsmc.cpp b/src/MC/pair_dsmc.cpp similarity index 96% rename from src/DSMC/pair_dsmc.cpp rename to src/MC/pair_dsmc.cpp index b04dd8f6d7..39a0f50133 100644 --- a/src/DSMC/pair_dsmc.cpp +++ b/src/MC/pair_dsmc.cpp @@ -32,9 +32,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairDSMC::PairDSMC(LAMMPS *lmp) : Pair(lmp) @@ -157,9 +154,9 @@ void PairDSMC::compute(int eflag, int vflag) convert_double_to_equivalent_int(num_of_collisions_double); if (num_of_collisions > number_of_A) - error->warning("Pair dsmc: num_of_collisions > number_of_A",0); + error->warning(FLERR,"Pair dsmc: num_of_collisions > number_of_A",0); if (num_of_collisions > number_of_B) - error->warning("Pair dsmc: num_of_collisions > number_of_B",0); + error->warning(FLERR,"Pair dsmc: num_of_collisions > number_of_B",0); // perform collisions on pairs of particles in icell @@ -208,7 +205,7 @@ void PairDSMC::allocate() void PairDSMC::settings(int narg, char **arg) { - if (narg != 6) error->all("Illegal pair_style command"); + if (narg != 6) error->all(FLERR,"Illegal pair_style command"); cut_global = 0.0; max_cell_size = force->numeric(arg[0]); @@ -220,8 +217,8 @@ void PairDSMC::settings(int narg, char **arg) // initialize Marsaglia RNG with processor-unique seed - if (max_cell_size <= 0.0) error->all("Illegal pair_style command"); - if (seed <= 0) error->all("Illegal pair_style command"); + if (max_cell_size <= 0.0) error->all(FLERR,"Illegal pair_style command"); + if (seed <= 0) error->all(FLERR,"Illegal pair_style command"); if (random) delete random; random = new RanMars(lmp,seed + comm->me); @@ -243,7 +240,7 @@ void PairDSMC::settings(int narg, char **arg) void PairDSMC::coeff(int narg, char **arg) { - if (narg < 3 || narg > 4) error->all("Incorrect args for pair coefficients"); + if (narg < 3 || narg > 4) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -265,7 +262,7 @@ void PairDSMC::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -518,7 +515,7 @@ void PairDSMC::scatter_random(int i, int j, int icell) int PairDSMC::convert_double_to_equivalent_int(double input_double) { if (input_double > INT_MAX) - error->all("Tried to convert a double to int, but input_double > INT_MAX"); + error->all(FLERR,"Tried to convert a double to int, but input_double > INT_MAX"); int output_int = static_cast(input_double + random->uniform()); return output_int; diff --git a/src/DSMC/pair_dsmc.h b/src/MC/pair_dsmc.h similarity index 100% rename from src/DSMC/pair_dsmc.h rename to src/MC/pair_dsmc.h diff --git a/src/MEAM/pair_meam.cpp b/src/MEAM/pair_meam.cpp index 7c6fd9dbb2..fda4c6b3c1 100644 --- a/src/MEAM/pair_meam.cpp +++ b/src/MEAM/pair_meam.cpp @@ -32,9 +32,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define MAXLINE 1024 enum{FCC,BCC,HCP,DIM,DIAMOND,B1,C11,L12,B2}; @@ -49,6 +46,7 @@ char *keywords[] = {"Ec","alpha","rho0","delta","lattce", PairMEAM::PairMEAM(LAMMPS *lmp) : Pair(lmp) { single_enable = 0; + restartinfo = 0; one_coeff = 1; nmax = 0; @@ -247,7 +245,7 @@ void PairMEAM::compute(int eflag, int vflag) if (errorflag) { char str[128]; sprintf(str,"MEAM library error %d",errorflag); - error->one(str); + error->one(FLERR,str); } offset += numneigh_half[i]; } @@ -262,7 +260,7 @@ void PairMEAM::compute(int eflag, int vflag) if (errorflag) { char str[128]; sprintf(str,"MEAM library error %d",errorflag); - error->one(str); + error->one(FLERR,str); } comm->forward_comm_pair(this); @@ -290,7 +288,7 @@ void PairMEAM::compute(int eflag, int vflag) if (errorflag) { char str[128]; sprintf(str,"MEAM library error %d",errorflag); - error->one(str); + error->one(FLERR,str); } offset += numneigh_half[i]; } @@ -323,7 +321,7 @@ void PairMEAM::allocate() void PairMEAM::settings(int narg, char **arg) { - if (narg != 0) error->all("Illegal pair_style command"); + if (narg != 0) error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -336,12 +334,12 @@ void PairMEAM::coeff(int narg, char **arg) if (!allocated) allocate(); - if (narg < 6) error->all("Incorrect args for pair coefficients"); + if (narg < 6) error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read MEAM element names between 2 filenames // nelements = # of MEAM elements @@ -353,7 +351,7 @@ void PairMEAM::coeff(int narg, char **arg) delete [] mass; } nelements = narg - 4 - atom->ntypes; - if (nelements < 1) error->all("Incorrect args for pair coefficients"); + if (nelements < 1) error->all(FLERR,"Incorrect args for pair coefficients"); elements = new char*[nelements]; mass = new double[nelements]; @@ -379,7 +377,7 @@ void PairMEAM::coeff(int narg, char **arg) if (strcmp(arg[i],elements[j]) == 0) break; if (j < nelements) map[m] = j; else if (strcmp(arg[i],"NULL") == 0) map[m] = -1; - else error->all("Incorrect args for pair coefficients"); + else error->all(FLERR,"Incorrect args for pair coefficients"); } // clear setflag since coeff() called once with I,J = * * @@ -401,7 +399,7 @@ void PairMEAM::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -411,7 +409,7 @@ void PairMEAM::coeff(int narg, char **arg) void PairMEAM::init_style() { if (force->newton_pair == 0) - error->all("Pair style MEAM requires newton pair on"); + error->all(FLERR,"Pair style MEAM requires newton pair on"); // need full and half neighbor list @@ -464,7 +462,7 @@ void PairMEAM::read_files(char *globalfile, char *userfile) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open MEAM potential file %s",globalfile); - error->one(str); + error->one(FLERR,str); } } @@ -544,7 +542,7 @@ void PairMEAM::read_files(char *globalfile, char *userfile) } if (nwords != params_per_line) - error->all("Incorrect format in MEAM potential file"); + error->all(FLERR,"Incorrect format in MEAM potential file"); // words = ptrs to all words in line // strip single and double quotes from words @@ -571,7 +569,7 @@ void PairMEAM::read_files(char *globalfile, char *userfile) else if (strcmp(words[1],"hcp") == 0) lat[i] = HCP; else if (strcmp(words[1],"dim") == 0) lat[i] = DIM; else if (strcmp(words[1],"dia") == 0) lat[i] = DIAMOND; - else error->all("Unrecognized lattice type in MEAM file 1"); + else error->all(FLERR,"Unrecognized lattice type in MEAM file 1"); // store parameters @@ -599,7 +597,7 @@ void PairMEAM::read_files(char *globalfile, char *userfile) // error if didn't find all elements in file if (nset != nelements) - error->all("Did not find all elements in MEAM library file"); + error->all(FLERR,"Did not find all elements in MEAM library file"); // pass element parameters to MEAM package @@ -645,7 +643,7 @@ void PairMEAM::read_files(char *globalfile, char *userfile) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open MEAM potential file %s",userfile); - error->one(str); + error->one(FLERR,str); } } @@ -695,7 +693,7 @@ void PairMEAM::read_files(char *globalfile, char *userfile) char str[128]; sprintf(str,"Keyword %s in MEAM parameter file not recognized", params[0]); - error->all(str); + error->all(FLERR,str); } nindex = nparams - 2; for (i = 0; i < nindex; i++) index[i] = atoi(params[i+1]); @@ -712,7 +710,7 @@ void PairMEAM::read_files(char *globalfile, char *userfile) else if (strcmp(params[nparams-1],"c11") == 0) value = C11; else if (strcmp(params[nparams-1],"l12") == 0) value = L12; else if (strcmp(params[nparams-1],"b2") == 0) value = B2; - else error->all("Unrecognized lattice type in MEAM file 2"); + else error->all(FLERR,"Unrecognized lattice type in MEAM file 2"); } else value = atof(params[nparams-1]); @@ -723,7 +721,7 @@ void PairMEAM::read_files(char *globalfile, char *userfile) if (errorflag) { char str[128]; sprintf(str,"MEAM library error %d",errorflag); - error->all(str); + error->all(FLERR,str); } } diff --git a/src/MOLECULE/Install.sh b/src/MOLECULE/Install.sh index e04276c460..58deb45525 100644 --- a/src/MOLECULE/Install.sh +++ b/src/MOLECULE/Install.sh @@ -27,9 +27,6 @@ if (test $1 = 1) then cp dihedral_hybrid.cpp .. cp dihedral_multi_harmonic.cpp .. cp dihedral_opls.cpp .. - cp fix_bond_break.cpp .. - cp fix_bond_create.cpp .. - cp fix_bond_swap.cpp .. cp improper_cvff.cpp .. cp improper_harmonic.cpp .. cp improper_hybrid.cpp .. @@ -64,9 +61,6 @@ if (test $1 = 1) then cp dihedral_hybrid.h .. cp dihedral_multi_harmonic.h .. cp dihedral_opls.h .. - cp fix_bond_break.h .. - cp fix_bond_create.h .. - cp fix_bond_swap.h .. cp improper_cvff.h .. cp improper_harmonic.h .. cp improper_hybrid.h .. @@ -103,9 +97,6 @@ elif (test $1 = 0) then rm -f ../dihedral_hybrid.cpp rm -f ../dihedral_multi_harmonic.cpp rm -f ../dihedral_opls.cpp - rm -f ../fix_bond_break.cpp - rm -f ../fix_bond_create.cpp - rm -f ../fix_bond_swap.cpp rm -f ../improper_cvff.cpp rm -f ../improper_harmonic.cpp rm -f ../improper_hybrid.cpp @@ -140,9 +131,6 @@ elif (test $1 = 0) then rm -f ../dihedral_hybrid.h rm -f ../dihedral_multi_harmonic.h rm -f ../dihedral_opls.h - rm -f ../fix_bond_break.h - rm -f ../fix_bond_create.h - rm -f ../fix_bond_swap.h rm -f ../improper_cvff.h rm -f ../improper_harmonic.h rm -f ../improper_hybrid.h diff --git a/src/MOLECULE/angle_charmm.cpp b/src/MOLECULE/angle_charmm.cpp index a0b0fc9708..0361209e66 100644 --- a/src/MOLECULE/angle_charmm.cpp +++ b/src/MOLECULE/angle_charmm.cpp @@ -23,10 +23,12 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define SMALL 0.001 @@ -193,7 +195,7 @@ void AngleCharmm::allocate() void AngleCharmm::coeff(int narg, char **arg) { - if (narg != 5) error->all("Incorrect args for angle coefficients"); + if (narg != 5) error->all(FLERR,"Incorrect args for angle coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -209,14 +211,14 @@ void AngleCharmm::coeff(int narg, char **arg) int count = 0; for (int i = ilo; i <= ihi; i++) { k[i] = k_one; - theta0[i] = theta0_one/180.0 * PI; + theta0[i] = theta0_one/180.0 * MY_PI; k_ub[i] = k_ub_one; r_ub[i] = r_ub_one; setflag[i] = 1; count++; } - if (count == 0) error->all("Incorrect args for angle coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients"); } /* ---------------------------------------------------------------------- */ diff --git a/src/MOLECULE/angle_charmm.h b/src/MOLECULE/angle_charmm.h index 81d23867b6..affd5f1ec3 100644 --- a/src/MOLECULE/angle_charmm.h +++ b/src/MOLECULE/angle_charmm.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class AngleCharmm : public Angle { public: AngleCharmm(class LAMMPS *); - ~AngleCharmm(); - void compute(int, int); + virtual ~AngleCharmm(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_angle(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, int, int, int); - private: + protected: double *k,*theta0,*k_ub,*r_ub; void allocate(); diff --git a/src/MOLECULE/angle_cosine.cpp b/src/MOLECULE/angle_cosine.cpp index 771093af6b..dc82378083 100644 --- a/src/MOLECULE/angle_cosine.cpp +++ b/src/MOLECULE/angle_cosine.cpp @@ -19,10 +19,12 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define SMALL 0.001 @@ -152,7 +154,7 @@ void AngleCosine::allocate() void AngleCosine::coeff(int narg, char **arg) { - if (narg != 2) error->all("Incorrect args for angle coefficients"); + if (narg != 2) error->all(FLERR,"Incorrect args for angle coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -167,14 +169,14 @@ void AngleCosine::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for angle coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients"); } /* ---------------------------------------------------------------------- */ double AngleCosine::equilibrium_angle(int i) { - return PI; + return MY_PI; } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/angle_cosine.h b/src/MOLECULE/angle_cosine.h index 1f4aabe456..6b73cf50f1 100644 --- a/src/MOLECULE/angle_cosine.h +++ b/src/MOLECULE/angle_cosine.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class AngleCosine : public Angle { public: AngleCosine(class LAMMPS *); - ~AngleCosine(); - void compute(int, int); + virtual ~AngleCosine(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_angle(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, int, int, int); - private: + protected: double *k; void allocate(); diff --git a/src/MOLECULE/angle_cosine_delta.h b/src/MOLECULE/angle_cosine_delta.h index a6848cc9a5..52399422fc 100644 --- a/src/MOLECULE/angle_cosine_delta.h +++ b/src/MOLECULE/angle_cosine_delta.h @@ -28,7 +28,7 @@ namespace LAMMPS_NS { class AngleCosineDelta : public AngleCosineSquared { public: AngleCosineDelta(class LAMMPS *); - void compute(int, int); + virtual void compute(int, int); double single(int, int, int, int); }; diff --git a/src/MOLECULE/angle_cosine_periodic.cpp b/src/MOLECULE/angle_cosine_periodic.cpp index 4d2bd58919..8aaf54cb9f 100644 --- a/src/MOLECULE/angle_cosine_periodic.cpp +++ b/src/MOLECULE/angle_cosine_periodic.cpp @@ -23,10 +23,12 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define SMALL 0.001 @@ -199,7 +201,7 @@ void AngleCosinePeriodic::allocate() void AngleCosinePeriodic::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for angle coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for angle coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -208,7 +210,7 @@ void AngleCosinePeriodic::coeff(int narg, char **arg) double c_one = atof(arg[1]); int b_one = atoi(arg[2]); int n_one = atoi(arg[3]); - if (n_one <= 0) error->all("Incorrect args for angle coefficients"); + if (n_one <= 0) error->all(FLERR,"Incorrect args for angle coefficients"); int count = 0; for (int i = ilo; i <= ihi; i++) { @@ -219,14 +221,14 @@ void AngleCosinePeriodic::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for angle coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients"); } /* ---------------------------------------------------------------------- */ double AngleCosinePeriodic::equilibrium_angle(int i) { - return PI; + return MY_PI; } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/angle_cosine_periodic.h b/src/MOLECULE/angle_cosine_periodic.h index 4fb901ebe5..fa0a56ab89 100644 --- a/src/MOLECULE/angle_cosine_periodic.h +++ b/src/MOLECULE/angle_cosine_periodic.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class AngleCosinePeriodic : public Angle { public: AngleCosinePeriodic(class LAMMPS *); - ~AngleCosinePeriodic(); - void compute(int, int); + virtual ~AngleCosinePeriodic(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_angle(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, int, int, int); - private: + protected: double *k; int *multiplicity,*b; diff --git a/src/MOLECULE/angle_cosine_squared.cpp b/src/MOLECULE/angle_cosine_squared.cpp index caaf44db5e..95c1a3b922 100644 --- a/src/MOLECULE/angle_cosine_squared.cpp +++ b/src/MOLECULE/angle_cosine_squared.cpp @@ -23,10 +23,12 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define SMALL 0.001 @@ -164,7 +166,7 @@ void AngleCosineSquared::allocate() void AngleCosineSquared::coeff(int narg, char **arg) { - if (narg != 3) error->all("Incorrect args for angle coefficients"); + if (narg != 3) error->all(FLERR,"Incorrect args for angle coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -178,12 +180,12 @@ void AngleCosineSquared::coeff(int narg, char **arg) int count = 0; for (int i = ilo; i <= ihi; i++) { k[i] = k_one; - theta0[i] = theta0_one/180.0 * PI; + theta0[i] = theta0_one/180.0 * MY_PI; setflag[i] = 1; count++; } - if (count == 0) error->all("Incorrect args for angle coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients"); } /* ---------------------------------------------------------------------- */ diff --git a/src/MOLECULE/angle_harmonic.cpp b/src/MOLECULE/angle_harmonic.cpp index 20fa892cee..8a462abaed 100644 --- a/src/MOLECULE/angle_harmonic.cpp +++ b/src/MOLECULE/angle_harmonic.cpp @@ -19,10 +19,12 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define SMALL 0.001 @@ -164,7 +166,7 @@ void AngleHarmonic::allocate() void AngleHarmonic::coeff(int narg, char **arg) { - if (narg != 3) error->all("Incorrect args for angle coefficients"); + if (narg != 3) error->all(FLERR,"Incorrect args for angle coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -178,12 +180,12 @@ void AngleHarmonic::coeff(int narg, char **arg) int count = 0; for (int i = ilo; i <= ihi; i++) { k[i] = k_one; - theta0[i] = theta0_one/180.0 * PI; + theta0[i] = theta0_one/180.0 * MY_PI; setflag[i] = 1; count++; } - if (count == 0) error->all("Incorrect args for angle coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients"); } /* ---------------------------------------------------------------------- */ diff --git a/src/MOLECULE/angle_harmonic.h b/src/MOLECULE/angle_harmonic.h index f91a84f7fa..7c13d926fb 100644 --- a/src/MOLECULE/angle_harmonic.h +++ b/src/MOLECULE/angle_harmonic.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class AngleHarmonic : public Angle { public: AngleHarmonic(class LAMMPS *); - ~AngleHarmonic(); - void compute(int, int); + virtual ~AngleHarmonic(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_angle(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, int, int, int); - private: + protected: double *k,*theta0; void allocate(); diff --git a/src/MOLECULE/angle_hybrid.cpp b/src/MOLECULE/angle_hybrid.cpp index ac3b8a28a6..869b2bf41a 100644 --- a/src/MOLECULE/angle_hybrid.cpp +++ b/src/MOLECULE/angle_hybrid.cpp @@ -162,7 +162,7 @@ void AngleHybrid::settings(int narg, char **arg) { int i,m,istyle; - if (narg < 1) error->all("Illegal angle_style command"); + if (narg < 1) error->all(FLERR,"Illegal angle_style command"); // delete old lists, since cannot just change settings @@ -207,17 +207,19 @@ void AngleHybrid::settings(int narg, char **arg) // one exception is 1st arg of style "table", which is non-numeric // need a better way to skip these exceptions + int dummy; nstyles = 0; i = 0; + while (i < narg) { for (m = 0; m < nstyles; m++) if (strcmp(arg[i],keywords[m]) == 0) - error->all("Angle style hybrid cannot use same pair style twice"); + error->all(FLERR,"Angle style hybrid cannot use same pair style twice"); if (strcmp(arg[i],"hybrid") == 0) - error->all("Angle style hybrid cannot have hybrid as an argument"); + error->all(FLERR,"Angle style hybrid cannot have hybrid as an argument"); if (strcmp(arg[i],"none") == 0) - error->all("Angle style hybrid cannot have none as an argument"); - styles[nstyles] = force->new_angle(arg[i]); + error->all(FLERR,"Angle style hybrid cannot have none as an argument"); + styles[nstyles] = force->new_angle(arg[i],lmp->suffix,dummy); keywords[nstyles] = new char[strlen(arg[i])+1]; strcpy(keywords[nstyles],arg[i]); istyle = i; @@ -252,7 +254,7 @@ void AngleHybrid::coeff(int narg, char **arg) if (m == nstyles) { if (strcmp(arg[1],"none") == 0) none = 1; else if (strcmp(arg[1],"skip") == 0) none = skip = 1; - else error->all("Angle coeff for hybrid has invalid style"); + else error->all(FLERR,"Angle coeff for hybrid has invalid style"); } // move 1st arg to 2nd arg @@ -286,7 +288,8 @@ void AngleHybrid::coeff(int narg, char **arg) double AngleHybrid::equilibrium_angle(int i) { - if (map[i] < 0) error->one("Invoked angle equil angle on angle style none"); + if (map[i] < 0) + error->one(FLERR,"Invoked angle equil angle on angle style none"); return styles[map[i]]->equilibrium_angle(i); } @@ -320,14 +323,14 @@ void AngleHybrid::read_restart(FILE *fp) allocate(); - int n; + int n,dummy; for (int m = 0; m < nstyles; m++) { if (me == 0) fread(&n,sizeof(int),1,fp); MPI_Bcast(&n,1,MPI_INT,0,world); keywords[m] = new char[n]; if (me == 0) fread(keywords[m],sizeof(char),n,fp); MPI_Bcast(keywords[m],n,MPI_CHAR,0,world); - styles[m] = force->new_angle(keywords[m]); + styles[m] = force->new_angle(keywords[m],lmp->suffix,dummy); } } @@ -335,7 +338,7 @@ void AngleHybrid::read_restart(FILE *fp) double AngleHybrid::single(int type, int i1, int i2, int i3) { - if (map[type] < 0) error->one("Invoked angle single on angle style none"); + if (map[type] < 0) error->one(FLERR,"Invoked angle single on angle style none"); return styles[map[type]]->single(type,i1,i2,i3); } diff --git a/src/MOLECULE/angle_table.cpp b/src/MOLECULE/angle_table.cpp index c47309c505..a8e6254500 100644 --- a/src/MOLECULE/angle_table.cpp +++ b/src/MOLECULE/angle_table.cpp @@ -24,13 +24,12 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; enum{LINEAR,SPLINE}; @@ -183,14 +182,14 @@ void AngleTable::allocate() void AngleTable::settings(int narg, char **arg) { - if (narg != 2) error->all("Illegal angle_style command"); + if (narg != 2) error->all(FLERR,"Illegal angle_style command"); if (strcmp(arg[0],"linear") == 0) tabstyle = LINEAR; else if (strcmp(arg[0],"spline") == 0) tabstyle = SPLINE; - else error->all("Unknown table style in angle style table"); + else error->all(FLERR,"Unknown table style in angle style table"); tablength = force->inumeric(arg[1]); - if (tablength < 2) error->all("Illegal number of angle table entries"); + if (tablength < 2) error->all(FLERR,"Illegal number of angle table entries"); // delete old tables, since cannot just change settings @@ -213,7 +212,7 @@ void AngleTable::settings(int narg, char **arg) void AngleTable::coeff(int narg, char **arg) { - if (narg != 3) error->all("Illegal angle_coeff command"); + if (narg != 3) error->all(FLERR,"Illegal angle_coeff command"); if (!allocated) allocate(); int ilo,ihi; @@ -230,19 +229,19 @@ void AngleTable::coeff(int narg, char **arg) // error check on table parameters - if (tb->ninput <= 1) error->one("Invalid angle table length"); + if (tb->ninput <= 1) error->one(FLERR,"Invalid angle table length"); double alo,ahi; alo = tb->afile[0]; ahi = tb->afile[tb->ninput-1]; if (fabs(alo-0.0) > TINY || fabs(ahi-180.0) > TINY) - error->all("Angle table must range from 0 to 180 degrees"); + error->all(FLERR,"Angle table must range from 0 to 180 degrees"); // convert theta from degrees to radians for (int i = 0; i < tb->ninput; i++){ - tb->afile[i] *= PI/180.0; - tb->ffile[i] *= 180.0/PI; + tb->afile[i] *= MY_PI/180.0; + tb->ffile[i] *= 180.0/MY_PI; } // spline read-in and compute a,e,f vectors within table @@ -261,7 +260,7 @@ void AngleTable::coeff(int narg, char **arg) } ntables++; - if (count == 0) error->all("Illegal angle_coeff command"); + if (count == 0) error->all(FLERR,"Illegal angle_coeff command"); } /* ---------------------------------------------------------------------- @@ -372,14 +371,14 @@ void AngleTable::read_table(Table *tb, char *file, char *keyword) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open file %s",file); - error->one(str); + error->one(FLERR,str); } // loop until section found with matching keyword while (1) { if (fgets(line,MAXLINE,fp) == NULL) - error->one("Did not find keyword in table file"); + error->one(FLERR,"Did not find keyword in table file"); if (strspn(line," \t\n") == strlen(line)) continue; // blank line if (line[0] == '#') continue; // comment if (strstr(line,keyword) == line) break; // matching keyword @@ -445,7 +444,7 @@ void AngleTable::compute_table(Table *tb) // delta = table spacing in angle for N-1 bins int tlm1 = tablength-1; - tb->delta = PI/ tlm1; + tb->delta = MY_PI / tlm1; tb->invdelta = 1.0/tb->delta; tb->deltasq6 = tb->delta*tb->delta / 6.0; @@ -504,18 +503,18 @@ void AngleTable::param_extract(Table *tb, char *line) tb->fplo = atof(word); word = strtok(NULL," \t\n\r\f"); tb->fphi = atof(word); - tb->fplo *= (180.0/PI)*(180.0/PI); - tb->fphi *= (180.0/PI)*(180.0/PI); + tb->fplo *= (180.0/MY_PI)*(180.0/MY_PI); + tb->fphi *= (180.0/MY_PI)*(180.0/MY_PI); } else if (strcmp(word,"EQ") == 0) { word = strtok(NULL," \t\n\r\f"); tb->theta0 = atof(word); } else { - error->one("Invalid keyword in angle table parameters"); + error->one(FLERR,"Invalid keyword in angle table parameters"); } word = strtok(NULL," \t\n\r\f"); } - if (tb->ninput == 0) error->one("Angle table parameters did not set N"); + if (tb->ninput == 0) error->one(FLERR,"Angle table parameters did not set N"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/angle_table.h b/src/MOLECULE/angle_table.h index 23ce4874ca..b404408349 100644 --- a/src/MOLECULE/angle_table.h +++ b/src/MOLECULE/angle_table.h @@ -28,8 +28,8 @@ namespace LAMMPS_NS { class AngleTable : public Angle { public: AngleTable(class LAMMPS *); - ~AngleTable(); - void compute(int, int); + virtual ~AngleTable(); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double equilibrium_angle(int); @@ -37,7 +37,7 @@ class AngleTable : public Angle { void read_restart(FILE *); double single(int, int, int, int); - private: + protected: int tabstyle,tablength; double *theta0; diff --git a/src/MOLECULE/atom_vec_angle.cpp b/src/MOLECULE/atom_vec_angle.cpp index ee601d7b81..46478bac07 100644 --- a/src/MOLECULE/atom_vec_angle.cpp +++ b/src/MOLECULE/atom_vec_angle.cpp @@ -23,9 +23,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define DELTA 10000 /* ---------------------------------------------------------------------- */ @@ -61,7 +58,7 @@ void AtomVecAngle::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); @@ -69,7 +66,7 @@ void AtomVecAngle::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); @@ -763,13 +760,13 @@ void AtomVecAngle::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); molecule[nlocal] = atoi(values[1]); type[nlocal] = atoi(values[2]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); x[nlocal][0] = coord[0]; x[nlocal][1] = coord[1]; @@ -816,7 +813,7 @@ bigint AtomVecAngle::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); diff --git a/src/MOLECULE/atom_vec_bond.cpp b/src/MOLECULE/atom_vec_bond.cpp index 842a28f4b7..700eb275a0 100644 --- a/src/MOLECULE/atom_vec_bond.cpp +++ b/src/MOLECULE/atom_vec_bond.cpp @@ -24,9 +24,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define DELTA 10000 /* ---------------------------------------------------------------------- */ @@ -62,7 +59,7 @@ void AtomVecBond::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); @@ -70,7 +67,7 @@ void AtomVecBond::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); @@ -723,13 +720,13 @@ void AtomVecBond::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); molecule[nlocal] = atoi(values[1]); type[nlocal] = atoi(values[2]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); x[nlocal][0] = coord[0]; x[nlocal][1] = coord[1]; @@ -774,7 +771,7 @@ bigint AtomVecBond::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); diff --git a/src/MOLECULE/atom_vec_full.cpp b/src/MOLECULE/atom_vec_full.cpp index 8987986a04..5a14488fdb 100644 --- a/src/MOLECULE/atom_vec_full.cpp +++ b/src/MOLECULE/atom_vec_full.cpp @@ -24,9 +24,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define DELTA 10000 /* ---------------------------------------------------------------------- */ @@ -62,7 +59,7 @@ void AtomVecFull::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); @@ -70,7 +67,7 @@ void AtomVecFull::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); q = memory->grow(atom->q,nmax,"atom:q"); molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); @@ -926,13 +923,13 @@ void AtomVecFull::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); molecule[nlocal] = atoi(values[1]); type[nlocal] = atoi(values[2]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); q[nlocal] = atof(values[3]); @@ -986,7 +983,7 @@ bigint AtomVecFull::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("q")) bytes += memory->usage(q,nmax); if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); diff --git a/src/MOLECULE/atom_vec_molecular.cpp b/src/MOLECULE/atom_vec_molecular.cpp index f85822722f..1672541b62 100644 --- a/src/MOLECULE/atom_vec_molecular.cpp +++ b/src/MOLECULE/atom_vec_molecular.cpp @@ -24,9 +24,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define DELTA 10000 /* ---------------------------------------------------------------------- */ @@ -62,7 +59,7 @@ void AtomVecMolecular::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); @@ -70,7 +67,7 @@ void AtomVecMolecular::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); @@ -909,13 +906,13 @@ void AtomVecMolecular::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); molecule[nlocal] = atoi(values[1]); type[nlocal] = atoi(values[2]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); x[nlocal][0] = coord[0]; x[nlocal][1] = coord[1]; @@ -966,7 +963,7 @@ bigint AtomVecMolecular::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); diff --git a/src/MOLECULE/bond_fene.cpp b/src/MOLECULE/bond_fene.cpp index 26a8454dbf..571ace9876 100644 --- a/src/MOLECULE/bond_fene.cpp +++ b/src/MOLECULE/bond_fene.cpp @@ -89,8 +89,8 @@ void BondFENE::compute(int eflag, int vflag) char str[128]; sprintf(str,"FENE bond too long: " BIGINT_FORMAT " %d %d %g", update->ntimestep,atom->tag[i1],atom->tag[i2],sqrt(rsq)); - error->warning(str,0); - if (rlogarg <= -3.0) error->one("Bad FENE bond"); + error->warning(FLERR,str,0); + if (rlogarg <= -3.0) error->one(FLERR,"Bad FENE bond"); rlogarg = 0.1; } @@ -151,7 +151,7 @@ void BondFENE::allocate() void BondFENE::coeff(int narg, char **arg) { - if (narg != 5) error->all("Incorrect args for bond coefficients"); + if (narg != 5) error->all(FLERR,"Incorrect args for bond coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -172,7 +172,7 @@ void BondFENE::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for bond coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); } /* ---------------------------------------------------------------------- @@ -186,7 +186,7 @@ void BondFENE::init_style() if (force->special_lj[1] != 0.0 || force->special_lj[2] != 1.0 || force->special_lj[3] != 1.0) { if (comm->me == 0) - error->warning("Use special bonds = 0,1,1 with bond style fene"); + error->warning(FLERR,"Use special bonds = 0,1,1 with bond style fene"); } } @@ -246,8 +246,8 @@ double BondFENE::single(int type, double rsq, int i, int j) char str[128]; sprintf(str,"FENE bond too long: " BIGINT_FORMAT " %g", update->ntimestep,sqrt(rsq)); - error->warning(str,0); - if (rlogarg <= -3.0) error->one("Bad FENE bond"); + error->warning(FLERR,str,0); + if (rlogarg <= -3.0) error->one(FLERR,"Bad FENE bond"); rlogarg = 0.1; } diff --git a/src/MOLECULE/bond_fene.h b/src/MOLECULE/bond_fene.h index 25ca928e31..6fb262c332 100644 --- a/src/MOLECULE/bond_fene.h +++ b/src/MOLECULE/bond_fene.h @@ -28,8 +28,8 @@ namespace LAMMPS_NS { class BondFENE : public Bond { public: BondFENE(class LAMMPS *); - ~BondFENE(); - void compute(int, int); + virtual ~BondFENE(); + virtual void compute(int, int); void coeff(int, char **); void init_style(); double equilibrium_distance(int); @@ -37,7 +37,7 @@ class BondFENE : public Bond { void read_restart(FILE *); double single(int, double, int, int); - private: + protected: double TWO_1_3; double *k,*r0,*epsilon,*sigma; diff --git a/src/MOLECULE/bond_fene_expand.cpp b/src/MOLECULE/bond_fene_expand.cpp index 560179beab..a466ca4dbf 100644 --- a/src/MOLECULE/bond_fene_expand.cpp +++ b/src/MOLECULE/bond_fene_expand.cpp @@ -94,8 +94,8 @@ void BondFENEExpand::compute(int eflag, int vflag) char str[128]; sprintf(str,"FENE bond too long: " BIGINT_FORMAT " %d %d %g", update->ntimestep,atom->tag[i1],atom->tag[i2],sqrt(rsq)); - error->warning(str,0); - if (rlogarg <= -3.0) error->one("Bad FENE bond"); + error->warning(FLERR,str,0); + if (rlogarg <= -3.0) error->one(FLERR,"Bad FENE bond"); rlogarg = 0.1; } @@ -157,7 +157,7 @@ void BondFENEExpand::allocate() void BondFENEExpand::coeff(int narg, char **arg) { - if (narg != 6) error->all("Incorrect args for bond coefficients"); + if (narg != 6) error->all(FLERR,"Incorrect args for bond coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -180,7 +180,7 @@ void BondFENEExpand::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for bond coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); } /* ---------------------------------------------------------------------- @@ -194,7 +194,7 @@ void BondFENEExpand::init_style() if (force->special_lj[1] != 0.0 || force->special_lj[2] != 1.0 || force->special_lj[3] != 1.0) { if (comm->me == 0) - error->warning("Use special bonds = 0,1,1 with bond style fene/expand"); + error->warning(FLERR,"Use special bonds = 0,1,1 with bond style fene/expand"); } } @@ -260,8 +260,8 @@ double BondFENEExpand::single(int type, double rsq, int i, int j) char str[128]; sprintf(str,"FENE bond too long: " BIGINT_FORMAT " %g", update->ntimestep,sqrt(rsq)); - error->warning(str,0); - if (rlogarg <= -3.0) error->one("Bad FENE bond"); + error->warning(FLERR,str,0); + if (rlogarg <= -3.0) error->one(FLERR,"Bad FENE bond"); rlogarg = 0.1; } diff --git a/src/MOLECULE/bond_fene_expand.h b/src/MOLECULE/bond_fene_expand.h index a86dfdba14..89f28c4bf3 100644 --- a/src/MOLECULE/bond_fene_expand.h +++ b/src/MOLECULE/bond_fene_expand.h @@ -28,8 +28,8 @@ namespace LAMMPS_NS { class BondFENEExpand : public Bond { public: BondFENEExpand(class LAMMPS *); - ~BondFENEExpand(); - void compute(int, int); + virtual ~BondFENEExpand(); + virtual void compute(int, int); void coeff(int, char **); void init_style(); double equilibrium_distance(int); @@ -37,7 +37,7 @@ class BondFENEExpand : public Bond { void read_restart(FILE *); double single(int, double, int, int); - private: + protected: double TWO_1_3; double *k,*r0,*epsilon,*sigma,*shift; diff --git a/src/MOLECULE/bond_harmonic.cpp b/src/MOLECULE/bond_harmonic.cpp index 9e4c2756a2..63af84bf98 100644 --- a/src/MOLECULE/bond_harmonic.cpp +++ b/src/MOLECULE/bond_harmonic.cpp @@ -118,7 +118,7 @@ void BondHarmonic::allocate() void BondHarmonic::coeff(int narg, char **arg) { - if (narg != 3) error->all("Incorrect args for bond coefficients"); + if (narg != 3) error->all(FLERR,"Incorrect args for bond coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -135,7 +135,7 @@ void BondHarmonic::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for bond coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/bond_harmonic.h b/src/MOLECULE/bond_harmonic.h index a4364cc8bb..87eefd6a0d 100644 --- a/src/MOLECULE/bond_harmonic.h +++ b/src/MOLECULE/bond_harmonic.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class BondHarmonic : public Bond { public: BondHarmonic(class LAMMPS *); - ~BondHarmonic(); - void compute(int, int); + virtual ~BondHarmonic(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_distance(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, double, int, int); - private: + protected: double *k,*r0; void allocate(); diff --git a/src/MOLECULE/bond_morse.cpp b/src/MOLECULE/bond_morse.cpp index cd3fe47c93..135c6f8df5 100644 --- a/src/MOLECULE/bond_morse.cpp +++ b/src/MOLECULE/bond_morse.cpp @@ -123,7 +123,7 @@ void BondMorse::allocate() void BondMorse::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for bond coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for bond coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -142,7 +142,7 @@ void BondMorse::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for bond coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/bond_morse.h b/src/MOLECULE/bond_morse.h index 34fbf265cc..1dcf3653e1 100644 --- a/src/MOLECULE/bond_morse.h +++ b/src/MOLECULE/bond_morse.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class BondMorse : public Bond { public: BondMorse(class LAMMPS *); - ~BondMorse(); - void compute(int, int); + virtual ~BondMorse(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_distance(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, double, int, int); - private: + protected: double *d0,*alpha,*r0; void allocate(); diff --git a/src/MOLECULE/bond_nonlinear.cpp b/src/MOLECULE/bond_nonlinear.cpp index a848cce902..1a31b4c4b1 100644 --- a/src/MOLECULE/bond_nonlinear.cpp +++ b/src/MOLECULE/bond_nonlinear.cpp @@ -120,7 +120,7 @@ void BondNonlinear::allocate() void BondNonlinear::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for bond coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for bond coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -139,7 +139,7 @@ void BondNonlinear::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for bond coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); } /* ---------------------------------------------------------------------- */ diff --git a/src/MOLECULE/bond_nonlinear.h b/src/MOLECULE/bond_nonlinear.h index 1390d25193..8d715e2e61 100644 --- a/src/MOLECULE/bond_nonlinear.h +++ b/src/MOLECULE/bond_nonlinear.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class BondNonlinear : public Bond { public: BondNonlinear(class LAMMPS *); - ~BondNonlinear(); - void compute(int, int); + virtual ~BondNonlinear(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_distance(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, double, int, int); - private: + protected: double *epsilon,*r0,*lamda; void allocate(); diff --git a/src/MOLECULE/bond_quartic.cpp b/src/MOLECULE/bond_quartic.cpp index f9e5bd8600..c8fc882d57 100755 --- a/src/MOLECULE/bond_quartic.cpp +++ b/src/MOLECULE/bond_quartic.cpp @@ -200,7 +200,7 @@ void BondQuartic::allocate() void BondQuartic::coeff(int narg, char **arg) { - if (narg != 6) error->all("Incorrect args for bond coefficients"); + if (narg != 6) error->all(FLERR,"Incorrect args for bond coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -223,7 +223,7 @@ void BondQuartic::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for bond coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); } /* ---------------------------------------------------------------------- @@ -233,19 +233,19 @@ void BondQuartic::coeff(int narg, char **arg) void BondQuartic::init_style() { if (force->pair == NULL || force->pair->single_enable == 0) - error->all("Pair style does not support bond_style quartic"); + error->all(FLERR,"Pair style does not support bond_style quartic"); if (force->angle) - error->all("Bond style quartic cannot be used with 3,4-body interactions"); + error->all(FLERR,"Bond style quartic cannot be used with 3,4-body interactions"); if (force->dihedral) - error->all("Bond style quartic cannot be used with 3,4-body interactions"); + error->all(FLERR,"Bond style quartic cannot be used with 3,4-body interactions"); if (force->improper) - error->all("Bond style quartic cannot be used with 3,4-body interactions"); + error->all(FLERR,"Bond style quartic cannot be used with 3,4-body interactions"); // special bonds must be 1 1 1 if (force->special_lj[1] != 1.0 || force->special_lj[2] != 1.0 || force->special_lj[3] != 1.0) - error->all("Bond style quartic requires special_bonds = 1,1,1"); + error->all(FLERR,"Bond style quartic requires special_bonds = 1,1,1"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/bond_quartic.h b/src/MOLECULE/bond_quartic.h index 67ae294dec..628d2c237b 100644 --- a/src/MOLECULE/bond_quartic.h +++ b/src/MOLECULE/bond_quartic.h @@ -28,8 +28,8 @@ namespace LAMMPS_NS { class BondQuartic : public Bond { public: BondQuartic(class LAMMPS *); - ~BondQuartic(); - void compute(int, int); + virtual ~BondQuartic(); + virtual void compute(int, int); void coeff(int, char **); void init_style(); double equilibrium_distance(int); @@ -37,7 +37,7 @@ class BondQuartic : public Bond { void read_restart(FILE *); double single(int, double, int, int); - private: + protected: double TWO_1_3; double *k,*b1,*b2,*rc,*u0; diff --git a/src/MOLECULE/bond_table.cpp b/src/MOLECULE/bond_table.cpp index 1e6abb88a8..04743097e6 100644 --- a/src/MOLECULE/bond_table.cpp +++ b/src/MOLECULE/bond_table.cpp @@ -33,9 +33,6 @@ enum{LINEAR,SPLINE}; #define MAXLINE 1024 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ BondTable::BondTable(LAMMPS *lmp) : Bond(lmp) @@ -135,14 +132,14 @@ void BondTable::allocate() void BondTable::settings(int narg, char **arg) { - if (narg != 2) error->all("Illegal bond_style command"); + if (narg != 2) error->all(FLERR,"Illegal bond_style command"); if (strcmp(arg[0],"linear") == 0) tabstyle = LINEAR; else if (strcmp(arg[0],"spline") == 0) tabstyle = SPLINE; - else error->all("Unknown table style in bond style table"); + else error->all(FLERR,"Unknown table style in bond style table"); tablength = force->inumeric(arg[1]); - if (tablength < 2) error->all("Illegal number of bond table entries"); + if (tablength < 2) error->all(FLERR,"Illegal number of bond table entries"); // delete old tables, since cannot just change settings @@ -165,7 +162,7 @@ void BondTable::settings(int narg, char **arg) void BondTable::coeff(int narg, char **arg) { - if (narg != 3) error->all("Illegal bond_coeff command"); + if (narg != 3) error->all(FLERR,"Illegal bond_coeff command"); if (!allocated) allocate(); int ilo,ihi; @@ -182,11 +179,11 @@ void BondTable::coeff(int narg, char **arg) // error check on table parameters - if (tb->ninput <= 1) error->one("Invalid bond table length"); + if (tb->ninput <= 1) error->one(FLERR,"Invalid bond table length"); tb->lo = tb->rfile[0]; tb->hi = tb->rfile[tb->ninput-1]; - if (tb->lo >= tb->hi) error->all("Bond table values are not increasing"); + if (tb->lo >= tb->hi) error->all(FLERR,"Bond table values are not increasing"); // spline read-in and compute r,e,f vectors within table @@ -204,7 +201,7 @@ void BondTable::coeff(int narg, char **arg) } ntables++; - if (count == 0) error->all("Illegal bond_coeff command"); + if (count == 0) error->all(FLERR,"Illegal bond_coeff command"); } /* ---------------------------------------------------------------------- @@ -296,14 +293,14 @@ void BondTable::read_table(Table *tb, char *file, char *keyword) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open file %s",file); - error->one(str); + error->one(FLERR,str); } // loop until section found with matching keyword while (1) { if (fgets(line,MAXLINE,fp) == NULL) - error->one("Did not find keyword in table file"); + error->one(FLERR,"Did not find keyword in table file"); if (strspn(line," \t\n") == strlen(line)) continue; // blank line if (line[0] == '#') continue; // comment if (strstr(line,keyword) == line) break; // matching keyword @@ -433,12 +430,12 @@ void BondTable::param_extract(Table *tb, char *line) word = strtok(NULL," \t\n\r\f"); tb->r0 = atof(word); } else { - error->one("Invalid keyword in bond table parameters"); + error->one(FLERR,"Invalid keyword in bond table parameters"); } word = strtok(NULL," \t\n\r\f"); } - if (tb->ninput == 0) error->one("Bond table parameters did not set N"); + if (tb->ninput == 0) error->one(FLERR,"Bond table parameters did not set N"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/bond_table.h b/src/MOLECULE/bond_table.h index f0d289f055..810693262f 100644 --- a/src/MOLECULE/bond_table.h +++ b/src/MOLECULE/bond_table.h @@ -28,8 +28,8 @@ namespace LAMMPS_NS { class BondTable : public Bond { public: BondTable(class LAMMPS *); - ~BondTable(); - void compute(int, int); + virtual ~BondTable(); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double equilibrium_distance(int); @@ -37,7 +37,7 @@ class BondTable : public Bond { void read_restart(FILE *); double single(int, double, int, int); - private: + protected: int tabstyle,tablength; double *r0; diff --git a/src/MOLECULE/dihedral_charmm.cpp b/src/MOLECULE/dihedral_charmm.cpp index 5d29cab633..c762a56ad5 100644 --- a/src/MOLECULE/dihedral_charmm.cpp +++ b/src/MOLECULE/dihedral_charmm.cpp @@ -27,10 +27,12 @@ #include "force.h" #include "pair.h" #include "update.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define TOLERANCE 0.05 @@ -151,7 +153,7 @@ void DihedralCharmm::compute(int eflag, int vflag) sprintf(str,"Dihedral problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -324,7 +326,7 @@ void DihedralCharmm::allocate() void DihedralCharmm::coeff(int narg, char **arg) { - if (narg != 5) error->all("Incorrect args for dihedral coefficients"); + if (narg != 5) error->all(FLERR,"Incorrect args for dihedral coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -340,25 +342,23 @@ void DihedralCharmm::coeff(int narg, char **arg) double weight_one = force->numeric(arg[4]); if (multiplicity_one < 0) - error->all("Incorrect multiplicity arg for dihedral coefficients"); + error->all(FLERR,"Incorrect multiplicity arg for dihedral coefficients"); if (weight_one < 0.0 || weight_one > 1.0) - error->all("Incorrect weight arg for dihedral coefficients"); + error->all(FLERR,"Incorrect weight arg for dihedral coefficients"); - double PI = 4.0*atan(1.0); - int count = 0; for (int i = ilo; i <= ihi; i++) { k[i] = k_one; shift[i] = shift_one; - cos_shift[i] = cos(PI*shift_one/180.0); - sin_shift[i] = sin(PI*shift_one/180.0); + cos_shift[i] = cos(MY_PI*shift_one/180.0); + sin_shift[i] = sin(MY_PI*shift_one/180.0); multiplicity[i] = multiplicity_one; weight[i] = weight_one; setflag[i] = 1; count++; } - if (count == 0) error->all("Incorrect args for dihedral coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for dihedral coefficients"); } /* ---------------------------------------------------------------------- @@ -377,14 +377,14 @@ void DihedralCharmm::init_style() if (weightflag) { int itmp; if (force->pair == NULL) - error->all("Dihedral charmm is incompatible with Pair style"); + error->all(FLERR,"Dihedral charmm is incompatible with Pair style"); lj14_1 = (double **) force->pair->extract("lj14_1",itmp); lj14_2 = (double **) force->pair->extract("lj14_2",itmp); lj14_3 = (double **) force->pair->extract("lj14_3",itmp); lj14_4 = (double **) force->pair->extract("lj14_4",itmp); int *ptr = (int *) force->pair->extract("implicit",itmp); if (!lj14_1 || !lj14_2 || !lj14_3 || !lj14_4 || !ptr) - error->all("Dihedral charmm is incompatible with Pair style"); + error->all(FLERR,"Dihedral charmm is incompatible with Pair style"); implicit = *ptr; } } @@ -420,10 +420,9 @@ void DihedralCharmm::read_restart(FILE *fp) MPI_Bcast(&shift[1],atom->ndihedraltypes,MPI_INT,0,world); MPI_Bcast(&weight[1],atom->ndihedraltypes,MPI_DOUBLE,0,world); - double PI = 4.0*atan(1.0); for (int i = 1; i <= atom->ndihedraltypes; i++) { setflag[i] = 1; - cos_shift[i] = cos(PI*shift[i]/180.0); - sin_shift[i] = sin(PI*shift[i]/180.0); + cos_shift[i] = cos(MY_PI*shift[i]/180.0); + sin_shift[i] = sin(MY_PI*shift[i]/180.0); } } diff --git a/src/MOLECULE/dihedral_charmm.h b/src/MOLECULE/dihedral_charmm.h index f999ec2c22..f00a6e1a6d 100644 --- a/src/MOLECULE/dihedral_charmm.h +++ b/src/MOLECULE/dihedral_charmm.h @@ -28,14 +28,14 @@ namespace LAMMPS_NS { class DihedralCharmm : public Dihedral { public: DihedralCharmm(class LAMMPS *); - ~DihedralCharmm(); - void compute(int, int); + virtual ~DihedralCharmm(); + virtual void compute(int, int); void coeff(int, char **); void init_style(); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: double *k,*weight,*cos_shift,*sin_shift; int *multiplicity,*shift; double **lj14_1,**lj14_2,**lj14_3,**lj14_4; diff --git a/src/MOLECULE/dihedral_harmonic.cpp b/src/MOLECULE/dihedral_harmonic.cpp index cefd57d42e..b88584d16a 100644 --- a/src/MOLECULE/dihedral_harmonic.cpp +++ b/src/MOLECULE/dihedral_harmonic.cpp @@ -141,7 +141,7 @@ void DihedralHarmonic::compute(int eflag, int vflag) sprintf(str,"Dihedral problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -272,7 +272,7 @@ void DihedralHarmonic::allocate() void DihedralHarmonic::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for dihedral coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for dihedral coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -287,9 +287,9 @@ void DihedralHarmonic::coeff(int narg, char **arg) // backwards compatibility and is probably not needed if (sign_one != -1 && sign_one != 1) - error->all("Incorrect sign arg for dihedral coefficients"); + error->all(FLERR,"Incorrect sign arg for dihedral coefficients"); if (multiplicity_one < 0) - error->all("Incorrect multiplicity arg for dihedral coefficients"); + error->all(FLERR,"Incorrect multiplicity arg for dihedral coefficients"); int count = 0; for (int i = ilo; i <= ihi; i++) { @@ -307,7 +307,7 @@ void DihedralHarmonic::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for dihedral coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for dihedral coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/dihedral_harmonic.h b/src/MOLECULE/dihedral_harmonic.h index 959159d475..1645cf5017 100644 --- a/src/MOLECULE/dihedral_harmonic.h +++ b/src/MOLECULE/dihedral_harmonic.h @@ -28,13 +28,13 @@ namespace LAMMPS_NS { class DihedralHarmonic : public Dihedral { public: DihedralHarmonic(class LAMMPS *); - ~DihedralHarmonic(); - void compute(int, int); + virtual ~DihedralHarmonic(); + virtual void compute(int, int); void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: double *k,*cos_shift,*sin_shift; int *sign,*multiplicity; diff --git a/src/MOLECULE/dihedral_helix.cpp b/src/MOLECULE/dihedral_helix.cpp index 639520e8a8..ee93d2a08d 100644 --- a/src/MOLECULE/dihedral_helix.cpp +++ b/src/MOLECULE/dihedral_helix.cpp @@ -27,13 +27,12 @@ #include "comm.h" #include "force.h" #include "update.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) +using namespace MathConst; #define TOLERANCE 0.05 #define SMALL 0.001 @@ -173,7 +172,7 @@ void DihedralHelix::compute(int eflag, int vflag) sprintf(str,"Dihedral problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -195,9 +194,9 @@ void DihedralHelix::compute(int eflag, int vflag) siinv = 1.0/si; p = aphi[type]*(1.0 - c) + bphi[type]*(1.0 + cos(3.0*phi)) + - cphi[type]*(1.0 + cos(phi + 0.25*PI)); + cphi[type]*(1.0 + cos(phi + MY_PI4)); pd = -aphi[type] + 3.0*bphi[type]*sin(3.0*phi)*siinv + - cphi[type]*sin(phi + 0.25*PI)*siinv; + cphi[type]*sin(phi + MY_PI4)*siinv; if (eflag) edihedral = p; @@ -284,7 +283,7 @@ void DihedralHelix::allocate() void DihedralHelix::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for dihedral coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for dihedral coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -303,7 +302,7 @@ void DihedralHelix::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for dihedral coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for dihedral coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/dihedral_helix.h b/src/MOLECULE/dihedral_helix.h index f0bfabf1d8..a6a4261dae 100644 --- a/src/MOLECULE/dihedral_helix.h +++ b/src/MOLECULE/dihedral_helix.h @@ -28,13 +28,13 @@ namespace LAMMPS_NS { class DihedralHelix : public Dihedral { public: DihedralHelix(class LAMMPS *); - ~DihedralHelix(); - void compute(int, int); + virtual ~DihedralHelix(); + virtual void compute(int, int); void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: double *aphi,*bphi,*cphi; void allocate(); diff --git a/src/MOLECULE/dihedral_hybrid.cpp b/src/MOLECULE/dihedral_hybrid.cpp index 2d17ea028a..131762be28 100644 --- a/src/MOLECULE/dihedral_hybrid.cpp +++ b/src/MOLECULE/dihedral_hybrid.cpp @@ -165,16 +165,19 @@ void DihedralHybrid::settings(int narg, char **arg) styles = new Dihedral*[nstyles]; keywords = new char*[nstyles]; + int dummy; + for (int m = 0; m < nstyles; m++) { for (int i = 0; i < m; i++) if (strcmp(arg[m],arg[i]) == 0) - error->all("Dihedral style hybrid cannot use " + error->all(FLERR,"Dihedral style hybrid cannot use " "same dihedral style twice"); if (strcmp(arg[m],"hybrid") == 0) - error->all("Dihedral style hybrid cannot have hybrid as an argument"); + error->all(FLERR, + "Dihedral style hybrid cannot have hybrid as an argument"); if (strcmp(arg[m],"none") == 0) - error->all("Dihedral style hybrid cannot have none as an argument"); - styles[m] = force->new_dihedral(arg[m]); + error->all(FLERR,"Dihedral style hybrid cannot have none as an argument"); + styles[m] = force->new_dihedral(arg[m],lmp->suffix,dummy); keywords[m] = new char[strlen(arg[m])+1]; strcpy(keywords[m],arg[m]); } @@ -203,7 +206,7 @@ void DihedralHybrid::coeff(int narg, char **arg) if (m == nstyles) { if (strcmp(arg[1],"none") == 0) none = 1; else if (strcmp(arg[1],"skip") == 0) none = skip = 1; - else error->all("Dihedral coeff for hybrid has invalid style"); + else error->all(FLERR,"Dihedral coeff for hybrid has invalid style"); } // move 1st arg to 2nd arg @@ -269,14 +272,14 @@ void DihedralHybrid::read_restart(FILE *fp) allocate(); - int n; + int n,dummy; for (int m = 0; m < nstyles; m++) { if (me == 0) fread(&n,sizeof(int),1,fp); MPI_Bcast(&n,1,MPI_INT,0,world); keywords[m] = new char[n]; if (me == 0) fread(keywords[m],sizeof(char),n,fp); MPI_Bcast(keywords[m],n,MPI_CHAR,0,world); - styles[m] = force->new_dihedral(keywords[m]); + styles[m] = force->new_dihedral(keywords[m],lmp->suffix,dummy); } } diff --git a/src/MOLECULE/dihedral_multi_harmonic.cpp b/src/MOLECULE/dihedral_multi_harmonic.cpp index 291cea35e9..ea0fd5532e 100644 --- a/src/MOLECULE/dihedral_multi_harmonic.cpp +++ b/src/MOLECULE/dihedral_multi_harmonic.cpp @@ -30,9 +30,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define TOLERANCE 0.05 #define SMALL 0.001 @@ -166,7 +163,7 @@ void DihedralMultiHarmonic::compute(int eflag, int vflag) sprintf(str,"Dihedral problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -275,7 +272,7 @@ void DihedralMultiHarmonic::allocate() void DihedralMultiHarmonic::coeff(int narg, char **arg) { - if (narg != 6) error->all("Incorrect args for dihedral coefficients"); + if (narg != 6) error->all(FLERR,"Incorrect args for dihedral coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -298,7 +295,7 @@ void DihedralMultiHarmonic::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for dihedral coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for dihedral coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/dihedral_multi_harmonic.h b/src/MOLECULE/dihedral_multi_harmonic.h index 851eda9cf4..da4d46fe71 100644 --- a/src/MOLECULE/dihedral_multi_harmonic.h +++ b/src/MOLECULE/dihedral_multi_harmonic.h @@ -28,13 +28,13 @@ namespace LAMMPS_NS { class DihedralMultiHarmonic : public Dihedral { public: DihedralMultiHarmonic(class LAMMPS *); - ~DihedralMultiHarmonic(); - void compute(int, int); + virtual ~DihedralMultiHarmonic(); + virtual void compute(int, int); void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: double *a1,*a2,*a3,*a4,*a5; void allocate(); diff --git a/src/MOLECULE/dihedral_opls.cpp b/src/MOLECULE/dihedral_opls.cpp index 99bdd993ec..4f4fd75882 100644 --- a/src/MOLECULE/dihedral_opls.cpp +++ b/src/MOLECULE/dihedral_opls.cpp @@ -30,9 +30,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define TOLERANCE 0.05 #define SMALL 0.001 #define SMALLER 0.00001 @@ -172,7 +169,7 @@ void DihedralOPLS::compute(int eflag, int vflag) sprintf(str,"Dihedral problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -288,7 +285,7 @@ void DihedralOPLS::allocate() void DihedralOPLS::coeff(int narg, char **arg) { - if (narg != 5) error->all("Incorrect args for dihedral coefficients"); + if (narg != 5) error->all(FLERR,"Incorrect args for dihedral coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -311,7 +308,7 @@ void DihedralOPLS::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for dihedral coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for dihedral coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/dihedral_opls.h b/src/MOLECULE/dihedral_opls.h index ab3d5c1da0..772ae6e6b1 100644 --- a/src/MOLECULE/dihedral_opls.h +++ b/src/MOLECULE/dihedral_opls.h @@ -28,13 +28,13 @@ namespace LAMMPS_NS { class DihedralOPLS : public Dihedral { public: DihedralOPLS(class LAMMPS *); - ~DihedralOPLS(); - void compute(int, int); + virtual ~DihedralOPLS(); + virtual void compute(int, int); void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: double *k1,*k2,*k3,*k4; void allocate(); diff --git a/src/MOLECULE/improper_cvff.cpp b/src/MOLECULE/improper_cvff.cpp index 2ea0b97f56..401bcad85a 100644 --- a/src/MOLECULE/improper_cvff.cpp +++ b/src/MOLECULE/improper_cvff.cpp @@ -156,7 +156,7 @@ void ImproperCvff::compute(int eflag, int vflag) "Improper problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -295,7 +295,7 @@ void ImproperCvff::allocate() void ImproperCvff::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for improper coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for improper coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -314,7 +314,7 @@ void ImproperCvff::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for improper coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for improper coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/improper_cvff.h b/src/MOLECULE/improper_cvff.h index ccef917d3a..86de363a15 100644 --- a/src/MOLECULE/improper_cvff.h +++ b/src/MOLECULE/improper_cvff.h @@ -28,13 +28,13 @@ namespace LAMMPS_NS { class ImproperCvff : public Improper { public: ImproperCvff(class LAMMPS *); - ~ImproperCvff(); - void compute(int, int); + virtual ~ImproperCvff(); + virtual void compute(int, int); void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: double *k; int *sign,*multiplicity; diff --git a/src/MOLECULE/improper_harmonic.cpp b/src/MOLECULE/improper_harmonic.cpp index 7e7db4d03f..87d94079bd 100644 --- a/src/MOLECULE/improper_harmonic.cpp +++ b/src/MOLECULE/improper_harmonic.cpp @@ -22,10 +22,12 @@ #include "domain.h" #include "force.h" #include "update.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define TOLERANCE 0.05 #define SMALL 0.001 @@ -127,7 +129,7 @@ void ImproperHarmonic::compute(int eflag, int vflag) "Improper problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -234,7 +236,7 @@ void ImproperHarmonic::allocate() void ImproperHarmonic::coeff(int narg, char **arg) { - if (narg != 3) error->all("Incorrect args for improper coefficients"); + if (narg != 3) error->all(FLERR,"Incorrect args for improper coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -248,12 +250,12 @@ void ImproperHarmonic::coeff(int narg, char **arg) int count = 0; for (int i = ilo; i <= ihi; i++) { k[i] = k_one; - chi[i] = chi_one/180.0 * PI; + chi[i] = chi_one/180.0 * MY_PI; setflag[i] = 1; count++; } - if (count == 0) error->all("Incorrect args for improper coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for improper coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/improper_harmonic.h b/src/MOLECULE/improper_harmonic.h index a14e222d60..b3d5ef81f6 100644 --- a/src/MOLECULE/improper_harmonic.h +++ b/src/MOLECULE/improper_harmonic.h @@ -28,13 +28,13 @@ namespace LAMMPS_NS { class ImproperHarmonic : public Improper { public: ImproperHarmonic(class LAMMPS *); - ~ImproperHarmonic(); - void compute(int, int); + virtual ~ImproperHarmonic(); + virtual void compute(int, int); void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: double *k,*chi; void allocate(); diff --git a/src/MOLECULE/improper_hybrid.cpp b/src/MOLECULE/improper_hybrid.cpp index 767c12b936..898b3cd350 100644 --- a/src/MOLECULE/improper_hybrid.cpp +++ b/src/MOLECULE/improper_hybrid.cpp @@ -165,15 +165,19 @@ void ImproperHybrid::settings(int narg, char **arg) styles = new Improper*[nstyles]; keywords = new char*[nstyles]; + int dummy; + for (int m = 0; m < nstyles; m++) { for (int i = 0; i < m; i++) if (strcmp(arg[m],arg[i]) == 0) - error->all("Improper style hybrid cannot use same improper style twice"); + error->all(FLERR, + "Improper style hybrid cannot use same improper style twice"); if (strcmp(arg[m],"hybrid") == 0) - error->all("Improper style hybrid cannot have hybrid as an argument"); + error->all(FLERR, + "Improper style hybrid cannot have hybrid as an argument"); if (strcmp(arg[m],"none") == 0) - error->all("Improper style hybrid cannot have none as an argument"); - styles[m] = force->new_improper(arg[m]); + error->all(FLERR,"Improper style hybrid cannot have none as an argument"); + styles[m] = force->new_improper(arg[m],lmp->suffix,dummy); keywords[m] = new char[strlen(arg[m])+1]; strcpy(keywords[m],arg[m]); } @@ -200,7 +204,7 @@ void ImproperHybrid::coeff(int narg, char **arg) int none = 0; if (m == nstyles) { if (strcmp(arg[1],"none") == 0) none = 1; - else error->all("Improper coeff for hybrid has invalid style"); + else error->all(FLERR,"Improper coeff for hybrid has invalid style"); } // move 1st arg to 2nd arg @@ -256,14 +260,14 @@ void ImproperHybrid::read_restart(FILE *fp) allocate(); - int n; + int n,dummy; for (int m = 0; m < nstyles; m++) { if (me == 0) fread(&n,sizeof(int),1,fp); MPI_Bcast(&n,1,MPI_INT,0,world); keywords[m] = new char[n]; if (me == 0) fread(keywords[m],sizeof(char),n,fp); MPI_Bcast(keywords[m],n,MPI_CHAR,0,world); - styles[m] = force->new_improper(keywords[m]); + styles[m] = force->new_improper(keywords[m],lmp->suffix,dummy); } } diff --git a/src/MOLECULE/improper_umbrella.cpp b/src/MOLECULE/improper_umbrella.cpp index 97cc1f65ad..97a127b318 100644 --- a/src/MOLECULE/improper_umbrella.cpp +++ b/src/MOLECULE/improper_umbrella.cpp @@ -25,10 +25,12 @@ #include "domain.h" #include "force.h" #include "update.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define TOLERANCE 0.05 #define SMALL 0.001 @@ -133,7 +135,7 @@ void ImproperUmbrella::compute(int eflag, int vflag) "Improper problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -255,7 +257,7 @@ void ImproperUmbrella::allocate() void ImproperUmbrella::coeff(int narg, char **arg) { - if (narg != 3) error->all("Incorrect args for improper coefficients"); + if (narg != 3) error->all(FLERR,"Incorrect args for improper coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -269,14 +271,14 @@ void ImproperUmbrella::coeff(int narg, char **arg) int count = 0; for (int i = ilo; i <= ihi; i++) { kw[i] = k_one; - w0[i] = w_one/180.0 * PI; + w0[i] = w_one/180.0 * MY_PI; if (w_one == 0) C[i] = 1.0; else C[i] = kw[i]/(pow(sin(w0[i]),2)); setflag[i] = 1; count++; } - if (count == 0) error->all("Incorrect args for improper coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for improper coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/improper_umbrella.h b/src/MOLECULE/improper_umbrella.h index cef7583743..483979826e 100644 --- a/src/MOLECULE/improper_umbrella.h +++ b/src/MOLECULE/improper_umbrella.h @@ -28,13 +28,13 @@ namespace LAMMPS_NS { class ImproperUmbrella : public Improper { public: ImproperUmbrella(class LAMMPS *); - ~ImproperUmbrella(); - void compute(int, int); + virtual ~ImproperUmbrella(); + virtual void compute(int, int); void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: double *kw, *w0, *C; void allocate(); diff --git a/src/MOLECULE/pair_hbond_dreiding_lj.cpp b/src/MOLECULE/pair_hbond_dreiding_lj.cpp index 243e837219..3ad2c4e351 100644 --- a/src/MOLECULE/pair_hbond_dreiding_lj.cpp +++ b/src/MOLECULE/pair_hbond_dreiding_lj.cpp @@ -26,14 +26,13 @@ #include "neighbor.h" #include "neigh_request.h" #include "neigh_list.h" +#include "domain.h" +#include "math_const.h" #include "memory.h" #include "error.h" -#include "domain.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; #define SMALL 0.001 #define CHUNK 8 @@ -46,8 +45,7 @@ PairHbondDreidingLJ::PairHbondDreidingLJ(LAMMPS *lmp) : Pair(lmp) // due to using map() to find bonded H atoms which are not near donor atom no_virial_fdotr_compute = 1; - - PI = 4.0*atan(1.0); + restartinfo = 0; nparams = maxparam = 0; params = NULL; @@ -79,7 +77,7 @@ void PairHbondDreidingLJ::compute(int eflag, int vflag) { int i,j,k,m,ii,jj,kk,inum,jnum,knum,itype,jtype,ktype; double delx,dely,delz,rsq,rsq1,rsq2,r1,r2; - double factor_hb,force_angle,force_kernel,evdwl,eng_lj; + double factor_hb,force_angle,force_kernel,evdwl,eng_lj,ehbond; double c,s,a,b,ac,a11,a12,a22,vx1,vx2,vy1,vy2,vz1,vz2; double fi[3],fj[3],delr1[3],delr2[3]; double r2inv,r10inv; @@ -87,7 +85,7 @@ void PairHbondDreidingLJ::compute(int eflag, int vflag) int *ilist,*jlist,*klist,*numneigh,**firstneigh; Param *pm; - evdwl = 0.0; + evdwl = ehbond = 0.0; if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; @@ -162,7 +160,7 @@ void PairHbondDreidingLJ::compute(int eflag, int vflag) if (c < -1.0) c = -1.0; ac = acos(c); - if (ac > pm->cut_angle && ac < (2.0*PI - pm->cut_angle)) { + if (ac > pm->cut_angle && ac < (2.0*MY_PI - pm->cut_angle)) { s = sqrt(1.0 - c*c); if (s < SMALL) s = SMALL; @@ -189,6 +187,7 @@ void PairHbondDreidingLJ::compute(int eflag, int vflag) if (eflag) { evdwl = eng_lj * pow(c,pm->ap); evdwl *= factor_hb; + ehbond += evdwl; } a = factor_hb*force_angle/s; @@ -237,7 +236,7 @@ void PairHbondDreidingLJ::compute(int eflag, int vflag) if (eflag_global) { pvector[0] = hbcount; - pvector[1] = evdwl; + pvector[1] = ehbond; } } @@ -276,12 +275,12 @@ void PairHbondDreidingLJ::allocate() void PairHbondDreidingLJ::settings(int narg, char **arg) { - if (narg != 4) error->all("Illegal pair_style command"); + if (narg != 4) error->all(FLERR,"Illegal pair_style command"); ap_global = force->inumeric(arg[0]); cut_inner_global = force->numeric(arg[1]); cut_outer_global = force->numeric(arg[2]); - cut_angle_global = force->numeric(arg[3]) * PI/180.0; + cut_angle_global = force->numeric(arg[3]) * MY_PI/180.0; } /* ---------------------------------------------------------------------- @@ -291,7 +290,7 @@ void PairHbondDreidingLJ::settings(int narg, char **arg) void PairHbondDreidingLJ::coeff(int narg, char **arg) { if (narg < 6 || narg > 9) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi,klo,khi; @@ -302,7 +301,7 @@ void PairHbondDreidingLJ::coeff(int narg, char **arg) int donor_flag; if (strcmp(arg[3],"i") == 0) donor_flag = 0; else if (strcmp(arg[3],"j") == 0) donor_flag = 1; - else error->all("Incorrect args for pair coefficients"); + else error->all(FLERR,"Incorrect args for pair coefficients"); double epsilon_one = force->numeric(arg[4]); double sigma_one = force->numeric(arg[5]); @@ -316,9 +315,9 @@ void PairHbondDreidingLJ::coeff(int narg, char **arg) cut_outer_one = force->numeric(arg[8]); } if (cut_inner_one>cut_outer_one) - error->all("Pair inner cutoff >= Pair outer cutoff"); + error->all(FLERR,"Pair inner cutoff >= Pair outer cutoff"); double cut_angle_one = cut_angle_global; - if (narg == 10) cut_angle_one = force->numeric(arg[9]) * PI/180.0; + if (narg == 10) cut_angle_one = force->numeric(arg[9]) * MY_PI/180.0; // grow params array if necessary if (nparams == maxparam) { @@ -352,7 +351,7 @@ void PairHbondDreidingLJ::coeff(int narg, char **arg) } nparams++; - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -367,14 +366,14 @@ void PairHbondDreidingLJ::init_style() // and computing forces on A,H which may be on different procs if (atom->molecular == 0) - error->all("Pair style hbond/dreiding requires molecular system"); + error->all(FLERR,"Pair style hbond/dreiding requires molecular system"); if (atom->tag_enable == 0) - error->all("Pair style hbond/dreiding requires atom IDs"); + error->all(FLERR,"Pair style hbond/dreiding requires atom IDs"); if (atom->map_style == 0) - error->all("Pair style hbond/dreiding requires an atom map, " + error->all(FLERR,"Pair style hbond/dreiding requires an atom map, " "see atom_modify"); if (force->newton_pair == 0) - error->all("Pair style hbond/dreiding requires newton pair on"); + error->all(FLERR,"Pair style hbond/dreiding requires newton pair on"); // set donor[M]/acceptor[M] if any atom of type M is a donor/acceptor @@ -390,7 +389,7 @@ void PairHbondDreidingLJ::init_style() acceptor[j] = 1; } - if (!anyflag) error->all("No pair hbond/dreiding coefficients set"); + if (!anyflag) error->all(FLERR,"No pair hbond/dreiding coefficients set"); // set additional param values // offset is for LJ only, angle term is not included @@ -502,7 +501,7 @@ double PairHbondDreidingLJ::single(int i, int j, int itype, int jtype, if (c < -1.0) c = -1.0; ac = acos(c); - if (ac < pm->cut_angle || ac > (2.0*PI - pm->cut_angle)) return 0.0; + if (ac < pm->cut_angle || ac > (2.0*MY_PI - pm->cut_angle)) return 0.0; s = sqrt(1.0 - c*c); if (s < SMALL) s = SMALL; diff --git a/src/MOLECULE/pair_hbond_dreiding_lj.h b/src/MOLECULE/pair_hbond_dreiding_lj.h index 387cd3f095..1304743b8d 100644 --- a/src/MOLECULE/pair_hbond_dreiding_lj.h +++ b/src/MOLECULE/pair_hbond_dreiding_lj.h @@ -38,7 +38,6 @@ class PairHbondDreidingLJ : public Pair { protected: double cut_inner_global,cut_outer_global,cut_angle_global; int ap_global; - double PI; struct Param { double epsilon,sigma; diff --git a/src/MOLECULE/pair_hbond_dreiding_morse.cpp b/src/MOLECULE/pair_hbond_dreiding_morse.cpp index 62f75f0a18..e7f9c1e7c5 100644 --- a/src/MOLECULE/pair_hbond_dreiding_morse.cpp +++ b/src/MOLECULE/pair_hbond_dreiding_morse.cpp @@ -26,14 +26,13 @@ #include "neighbor.h" #include "neigh_request.h" #include "neigh_list.h" +#include "domain.h" +#include "math_const.h" #include "memory.h" #include "error.h" -#include "domain.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; #define SMALL 0.001 #define CHUNK 8 @@ -49,14 +48,14 @@ void PairHbondDreidingMorse::compute(int eflag, int vflag) { int i,j,k,m,ii,jj,kk,inum,jnum,knum,itype,jtype,ktype; double delx,dely,delz,rsq,rsq1,rsq2,r1,r2; - double factor_hb,force_angle,force_kernel,evdwl; + double factor_hb,force_angle,force_kernel,evdwl,ehbond; double c,s,a,b,ac,a11,a12,a22,vx1,vx2,vy1,vy2,vz1,vz2; double fi[3],fj[3],delr1[3],delr2[3]; double r,dr,dexp,eng_morse,switch1,switch2; int *ilist,*jlist,*klist,*numneigh,**firstneigh; Param *pm; - evdwl = 0.0; + evdwl = ehbond = 0.0; if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; @@ -131,7 +130,7 @@ void PairHbondDreidingMorse::compute(int eflag, int vflag) if (c < -1.0) c = -1.0; ac = acos(c); - if (ac > pm->cut_angle && ac < (2.0*PI - pm->cut_angle)) { + if (ac > pm->cut_angle && ac < (2.0*MY_PI - pm->cut_angle)) { s = sqrt(1.0 - c*c); if (s < SMALL) s = SMALL; @@ -157,6 +156,7 @@ void PairHbondDreidingMorse::compute(int eflag, int vflag) if (eflag) { evdwl = eng_morse * pow(c,params[m].ap); evdwl *= factor_hb; + ehbond += evdwl; } a = factor_hb*force_angle/s; @@ -205,7 +205,7 @@ void PairHbondDreidingMorse::compute(int eflag, int vflag) if (eflag_global) { pvector[0] = hbcount; - pvector[1] = evdwl; + pvector[1] = ehbond; } } @@ -216,7 +216,7 @@ void PairHbondDreidingMorse::compute(int eflag, int vflag) void PairHbondDreidingMorse::coeff(int narg, char **arg) { if (narg < 8 || narg > 11) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi,klo,khi; @@ -227,7 +227,7 @@ void PairHbondDreidingMorse::coeff(int narg, char **arg) int donor_flag; if (strcmp(arg[3],"i") == 0) donor_flag = 0; else if (strcmp(arg[3],"j") == 0) donor_flag = 1; - else error->all("Incorrect args for pair coefficients"); + else error->all(FLERR,"Incorrect args for pair coefficients"); double d0_one = force->numeric(arg[4]); double alpha_one = force->numeric(arg[5]); @@ -242,9 +242,9 @@ void PairHbondDreidingMorse::coeff(int narg, char **arg) cut_outer_one = force->numeric(arg[9]); } if (cut_inner_one>cut_outer_one) - error->all("Pair inner cutoff >= Pair outer cutoff"); + error->all(FLERR,"Pair inner cutoff >= Pair outer cutoff"); double cut_angle_one = cut_angle_global; - if (narg > 10) cut_angle_one = force->numeric(arg[10]) * PI/180.0; + if (narg > 10) cut_angle_one = force->numeric(arg[10]) * MY_PI/180.0; // grow params array if necessary @@ -280,7 +280,7 @@ void PairHbondDreidingMorse::coeff(int narg, char **arg) } nparams++; - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -295,14 +295,14 @@ void PairHbondDreidingMorse::init_style() // and computing forces on A,H which may be on different procs if (atom->molecular == 0) - error->all("Pair style hbond/dreiding requires molecular system"); + error->all(FLERR,"Pair style hbond/dreiding requires molecular system"); if (atom->tag_enable == 0) - error->all("Pair style hbond/dreiding requires atom IDs"); + error->all(FLERR,"Pair style hbond/dreiding requires atom IDs"); if (atom->map_style == 0) - error->all("Pair style hbond/dreiding requires an atom map, " + error->all(FLERR,"Pair style hbond/dreiding requires an atom map, " "see atom_modify"); if (force->newton_pair == 0) - error->all("Pair style hbond/dreiding requires newton pair on"); + error->all(FLERR,"Pair style hbond/dreiding requires newton pair on"); // set donor[M]/acceptor[M] if any atom of type M is a donor/acceptor @@ -318,7 +318,7 @@ void PairHbondDreidingMorse::init_style() acceptor[j] = 1; } - if (!anyflag) error->all("No pair hbond/dreiding coefficients set"); + if (!anyflag) error->all(FLERR,"No pair hbond/dreiding coefficients set"); // set additional param values // offset is for Morse only, angle term is not included @@ -406,7 +406,7 @@ double PairHbondDreidingMorse::single(int i, int j, int itype, int jtype, if (c < -1.0) c = -1.0; ac = acos(c); - if (ac < pm->cut_angle || ac > (2.0*PI - pm->cut_angle)) return 0.0; + if (ac < pm->cut_angle || ac > (2.0*MY_PI - pm->cut_angle)) return 0.0; s = sqrt(1.0 - c*c); if (s < SMALL) s = SMALL; diff --git a/src/MOLECULE/pair_hbond_dreiding_morse.h b/src/MOLECULE/pair_hbond_dreiding_morse.h index d6fa5cb353..05eabb2e16 100644 --- a/src/MOLECULE/pair_hbond_dreiding_morse.h +++ b/src/MOLECULE/pair_hbond_dreiding_morse.h @@ -27,8 +27,8 @@ namespace LAMMPS_NS { class PairHbondDreidingMorse : public PairHbondDreidingLJ { public: PairHbondDreidingMorse(class LAMMPS *); - ~PairHbondDreidingMorse() {} - void compute(int, int); + virtual ~PairHbondDreidingMorse() {}; + virtual void compute(int, int); void coeff(int, char **); void init_style(); double single(int, int, int, int, double, double, double, double &); diff --git a/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp b/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp index 3552f9e18b..875f4c95a2 100644 --- a/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp +++ b/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp @@ -32,9 +32,6 @@ using namespace LAMMPS_NS; enum{GEOMETRIC,ARITHMETIC,SIXTHPOWER}; // same as in pair.cpp -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJCharmmCoulCharmm::PairLJCharmmCoulCharmm(LAMMPS *lmp) : Pair(lmp) @@ -227,7 +224,7 @@ void PairLJCharmmCoulCharmm::allocate() void PairLJCharmmCoulCharmm::settings(int narg, char **arg) { if (narg != 2 && narg != 4) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); cut_lj_inner = force->numeric(arg[0]); cut_lj = force->numeric(arg[1]); @@ -247,7 +244,7 @@ void PairLJCharmmCoulCharmm::settings(int narg, char **arg) void PairLJCharmmCoulCharmm::coeff(int narg, char **arg) { if (narg != 4 && narg != 6) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -275,7 +272,7 @@ void PairLJCharmmCoulCharmm::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -285,14 +282,14 @@ void PairLJCharmmCoulCharmm::coeff(int narg, char **arg) void PairLJCharmmCoulCharmm::init_style() { if (!atom->q_flag) - error->all("Pair style lj/charmm/coul/charmm requires atom attribute q"); + error->all(FLERR,"Pair style lj/charmm/coul/charmm requires atom attribute q"); neighbor->request(this); // require cut_lj_inner < cut_lj, cut_coul_inner < cut_coul if (cut_lj_inner >= cut_lj || cut_coul_inner >= cut_coul) - error->all("Pair inner cutoff >= Pair outer cutoff"); + error->all(FLERR,"Pair inner cutoff >= Pair outer cutoff"); cut_lj_innersq = cut_lj_inner * cut_lj_inner; cut_ljsq = cut_lj * cut_lj; diff --git a/src/MOLECULE/pair_lj_charmm_coul_charmm_implicit.h b/src/MOLECULE/pair_lj_charmm_coul_charmm_implicit.h index 0b95f8fcdd..c5882a7495 100644 --- a/src/MOLECULE/pair_lj_charmm_coul_charmm_implicit.h +++ b/src/MOLECULE/pair_lj_charmm_coul_charmm_implicit.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class PairLJCharmmCoulCharmmImplicit : public PairLJCharmmCoulCharmm { public: PairLJCharmmCoulCharmmImplicit(class LAMMPS *); - void compute(int, int); + virtual void compute(int, int); double single(int, int, int, int, double, double, double, double &); }; diff --git a/src/Make.sh b/src/Make.sh index f2feb8f101..94c8af8b50 100644 --- a/src/Make.sh +++ b/src/Make.sh @@ -4,6 +4,8 @@ # sh Make.sh Makefile.list # function to create one style_*.h file +# must whack *.d files that depend on style_*.h file, +# else Make will not recreate them style () { list=`grep -l $1 $2*.h` @@ -20,9 +22,11 @@ style () { elif (test ! -e style_$3.h) then mv style_$3.tmp style_$3.h rm -f Obj_*/$4.d + rm -f Obj_*/lammps.d elif (test "`diff --brief style_$3.h style_$3.tmp`" != "") then mv style_$3.tmp style_$3.h rm -f Obj_*/$4.d + rm -f Obj_*/lammps.d else rm -f style_$3.tmp fi diff --git a/src/Makefile b/src/Makefile index 3bc766272f..c0a9df822a 100755 --- a/src/Makefile +++ b/src/Makefile @@ -13,12 +13,12 @@ OBJ = $(SRC:.cpp=.o) # Package variables -PACKAGE = asphere class2 colloid dipole dsmc gpu granular \ - kspace manybody meam molecule opt peri poems reax replica \ +PACKAGE = asphere class2 colloid dipole gpu granular \ + kspace manybody mc meam molecule opt peri poems reax replica \ shock srd xtc PACKUSER = user-misc user-atc user-awpmd user-cg-cmm \ - user-cuda user-eff user-ewaldn user-reaxc + user-cuda user-eff user-ewaldn user-omp user-reaxc user-sph PACKALL = $(PACKAGE) $(PACKUSER) @@ -67,11 +67,14 @@ help: @$(SHELL) Make.sh style @cp -p *.cpp *.h Obj_$@ @cp MAKE/Makefile.$@ Obj_$@/Makefile - @if [ ! -e Makefile.package ]; then make package-regenerate; fi - @if [ ! -e Makefile.package.settings ]; then make package-regenerate; fi + @if [ ! -e Makefile.package ]; \ + then cp Makefile.package.empty Makefile.package; fi + @if [ ! -e Makefile.package.settings ]; \ + then cp Makefile.package.settings.empty Makefile.package.settings; fi @cp Makefile.package Makefile.package.settings Obj_$@ @cd Obj_$@; \ - $(MAKE) $(MFLAGS) "OBJ = $(OBJ)" "INC = $(INC)" "EXE = ../$(EXE)" ../$(EXE) + $(MAKE) $(MFLAGS) "OBJ = $(OBJ)" "INC = $(INC)" \ + "EXE = ../$(EXE)" ../$(EXE) @if [ -d Obj_$@ ]; then cd Obj_$@; rm -f $(SRC) $(INC) Makefile*; fi # Remove machine-specific object files @@ -153,6 +156,10 @@ no-user: @for p in $(PACKUSER); do $(MAKE) no-$$p; done yes-%: + @if [ ! -e Makefile.package ]; \ + then cp Makefile.package.empty Makefile.package; fi + @if [ ! -e Makefile.package.settings ]; \ + then cp Makefile.package.settings.empty Makefile.package.settings; fi @if [ ! -e $(YESDIR) ]; then \ echo "Package $(@:yes-%=%) does not exist"; \ else \ @@ -171,7 +178,6 @@ no-%: # status = list src files that differ from package files # update = replace src files with newer package files # overwrite = overwrite package files with newer src files -# regenerate = regenerate Makefile.package from Makefile.package.empty # diff = show differences between src and package files package-status: @@ -189,12 +195,6 @@ package-overwrite: @echo '' @for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p overwrite; done -package-regenerate: - @cp Makefile.package.empty Makefile.package - @cp Makefile.package.settings.empty Makefile.package.settings - @for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p regenerate; done - @for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p regenerate; done - package-diff: @for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p diff; done @echo '' diff --git a/src/Makefile.lib b/src/Makefile.lib index 79e4d56936..10051e1c20 100644 --- a/src/Makefile.lib +++ b/src/Makefile.lib @@ -29,7 +29,11 @@ clean: @if [ ! -d Obj_$@ ]; then mkdir Obj_$@; fi @cp -p $(SRC) $(INC) Obj_$@ @cp MAKE/Makefile.$@ Obj_$@/Makefile - @cp Makefile.package Obj_$@ + @if [ ! -e Makefile.package ]; \ + then cp Makefile.package.empty Makefile.package; fi + @if [ ! -e Makefile.package.settings ]; \ + then cp Makefile.package.settings.empty Makefile.package.settings; fi + @cp Makefile.package Makefile.package.settings Obj_$@ @cd Obj_$@; \ $(MAKE) $(MFLAGS) "OBJ = $(OBJ)" "INC = $(INC)" "EXE = ../$(EXE)" lib @if [ -d Obj_$@ ]; then cd Obj_$@; rm -f $(SRC) $(INC) Makefile*; fi diff --git a/src/Makefile.list b/src/Makefile.list index fe4b0a96c8..5f755f6ecd 100644 --- a/src/Makefile.list +++ b/src/Makefile.list @@ -29,7 +29,11 @@ clean: @if [ ! -d Obj_$@ ]; then mkdir Obj_$@; fi @cp -p $(SRC) $(INC) Obj_$@ @cp MAKE/Makefile.$@ Obj_$@/Makefile - @cp Makefile.package Obj_$@ + @if [ ! -e Makefile.package ]; \ + then cp Makefile.package.empty Makefile.package; fi + @if [ ! -e Makefile.package.settings ]; \ + then cp Makefile.package.settings.empty Makefile.package.settings; fi + @cp Makefile.package Makefile.package.settings Obj_$@ @cd Obj_$@; \ $(MAKE) $(MFLAGS) "OBJ = $(OBJ)" "INC = $(INC)" "EXE = ../$(EXE)" ../$(EXE) @if [ -d Obj_$@ ]; then cd Obj_$@; rm -f $(SRC) $(INC) Makefile*; fi diff --git a/src/OPT/Install.sh b/src/OPT/Install.sh index c3a413fa8c..a4005e74ea 100644 --- a/src/OPT/Install.sh +++ b/src/OPT/Install.sh @@ -15,6 +15,10 @@ if (test $1 = 1) then if (test -e ../pair_lj_charmm_coul_long.cpp) then cp pair_lj_charmm_coul_long_opt.cpp .. cp pair_lj_charmm_coul_long_opt.h .. + cp pair_lj_cut_coul_long_opt.cpp .. + cp pair_lj_cut_coul_long_opt.h .. + cp pair_lj_cut_coul_long_tip4p_opt.cpp .. + cp pair_lj_cut_coul_long_tip4p_opt.h .. fi cp pair_lj_cut_opt.cpp .. @@ -29,6 +33,8 @@ elif (test $1 = 0) then rm -f ../pair_eam_alloy_opt.cpp rm -f ../pair_eam_fs_opt.cpp rm -f ../pair_lj_charmm_coul_long_opt.cpp + rm -f ../pair_lj_cut_coul_long_opt.cpp + rm -f ../pair_lj_cut_coul_long_tip4p_opt.cpp rm -f ../pair_lj_cut_opt.cpp rm -f ../pair_morse_opt.cpp @@ -36,6 +42,8 @@ elif (test $1 = 0) then rm -f ../pair_eam_alloy_opt.h rm -f ../pair_eam_fs_opt.h rm -f ../pair_lj_charmm_coul_long_opt.h + rm -f ../pair_lj_cut_coul_long_opt.h + rm -f ../pair_lj_cut_coul_long_tip4p_opt.h rm -f ../pair_lj_cut_opt.h rm -f ../pair_morse_opt.h diff --git a/src/OPT/Package.sh b/src/OPT/Package.sh index a822239950..a1714684fc 100644 --- a/src/OPT/Package.sh +++ b/src/OPT/Package.sh @@ -27,6 +27,18 @@ for file in *.cpp *.h; do if (test $file = pair_lj_charmm_coul_long_opt.h -a ! -e ../pair_lj_charmm_coul_long.cpp) then continue fi + if (test $file = pair_lj_cut_coul_long_opt.cpp -a ! -e ../pair_lj_cut_coul_long.cpp) then + continue + fi + if (test $file = pair_lj_cut_coul_long_opt.h -a ! -e ../pair_lj_cut_coul_long.cpp) then + continue + fi + if (test $file = pair_lj_cut_coul_long_tip4p_opt.cpp -a ! -e ../pair_lj_cut_coul_long_tip4p.cpp) then + continue + fi + if (test $file = pair_lj_cut_coul_long_tip4p_opt.h -a ! -e ../pair_lj_cut_coul_long_tip4p.cpp) then + continue + fi if (test ! -e ../$file) then echo " creating src/$file" diff --git a/src/OPT/pair_eam_alloy_opt.cpp b/src/OPT/pair_eam_alloy_opt.cpp index 8bf4acfe04..0deaf8b430 100644 --- a/src/OPT/pair_eam_alloy_opt.cpp +++ b/src/OPT/pair_eam_alloy_opt.cpp @@ -11,6 +11,14 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing authors: + James Fischer, High Performance Technologies, Inc. + Charles Cornwell, High Performance Technologies, Inc. + David Richie, Stone Ridge Technology + Vincent Natoli, Stone Ridge Technology +------------------------------------------------------------------------- */ + #include "pair_eam_alloy_opt.h" using namespace LAMMPS_NS; @@ -18,6 +26,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- multiple inheritance from two parent classes invoke constructor of grandparent class, then of each parent + inherit optimized compute() from PairEAMOpt + inherit everything else from PairEAMAlloy ------------------------------------------------------------------------- */ PairEAMAlloyOpt::PairEAMAlloyOpt(LAMMPS *lmp) : diff --git a/src/OPT/pair_eam_alloy_opt.h b/src/OPT/pair_eam_alloy_opt.h index 507fa44376..5435f00fa4 100644 --- a/src/OPT/pair_eam_alloy_opt.h +++ b/src/OPT/pair_eam_alloy_opt.h @@ -25,10 +25,6 @@ PairStyle(eam/alloy/opt,PairEAMAlloyOpt) namespace LAMMPS_NS { -// multiple inheritance from two parent classes -// optimized compute() from PairEAMOpt -// everything else from PairEAMAlloy - class PairEAMAlloyOpt : public PairEAMAlloy, public PairEAMOpt { public: PairEAMAlloyOpt(class LAMMPS *); diff --git a/src/OPT/pair_eam_fs_opt.cpp b/src/OPT/pair_eam_fs_opt.cpp index 11e8b222d6..a097eec2b6 100644 --- a/src/OPT/pair_eam_fs_opt.cpp +++ b/src/OPT/pair_eam_fs_opt.cpp @@ -11,6 +11,14 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing authors: + James Fischer, High Performance Technologies, Inc. + Charles Cornwell, High Performance Technologies, Inc. + David Richie, Stone Ridge Technology + Vincent Natoli, Stone Ridge Technology +------------------------------------------------------------------------- */ + #include "pair_eam_fs_opt.h" using namespace LAMMPS_NS; @@ -18,6 +26,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- multiple inheritance from two parent classes invoke constructor of grandparent class, then of each parent + inherit optimized compute() from PairEAMOpt + inherit everything else from PairEAMFS ------------------------------------------------------------------------- */ PairEAMFSOpt::PairEAMFSOpt(LAMMPS *lmp) : diff --git a/src/OPT/pair_eam_fs_opt.h b/src/OPT/pair_eam_fs_opt.h index 519630880a..b5bfdad4bf 100644 --- a/src/OPT/pair_eam_fs_opt.h +++ b/src/OPT/pair_eam_fs_opt.h @@ -25,10 +25,6 @@ PairStyle(eam/fs/opt,PairEAMFSOpt) namespace LAMMPS_NS { -// multiple inheritance from two parent classes -// optimized compute() from PairEAMOpt -// everything else from PairEAMFS - class PairEAMFSOpt : public PairEAMFS, public PairEAMOpt { public: PairEAMFSOpt(class LAMMPS *); @@ -37,5 +33,4 @@ class PairEAMFSOpt : public PairEAMFS, public PairEAMOpt { } #endif - #endif diff --git a/src/OPT/pair_eam_opt.cpp b/src/OPT/pair_eam_opt.cpp index 43c2d3733e..616234b69b 100644 --- a/src/OPT/pair_eam_opt.cpp +++ b/src/OPT/pair_eam_opt.cpp @@ -19,7 +19,14 @@ Vincent Natoli, Stone Ridge Technology ------------------------------------------------------------------------- */ +#include "math.h" +#include "stdlib.h" #include "pair_eam_opt.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neigh_list.h" +#include "memory.h" using namespace LAMMPS_NS; @@ -47,3 +54,295 @@ void PairEAMOpt::compute(int eflag, int vflag) else return eval<0,0,0>(); } } + +/* ---------------------------------------------------------------------- */ + +template < int EVFLAG, int EFLAG, int NEWTON_PAIR > +void PairEAMOpt::eval() +{ + typedef struct { double x,y,z; } vec3_t; + + typedef struct { + double rhor0i,rhor1i,rhor2i,rhor3i; + double rhor0j,rhor1j,rhor2j,rhor3j; + } fast_alpha_t; + + typedef struct { + double frho0,frho1,frho2,frho3,frho4,frho5,frho6; + double _pad[1]; + } fast_beta_t; + + typedef struct { + double rhor4i,rhor5i,rhor6i; + double rhor4j,rhor5j,rhor6j; + double z2r0,z2r1,z2r2,z2r3,z2r4,z2r5,z2r6; + double _pad[3]; + } fast_gamma_t; + + int i,j,ii,jj,inum,jnum,itype,jtype; + double evdwl = 0.0; + double* __restrict__ coeff; + + // grow energy array if necessary + + if (atom->nmax > nmax) { + memory->sfree(rho); + memory->sfree(fp); + nmax = atom->nmax; + rho = (double *) memory->smalloc(nmax*sizeof(double),"pair:rho"); + fp = (double *) memory->smalloc(nmax*sizeof(double),"pair:fp"); + } + + double** __restrict__ x = atom->x; + double** __restrict__ f = atom->f; + int* __restrict__ type = atom->type; + int nlocal = atom->nlocal; + + vec3_t* __restrict__ xx = (vec3_t*)x[0]; + vec3_t* __restrict__ ff = (vec3_t*)f[0]; + + double tmp_cutforcesq = cutforcesq; + double tmp_rdr = rdr; + int nr2 = nr-2; + int nr1 = nr-1; + + inum = list->inum; + int* __restrict__ ilist = list->ilist; + int** __restrict__ firstneigh = list->firstneigh; + int* __restrict__ numneigh = list->numneigh; + + int ntypes = atom->ntypes; + int ntypes2 = ntypes*ntypes; + + fast_alpha_t* __restrict__ fast_alpha = + (fast_alpha_t*) malloc(ntypes2*(nr+1)*sizeof(fast_alpha_t)); + for (i = 0; i < ntypes; i++) for (j = 0; j < ntypes; j++) { + fast_alpha_t* __restrict__ tab = &fast_alpha[i*ntypes*nr+j*nr]; + if (type2rhor[i+1][j+1] >= 0) { + for(int m = 1; m <= nr; m++) { + tab[m].rhor0i = rhor_spline[type2rhor[i+1][j+1]][m][6]; + tab[m].rhor1i = rhor_spline[type2rhor[i+1][j+1]][m][5]; + tab[m].rhor2i = rhor_spline[type2rhor[i+1][j+1]][m][4]; + tab[m].rhor3i = rhor_spline[type2rhor[i+1][j+1]][m][3]; + } + } + if (type2rhor[j+1][i+1] >= 0) { + for(int m = 1; m <= nr; m++) { + tab[m].rhor0j = rhor_spline[type2rhor[j+1][i+1]][m][6]; + tab[m].rhor1j = rhor_spline[type2rhor[j+1][i+1]][m][5]; + tab[m].rhor2j = rhor_spline[type2rhor[j+1][i+1]][m][4]; + tab[m].rhor3j = rhor_spline[type2rhor[j+1][i+1]][m][3]; + } + } + } + fast_alpha_t* __restrict__ tabeight = fast_alpha; + + fast_gamma_t* __restrict__ fast_gamma = + (fast_gamma_t*) malloc(ntypes2*(nr+1)*sizeof(fast_gamma_t)); + for (i = 0; i < ntypes; i++) for (j = 0; j < ntypes; j++) { + fast_gamma_t* __restrict__ tab = &fast_gamma[i*ntypes*nr+j*nr]; + if (type2rhor[i+1][j+1] >= 0) { + for(int m = 1; m <= nr; m++) { + tab[m].rhor4i = rhor_spline[type2rhor[i+1][j+1]][m][2]; + tab[m].rhor5i = rhor_spline[type2rhor[i+1][j+1]][m][1]; + tab[m].rhor6i = rhor_spline[type2rhor[i+1][j+1]][m][0]; + } + } + if (type2rhor[j+1][i+1] >= 0) { + for(int m = 1; m <= nr; m++) { + tab[m].rhor4j = rhor_spline[type2rhor[j+1][i+1]][m][2]; + tab[m].rhor5j = rhor_spline[type2rhor[j+1][i+1]][m][1]; + tab[m].rhor6j = rhor_spline[type2rhor[j+1][i+1]][m][0]; + tab[m].z2r6 = z2r_spline[type2z2r[i+1][j+1]][m][0]; + } + } + if (type2z2r[i+1][j+1] >= 0) { + for(int m = 1; m <= nr; m++) { + tab[m].z2r0 = z2r_spline[type2z2r[i+1][j+1]][m][6]; + tab[m].z2r1 = z2r_spline[type2z2r[i+1][j+1]][m][5]; + tab[m].z2r2 = z2r_spline[type2z2r[i+1][j+1]][m][4]; + tab[m].z2r3 = z2r_spline[type2z2r[i+1][j+1]][m][3]; + tab[m].z2r4 = z2r_spline[type2z2r[i+1][j+1]][m][2]; + tab[m].z2r5 = z2r_spline[type2z2r[i+1][j+1]][m][1]; + tab[m].z2r6 = z2r_spline[type2z2r[i+1][j+1]][m][0]; + } + } + } + fast_gamma_t* __restrict__ tabss = fast_gamma; + + // zero out density + + if (NEWTON_PAIR) { + int m = nlocal + atom->nghost; + for (i = 0; i < m; i++) rho[i] = 0.0; + } else for (i = 0; i < nlocal; i++) rho[i] = 0.0; + + // rho = density at each atom + // loop over neighbors of my atoms + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + double xtmp = xx[i].x; + double ytmp = xx[i].y; + double ztmp = xx[i].z; + itype = type[i] - 1; + int* __restrict__ jlist = firstneigh[i]; + jnum = numneigh[i]; + + double tmprho = rho[i]; + fast_alpha_t* __restrict__ tabeighti = &tabeight[itype*ntypes*nr]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + double delx = xtmp - xx[j].x; + double dely = ytmp - xx[j].y; + double delz = ztmp - xx[j].z; + double rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < tmp_cutforcesq) { + jtype = type[j] - 1; + + double p = sqrt(rsq)*tmp_rdr; + if ( (int)p <= nr2 ) { + int m = (int)p + 1; + p -= (double)((int)p); + fast_alpha_t& a = tabeighti[jtype*nr+m]; + tmprho += ((a.rhor3j*p+a.rhor2j)*p+a.rhor1j)*p+a.rhor0j; + if (NEWTON_PAIR || j < nlocal) { + rho[j] += ((a.rhor3i*p+a.rhor2i)*p+a.rhor1i)*p+a.rhor0i; + } + } else { + fast_alpha_t& a = tabeighti[jtype*nr+nr1]; + tmprho += a.rhor3j+a.rhor2j+a.rhor1j+a.rhor0j; + if (NEWTON_PAIR || j < nlocal) { + rho[j] += a.rhor3i+a.rhor2i+a.rhor1i+a.rhor0i; + } + } + } + } + rho[i] = tmprho; + } + + // communicate and sum densities + + if (NEWTON_PAIR) comm->reverse_comm_pair(this); + + // fp = derivative of embedding energy at each atom + // phi = embedding energy at each atom + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + double p = rho[i]*rdrho; + int m = MIN((int)p,nrho-2); + p -= (double)m; + ++m; + coeff = frho_spline[type2frho[type[i]]][m]; + fp[i] = (coeff[0]*p + coeff[1])*p + coeff[2]; + if (EFLAG) { + double phi = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + if (eflag_global) eng_vdwl += phi; + if (eflag_atom) eatom[i] += phi; + } + } + + // communicate derivative of embedding function + + comm->forward_comm_pair(this); + + // compute forces on each atom + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + double xtmp = xx[i].x; + double ytmp = xx[i].y; + double ztmp = xx[i].z; + int itype1 = type[i] - 1; + int* __restrict__ jlist = firstneigh[i]; + jnum = numneigh[i]; + + double tmpfx = 0.0; + double tmpfy = 0.0; + double tmpfz = 0.0; + + fast_gamma_t* __restrict__ tabssi = &tabss[itype1*ntypes*nr]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + double delx = xtmp - xx[j].x; + double dely = ytmp - xx[j].y; + double delz = ztmp - xx[j].z; + double rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < tmp_cutforcesq) { + jtype = type[j] - 1; + double r = sqrt(rsq); + double rhoip,rhojp,z2,z2p; + double p = r*tmp_rdr; + if ( (int)p <= nr2 ) { + int m = (int) p + 1; + p -= (double)((int) p); + + fast_gamma_t& a = tabssi[jtype*nr+m]; + rhoip = (a.rhor6i*p + a.rhor5i)*p + a.rhor4i; + rhojp = (a.rhor6j*p + a.rhor5j)*p + a.rhor4j; + z2 = ((a.z2r3*p + a.z2r2)*p + a.z2r1)*p + a.z2r0; + z2p = (a.z2r6*p + a.z2r5)*p + a.z2r4; + + } else { + + fast_gamma_t& a = tabssi[jtype*nr+nr1]; + rhoip = a.rhor6i + a.rhor5i + a.rhor4i; + rhojp = a.rhor6j + a.rhor5j + a.rhor4j; + z2 = a.z2r3 + a.z2r2 + a.z2r1 + a.z2r0; + z2p = a.z2r6 + a.z2r5 + a.z2r4; + } + + // rhoip = derivative of (density at atom j due to atom i) + // rhojp = derivative of (density at atom i due to atom j) + // phi = pair potential energy + // phip = phi' + // z2 = phi * r + // z2p = (phi * r)' = (phi' r) + phi + // psip needs both fp[i] and fp[j] terms since r_ij appears in two + // terms of embed eng: Fi(sum rho_ij) and Fj(sum rho_ji) + // hence embed' = Fi(sum rho_ij) rhojp + Fj(sum rho_ji) rhoip + + double recip = 1.0/r; + double phi = z2*recip; + double phip = z2p*recip - phi*recip; + double psip = fp[i]*rhojp + fp[j]*rhoip + phip; + double fpair = -psip*recip; + + tmpfx += delx*fpair; + tmpfy += dely*fpair; + tmpfz += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + ff[j].x -= delx*fpair; + ff[j].y -= dely*fpair; + ff[j].z -= delz*fpair; + } + + if (EFLAG) evdwl = phi; + + if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz); + } + } + + ff[i].x += tmpfx; + ff[i].y += tmpfy; + ff[i].z += tmpfz; + } + + free(fast_alpha); fast_alpha = 0; + free(fast_gamma); fast_gamma = 0; + + if (vflag_fdotr) virial_fdotr_compute(); +} diff --git a/src/OPT/pair_eam_opt.h b/src/OPT/pair_eam_opt.h index c2d302e882..afc7764da9 100644 --- a/src/OPT/pair_eam_opt.h +++ b/src/OPT/pair_eam_opt.h @@ -11,14 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -/* ---------------------------------------------------------------------- - Contributing authors: - James Fischer, High Performance Technologies, Inc. - Charles Cornwell, High Performance Technologies, Inc. - David Richie, Stone Ridge Technology - Vincent Natol, Stone Ridge Technology -------------------------------------------------------------------------- */ - #ifdef PAIR_CLASS PairStyle(eam/opt,PairEAMOpt) @@ -28,17 +20,7 @@ PairStyle(eam/opt,PairEAMOpt) #ifndef LMP_PAIR_EAM_OPT_H #define LMP_PAIR_EAM_OPT_H -#include "math.h" -#include "stdlib.h" #include "pair_eam.h" -#include "atom.h" -#include "comm.h" -#include "force.h" -#include "neigh_list.h" -#include "memory.h" - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) namespace LAMMPS_NS { @@ -54,296 +36,6 @@ class PairEAMOpt : virtual public PairEAM { template < int EVFLAG, int EFLAG, int NEWTON_PAIR > void eval(); }; -template < int EVFLAG, int EFLAG, int NEWTON_PAIR > -void PairEAMOpt::eval() -{ - typedef struct { double x,y,z; } vec3_t; - - typedef struct { - double rhor0i,rhor1i,rhor2i,rhor3i; - double rhor0j,rhor1j,rhor2j,rhor3j; - } fast_alpha_t; - - typedef struct { - double frho0,frho1,frho2,frho3,frho4,frho5,frho6; - double _pad[1]; - } fast_beta_t; - - typedef struct { - double rhor4i,rhor5i,rhor6i; - double rhor4j,rhor5j,rhor6j; - double z2r0,z2r1,z2r2,z2r3,z2r4,z2r5,z2r6; - double _pad[3]; - } fast_gamma_t; - - int i,j,ii,jj,inum,jnum,itype,jtype; - double evdwl = 0.0; - double* __restrict__ coeff; - - // grow energy array if necessary - - if (atom->nmax > nmax) { - memory->sfree(rho); - memory->sfree(fp); - nmax = atom->nmax; - rho = (double *) memory->smalloc(nmax*sizeof(double),"pair:rho"); - fp = (double *) memory->smalloc(nmax*sizeof(double),"pair:fp"); - } - - double** __restrict__ x = atom->x; - double** __restrict__ f = atom->f; - int* __restrict__ type = atom->type; - int nlocal = atom->nlocal; - - vec3_t* __restrict__ xx = (vec3_t*)x[0]; - vec3_t* __restrict__ ff = (vec3_t*)f[0]; - - double tmp_cutforcesq = cutforcesq; - double tmp_rdr = rdr; - int nr2 = nr-2; - int nr1 = nr-1; - - inum = list->inum; - int* __restrict__ ilist = list->ilist; - int** __restrict__ firstneigh = list->firstneigh; - int* __restrict__ numneigh = list->numneigh; - - int ntypes = atom->ntypes; - int ntypes2 = ntypes*ntypes; - - fast_alpha_t* __restrict__ fast_alpha = - (fast_alpha_t*) malloc(ntypes2*(nr+1)*sizeof(fast_alpha_t)); - for (i = 0; i < ntypes; i++) for (j = 0; j < ntypes; j++) { - fast_alpha_t* __restrict__ tab = &fast_alpha[i*ntypes*nr+j*nr]; - if (type2rhor[i+1][j+1] >= 0) { - for(int m = 1; m <= nr; m++) { - tab[m].rhor0i = rhor_spline[type2rhor[i+1][j+1]][m][6]; - tab[m].rhor1i = rhor_spline[type2rhor[i+1][j+1]][m][5]; - tab[m].rhor2i = rhor_spline[type2rhor[i+1][j+1]][m][4]; - tab[m].rhor3i = rhor_spline[type2rhor[i+1][j+1]][m][3]; - } - } - if (type2rhor[j+1][i+1] >= 0) { - for(int m = 1; m <= nr; m++) { - tab[m].rhor0j = rhor_spline[type2rhor[j+1][i+1]][m][6]; - tab[m].rhor1j = rhor_spline[type2rhor[j+1][i+1]][m][5]; - tab[m].rhor2j = rhor_spline[type2rhor[j+1][i+1]][m][4]; - tab[m].rhor3j = rhor_spline[type2rhor[j+1][i+1]][m][3]; - } - } - } - fast_alpha_t* __restrict__ tabeight = fast_alpha; - - fast_gamma_t* __restrict__ fast_gamma = - (fast_gamma_t*) malloc(ntypes2*(nr+1)*sizeof(fast_gamma_t)); - for (i = 0; i < ntypes; i++) for (j = 0; j < ntypes; j++) { - fast_gamma_t* __restrict__ tab = &fast_gamma[i*ntypes*nr+j*nr]; - if (type2rhor[i+1][j+1] >= 0) { - for(int m = 1; m <= nr; m++) { - tab[m].rhor4i = rhor_spline[type2rhor[i+1][j+1]][m][2]; - tab[m].rhor5i = rhor_spline[type2rhor[i+1][j+1]][m][1]; - tab[m].rhor6i = rhor_spline[type2rhor[i+1][j+1]][m][0]; - } - } - if (type2rhor[j+1][i+1] >= 0) { - for(int m = 1; m <= nr; m++) { - tab[m].rhor4j = rhor_spline[type2rhor[j+1][i+1]][m][2]; - tab[m].rhor5j = rhor_spline[type2rhor[j+1][i+1]][m][1]; - tab[m].rhor6j = rhor_spline[type2rhor[j+1][i+1]][m][0]; - tab[m].z2r6 = z2r_spline[type2z2r[i+1][j+1]][m][0]; - } - } - if (type2z2r[i+1][j+1] >= 0) { - for(int m = 1; m <= nr; m++) { - tab[m].z2r0 = z2r_spline[type2z2r[i+1][j+1]][m][6]; - tab[m].z2r1 = z2r_spline[type2z2r[i+1][j+1]][m][5]; - tab[m].z2r2 = z2r_spline[type2z2r[i+1][j+1]][m][4]; - tab[m].z2r3 = z2r_spline[type2z2r[i+1][j+1]][m][3]; - tab[m].z2r4 = z2r_spline[type2z2r[i+1][j+1]][m][2]; - tab[m].z2r5 = z2r_spline[type2z2r[i+1][j+1]][m][1]; - tab[m].z2r6 = z2r_spline[type2z2r[i+1][j+1]][m][0]; - } - } - } - fast_gamma_t* __restrict__ tabss = fast_gamma; - - // zero out density - - if (NEWTON_PAIR) { - int m = nlocal + atom->nghost; - for (i = 0; i < m; i++) rho[i] = 0.0; - } else for (i = 0; i < nlocal; i++) rho[i] = 0.0; - - // rho = density at each atom - // loop over neighbors of my atoms - - // loop over neighbors of my atoms - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - double xtmp = xx[i].x; - double ytmp = xx[i].y; - double ztmp = xx[i].z; - itype = type[i] - 1; - int* __restrict__ jlist = firstneigh[i]; - jnum = numneigh[i]; - - double tmprho = rho[i]; - fast_alpha_t* __restrict__ tabeighti = &tabeight[itype*ntypes*nr]; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= NEIGHMASK; - - double delx = xtmp - xx[j].x; - double dely = ytmp - xx[j].y; - double delz = ztmp - xx[j].z; - double rsq = delx*delx + dely*dely + delz*delz; - - if (rsq < tmp_cutforcesq) { - jtype = type[j] - 1; - - double p = sqrt(rsq)*tmp_rdr; - if ( (int)p <= nr2 ) { - int m = (int)p + 1; - p -= (double)((int)p); - fast_alpha_t& a = tabeighti[jtype*nr+m]; - tmprho += ((a.rhor3j*p+a.rhor2j)*p+a.rhor1j)*p+a.rhor0j; - if (NEWTON_PAIR || j < nlocal) { - rho[j] += ((a.rhor3i*p+a.rhor2i)*p+a.rhor1i)*p+a.rhor0i; - } - } else { - fast_alpha_t& a = tabeighti[jtype*nr+nr1]; - tmprho += a.rhor3j+a.rhor2j+a.rhor1j+a.rhor0j; - if (NEWTON_PAIR || j < nlocal) { - rho[j] += a.rhor3i+a.rhor2i+a.rhor1i+a.rhor0i; - } - } - } - } - rho[i] = tmprho; - } - - // communicate and sum densities - - if (NEWTON_PAIR) comm->reverse_comm_pair(this); - - // fp = derivative of embedding energy at each atom - // phi = embedding energy at each atom - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - double p = rho[i]*rdrho; - int m = MIN((int)p,nrho-2); - p -= (double)m; - ++m; - coeff = frho_spline[type2frho[type[i]]][m]; - fp[i] = (coeff[0]*p + coeff[1])*p + coeff[2]; - if (EFLAG) { - double phi = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; - if (eflag_global) eng_vdwl += phi; - if (eflag_atom) eatom[i] += phi; - } - } - - // communicate derivative of embedding function - - comm->forward_comm_pair(this); - - // compute forces on each atom - // loop over neighbors of my atoms - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - double xtmp = xx[i].x; - double ytmp = xx[i].y; - double ztmp = xx[i].z; - int itype1 = type[i] - 1; - int* __restrict__ jlist = firstneigh[i]; - jnum = numneigh[i]; - - double tmpfx = 0.0; - double tmpfy = 0.0; - double tmpfz = 0.0; - - fast_gamma_t* __restrict__ tabssi = &tabss[itype1*ntypes*nr]; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= NEIGHMASK; - - double delx = xtmp - xx[j].x; - double dely = ytmp - xx[j].y; - double delz = ztmp - xx[j].z; - double rsq = delx*delx + dely*dely + delz*delz; - - if (rsq < tmp_cutforcesq) { - jtype = type[j] - 1; - double r = sqrt(rsq); - double rhoip,rhojp,z2,z2p; - double p = r*tmp_rdr; - if ( (int)p <= nr2 ) { - int m = (int) p + 1; - p -= (double)((int) p); - - fast_gamma_t& a = tabssi[jtype*nr+m]; - rhoip = (a.rhor6i*p + a.rhor5i)*p + a.rhor4i; - rhojp = (a.rhor6j*p + a.rhor5j)*p + a.rhor4j; - z2 = ((a.z2r3*p + a.z2r2)*p + a.z2r1)*p + a.z2r0; - z2p = (a.z2r6*p + a.z2r5)*p + a.z2r4; - - } else { - - fast_gamma_t& a = tabssi[jtype*nr+nr1]; - rhoip = a.rhor6i + a.rhor5i + a.rhor4i; - rhojp = a.rhor6j + a.rhor5j + a.rhor4j; - z2 = a.z2r3 + a.z2r2 + a.z2r1 + a.z2r0; - z2p = a.z2r6 + a.z2r5 + a.z2r4; - } - - // rhoip = derivative of (density at atom j due to atom i) - // rhojp = derivative of (density at atom i due to atom j) - // phi = pair potential energy - // phip = phi' - // z2 = phi * r - // z2p = (phi * r)' = (phi' r) + phi - // psip needs both fp[i] and fp[j] terms since r_ij appears in two - // terms of embed eng: Fi(sum rho_ij) and Fj(sum rho_ji) - // hence embed' = Fi(sum rho_ij) rhojp + Fj(sum rho_ji) rhoip - - double recip = 1.0/r; - double phi = z2*recip; - double phip = z2p*recip - phi*recip; - double psip = fp[i]*rhojp + fp[j]*rhoip + phip; - double fpair = -psip*recip; - - tmpfx += delx*fpair; - tmpfy += dely*fpair; - tmpfz += delz*fpair; - if (NEWTON_PAIR || j < nlocal) { - ff[j].x -= delx*fpair; - ff[j].y -= dely*fpair; - ff[j].z -= delz*fpair; - } - - if (EFLAG) evdwl = phi; - - if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, - evdwl,0.0,fpair,delx,dely,delz); - } - } - - ff[i].x += tmpfx; - ff[i].y += tmpfy; - ff[i].z += tmpfz; - } - - free(fast_alpha); fast_alpha = 0; - free(fast_gamma); fast_gamma = 0; - - if (vflag_fdotr) virial_fdotr_compute(); -} - } #endif diff --git a/src/OPT/pair_lj_charmm_coul_long_opt.cpp b/src/OPT/pair_lj_charmm_coul_long_opt.cpp index 173c201d12..49519d4761 100644 --- a/src/OPT/pair_lj_charmm_coul_long_opt.cpp +++ b/src/OPT/pair_lj_charmm_coul_long_opt.cpp @@ -18,10 +18,23 @@ Vincent Natoli, Stone Ridge Technology ------------------------------------------------------------------------- */ +#include "math.h" +#include "stdlib.h" #include "pair_lj_charmm_coul_long_opt.h" +#include "atom.h" +#include "force.h" +#include "neigh_list.h" using namespace LAMMPS_NS; +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define EWALD_A1 0.254829592 +#define EWALD_A2 -0.284496736 +#define EWALD_A3 1.421413741 +#define EWALD_A4 -1.453152027 +#define EWALD_A5 1.061405429 + /* ---------------------------------------------------------------------- */ PairLJCharmmCoulLongOpt::PairLJCharmmCoulLongOpt(LAMMPS *lmp) : @@ -47,3 +60,281 @@ void PairLJCharmmCoulLongOpt::compute(int eflag, int vflag) else return eval<0,0,0>(); } } + +/* ---------------------------------------------------------------------- */ + +template < int EVFLAG, int EFLAG, int NEWTON_PAIR > +void PairLJCharmmCoulLongOpt::eval() +{ + typedef struct { double x,y,z; } vec3_t; + + typedef struct { + double cutsq,lj1,lj2,lj3,lj4,offset; + double _pad[2]; + } fast_alpha_t; + + int i,j,ii,jj,inum,jnum,itype,jtype,itable,sbindex; + double fraction,table; + double r,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc; + double philj,switch1,switch2; + + double rsq; + + double evdwl = 0.0; + double ecoul = 0.0; + + double** __restrict__ x = atom->x; + double** __restrict__ f = atom->f; + double* __restrict__ q = atom->q; + int* __restrict__ type = atom->type; + int nlocal = atom->nlocal; + double* __restrict__ special_coul = force->special_coul; + double* __restrict__ special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + + inum = list->inum; + int* __restrict__ ilist = list->ilist; + int** __restrict__ firstneigh = list->firstneigh; + int* __restrict__ numneigh = list->numneigh; + + vec3_t* __restrict__ xx = (vec3_t*)x[0]; + vec3_t* __restrict__ ff = (vec3_t*)f[0]; + + int ntypes = atom->ntypes; + int ntypes2 = ntypes*ntypes; + + double tmp_coef1 = 1.0/denom_lj; + double tmp_coef2 = cut_ljsq - 3.0*cut_lj_innersq; + + fast_alpha_t* __restrict__ fast_alpha = + (fast_alpha_t*)malloc(ntypes2*sizeof(fast_alpha_t)); + for (i = 0; i < ntypes; i++) for (j = 0; j < ntypes; j++) { + fast_alpha_t& a = fast_alpha[i*ntypes+j]; + a.cutsq = cutsq[i+1][j+1]; + a.lj1 = lj1[i+1][j+1]; + a.lj2 = lj2[i+1][j+1]; + a.lj3 = lj3[i+1][j+1]; + a.lj4 = lj4[i+1][j+1]; + } + fast_alpha_t* __restrict__ tabsix = fast_alpha; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + double qtmp = q[i]; + double xtmp = xx[i].x; + double ytmp = xx[i].y; + double ztmp = xx[i].z; + itype = type[i] - 1; + int* __restrict__ jlist = firstneigh[i]; + jnum = numneigh[i]; + + double tmpfx = 0.0; + double tmpfy = 0.0; + double tmpfz = 0.0; + + fast_alpha_t* __restrict__ tabsixi = (fast_alpha_t*) &tabsix[itype*ntypes]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + sbindex = sbmask(j); + + if (sbindex == 0) { + double delx = xtmp - xx[j].x; + double dely = ytmp - xx[j].y; + double delz = ztmp - xx[j].z; + rsq = delx*delx + dely*dely + delz*delz; + double tmp_coef3 = qtmp*q[j]; + + if (rsq < cut_bothsq) { + r2inv = 1.0/rsq; + + forcecoul = 0.0; + 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 * + (EWALD_A1+t*(EWALD_A2+t*(EWALD_A3+t*(EWALD_A4+t*EWALD_A5)))) * + expm2; + prefactor = qqrd2e * tmp_coef3/r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + } 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 = tmp_coef3 * table; + } + } + + forcelj = 0.0; + if (rsq < cut_ljsq) { + r6inv = r2inv*r2inv*r2inv; + jtype = type[j] - 1; + fast_alpha_t& a = tabsixi[jtype]; + forcelj = r6inv * (a.lj1*r6inv - a.lj2); + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (tmp_coef2 + 2.0*rsq) * tmp_coef1; + switch2 = 12.0*rsq * (cut_ljsq-rsq) * + (rsq-cut_lj_innersq) * tmp_coef1; + philj = r6inv * (a.lj3*r6inv - a.lj4); + forcelj = forcelj*switch1 + philj*switch2; + } + } + + double fpair = (forcecoul + forcelj) * r2inv; + + tmpfx += delx*fpair; + tmpfy += dely*fpair; + tmpfz += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + ff[j].x -= delx*fpair; + ff[j].y -= dely*fpair; + ff[j].z -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = tmp_coef3 * table; + } + } else ecoul = 0.0; + + if (rsq < cut_ljsq) { + fast_alpha_t& a = tabsixi[jtype]; + evdwl = r6inv*(a.lj3*r6inv-a.lj4); + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (tmp_coef2 + 2.0*rsq) * tmp_coef1; + evdwl *= switch1; + } + } else evdwl = 0.0; + } + + if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,delx,dely,delz); + } + + } else { + factor_lj = special_lj[sbindex]; + factor_coul = special_coul[sbindex]; + j &= NEIGHMASK; + + double delx = xtmp - xx[j].x; + double dely = ytmp - xx[j].y; + double delz = ztmp - xx[j].z; + rsq = delx*delx + dely*dely + delz*delz; + double tmp_coef3 = qtmp*q[j]; + + if (rsq < cut_bothsq) { + r2inv = 1.0/rsq; + + forcecoul = 0.0; + 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 * + (EWALD_A1+t*(EWALD_A2+t*(EWALD_A3+t*(EWALD_A4+t*EWALD_A5)))) * + expm2; + prefactor = qqrd2e * tmp_coef3/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; + 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 = tmp_coef3 * table; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = tmp_coef3 * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } + + forcelj = 0.0; + if (rsq < cut_ljsq) { + r6inv = r2inv*r2inv*r2inv; + jtype = type[j] - 1; + fast_alpha_t& a = tabsixi[jtype]; + forcelj = r6inv * (a.lj1*r6inv - a.lj2); + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (tmp_coef2 + 2.0*rsq) * tmp_coef1; + switch2 = 12.0*rsq * (cut_ljsq-rsq) * + (rsq-cut_lj_innersq) * tmp_coef1; + fast_alpha_t& a = tabsixi[jtype]; + philj = r6inv * (a.lj3*r6inv - a.lj4); + forcelj = forcelj*switch1 + philj*switch2; + } + } + + double fpair = (forcecoul + factor_lj*forcelj) * r2inv; + + tmpfx += delx*fpair; + tmpfy += dely*fpair; + tmpfz += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + ff[j].x -= delx*fpair; + ff[j].y -= dely*fpair; + ff[j].z -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = tmp_coef3 * table; + } + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + + if (rsq < cut_ljsq) { + fast_alpha_t& a = tabsixi[jtype]; + evdwl = r6inv*(a.lj3*r6inv-a.lj4); + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (tmp_coef2 + 2.0*rsq) * tmp_coef1; + evdwl *= switch1; + } + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,delx,dely,delz); + } + } + } + + ff[i].x += tmpfx; + ff[i].y += tmpfy; + ff[i].z += tmpfz; + } + + free(fast_alpha); fast_alpha = 0; + + if (vflag_fdotr) virial_fdotr_compute(); +} + diff --git a/src/OPT/pair_lj_charmm_coul_long_opt.h b/src/OPT/pair_lj_charmm_coul_long_opt.h index c6616b0c0b..e2cc1af8ed 100644 --- a/src/OPT/pair_lj_charmm_coul_long_opt.h +++ b/src/OPT/pair_lj_charmm_coul_long_opt.h @@ -11,13 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -/* ---------------------------------------------------------------------- - Contributing authors: - James Fischer, High Performance Technologies, Inc. - David Richie, Stone Ridge Technology - Vincent Natol, Stone Ridge Technology -------------------------------------------------------------------------- */ - #ifdef PAIR_CLASS PairStyle(lj/charmm/coul/long/opt,PairLJCharmmCoulLongOpt) @@ -27,26 +20,10 @@ PairStyle(lj/charmm/coul/long/opt,PairLJCharmmCoulLongOpt) #ifndef LMP_PAIR_LJ_CHARMM_COUL_LONG_OPT_H #define LMP_PAIR_LJ_CHARMM_COUL_LONG_OPT_H -#include "math.h" -#include "stdlib.h" #include "pair_lj_charmm_coul_long.h" -#include "atom.h" -#include "force.h" -#include "neigh_list.h" namespace LAMMPS_NS { -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define EWALD_A1 0.254829592 -#define EWALD_A2 -0.284496736 -#define EWALD_A3 1.421413741 -#define EWALD_A4 -1.453152027 -#define EWALD_A5 1.061405429 - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - class PairLJCharmmCoulLongOpt : public PairLJCharmmCoulLong { public: PairLJCharmmCoulLongOpt(class LAMMPS *); @@ -55,292 +32,6 @@ class PairLJCharmmCoulLongOpt : public PairLJCharmmCoulLong { private: template < int EVFLAG, int EFLAG, int NEWTON_PAIR > void eval(); }; - -template < int EVFLAG, int EFLAG, int NEWTON_PAIR > -void PairLJCharmmCoulLongOpt::eval() -{ - typedef struct { double x,y,z; } vec3_t; - - typedef struct { - double cutsq,lj1,lj2,lj3,lj4,offset; - double _pad[2]; - } fast_alpha_t; - - int i,j,ii,jj,inum,jnum,itype,jtype,itable,sbindex; - double fraction,table; - double r,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; - double grij,expm2,prefactor,t,erfc; - double philj,switch1,switch2; - - double rsq; - - double evdwl = 0.0; - double ecoul = 0.0; - - double** __restrict__ x = atom->x; - double** __restrict__ f = atom->f; - double* __restrict__ q = atom->q; - int* __restrict__ type = atom->type; - int nlocal = atom->nlocal; - double* __restrict__ special_coul = force->special_coul; - double* __restrict__ special_lj = force->special_lj; - double qqrd2e = force->qqrd2e; - - inum = list->inum; - int* __restrict__ ilist = list->ilist; - int** __restrict__ firstneigh = list->firstneigh; - int* __restrict__ numneigh = list->numneigh; - - vec3_t* __restrict__ xx = (vec3_t*)x[0]; - vec3_t* __restrict__ ff = (vec3_t*)f[0]; - - int ntypes = atom->ntypes; - int ntypes2 = ntypes*ntypes; - - double tmp_coef1 = 1.0/denom_lj; - double tmp_coef2 = cut_ljsq - 3.0*cut_lj_innersq; - - fast_alpha_t* __restrict__ fast_alpha = - (fast_alpha_t*)malloc(ntypes2*sizeof(fast_alpha_t)); - for (i = 0; i < ntypes; i++) for (j = 0; j < ntypes; j++) { - fast_alpha_t& a = fast_alpha[i*ntypes+j]; - a.cutsq = cutsq[i+1][j+1]; - a.lj1 = lj1[i+1][j+1]; - a.lj2 = lj2[i+1][j+1]; - a.lj3 = lj3[i+1][j+1]; - a.lj4 = lj4[i+1][j+1]; - } - fast_alpha_t* __restrict__ tabsix = fast_alpha; - - // loop over neighbors of my atoms - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - double qtmp = q[i]; - double xtmp = xx[i].x; - double ytmp = xx[i].y; - double ztmp = xx[i].z; - itype = type[i] - 1; - int* __restrict__ jlist = firstneigh[i]; - jnum = numneigh[i]; - - double tmpfx = 0.0; - double tmpfy = 0.0; - double tmpfz = 0.0; - - fast_alpha_t* __restrict__ tabsixi = (fast_alpha_t*) &tabsix[itype*ntypes]; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - sbindex = sbmask(j); - - if (sbindex == 0) { - double delx = xtmp - xx[j].x; - double dely = ytmp - xx[j].y; - double delz = ztmp - xx[j].z; - rsq = delx*delx + dely*dely + delz*delz; - double tmp_coef3 = qtmp*q[j]; - - if (rsq < cut_bothsq) { - r2inv = 1.0/rsq; - - forcecoul = 0.0; - 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 * - (EWALD_A1+t*(EWALD_A2+t*(EWALD_A3+t*(EWALD_A4+t*EWALD_A5)))) * - expm2; - prefactor = qqrd2e * tmp_coef3/r; - forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); - } 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 = tmp_coef3 * table; - } - } - - forcelj = 0.0; - if (rsq < cut_ljsq) { - r6inv = r2inv*r2inv*r2inv; - jtype = type[j] - 1; - fast_alpha_t& a = tabsixi[jtype]; - forcelj = r6inv * (a.lj1*r6inv - a.lj2); - if (rsq > cut_lj_innersq) { - switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * - (tmp_coef2 + 2.0*rsq) * tmp_coef1; - switch2 = 12.0*rsq * (cut_ljsq-rsq) * - (rsq-cut_lj_innersq) * tmp_coef1; - philj = r6inv * (a.lj3*r6inv - a.lj4); - forcelj = forcelj*switch1 + philj*switch2; - } - } - - double fpair = (forcecoul + forcelj) * r2inv; - - tmpfx += delx*fpair; - tmpfy += dely*fpair; - tmpfz += delz*fpair; - if (NEWTON_PAIR || j < nlocal) { - ff[j].x -= delx*fpair; - ff[j].y -= dely*fpair; - ff[j].z -= delz*fpair; - } - - if (EFLAG) { - if (rsq < cut_coulsq) { - if (!ncoultablebits || rsq <= tabinnersq) - ecoul = prefactor*erfc; - else { - table = etable[itable] + fraction*detable[itable]; - ecoul = tmp_coef3 * table; - } - } else ecoul = 0.0; - - if (rsq < cut_ljsq) { - fast_alpha_t& a = tabsixi[jtype]; - evdwl = r6inv*(a.lj3*r6inv-a.lj4); - if (rsq > cut_lj_innersq) { - switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * - (tmp_coef2 + 2.0*rsq) * tmp_coef1; - evdwl *= switch1; - } - } else evdwl = 0.0; - } - - if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, - evdwl,ecoul,fpair,delx,dely,delz); - } - - } else { - factor_lj = special_lj[sbindex]; - factor_coul = special_coul[sbindex]; - j &= NEIGHMASK; - - double delx = xtmp - xx[j].x; - double dely = ytmp - xx[j].y; - double delz = ztmp - xx[j].z; - rsq = delx*delx + dely*dely + delz*delz; - double tmp_coef3 = qtmp*q[j]; - - if (rsq < cut_bothsq) { - r2inv = 1.0/rsq; - - forcecoul = 0.0; - 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 * - (EWALD_A1+t*(EWALD_A2+t*(EWALD_A3+t*(EWALD_A4+t*EWALD_A5)))) * - expm2; - prefactor = qqrd2e * tmp_coef3/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; - 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 = tmp_coef3 * table; - if (factor_coul < 1.0) { - table = ctable[itable] + fraction*dctable[itable]; - prefactor = tmp_coef3 * table; - forcecoul -= (1.0-factor_coul)*prefactor; - } - } - } - - forcelj = 0.0; - if (rsq < cut_ljsq) { - r6inv = r2inv*r2inv*r2inv; - jtype = type[j] - 1; - fast_alpha_t& a = tabsixi[jtype]; - forcelj = r6inv * (a.lj1*r6inv - a.lj2); - if (rsq > cut_lj_innersq) { - switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * - (tmp_coef2 + 2.0*rsq) * tmp_coef1; - switch2 = 12.0*rsq * (cut_ljsq-rsq) * - (rsq-cut_lj_innersq) * tmp_coef1; - fast_alpha_t& a = tabsixi[jtype]; - philj = r6inv * (a.lj3*r6inv - a.lj4); - forcelj = forcelj*switch1 + philj*switch2; - } - } - - double fpair = (forcecoul + factor_lj*forcelj) * r2inv; - - tmpfx += delx*fpair; - tmpfy += dely*fpair; - tmpfz += delz*fpair; - if (NEWTON_PAIR || j < nlocal) { - ff[j].x -= delx*fpair; - ff[j].y -= dely*fpair; - ff[j].z -= delz*fpair; - } - - if (EFLAG) { - if (rsq < cut_coulsq) { - if (!ncoultablebits || rsq <= tabinnersq) - ecoul = prefactor*erfc; - else { - table = etable[itable] + fraction*detable[itable]; - ecoul = tmp_coef3 * table; - } - if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; - } else ecoul = 0.0; - - if (rsq < cut_ljsq) { - fast_alpha_t& a = tabsixi[jtype]; - evdwl = r6inv*(a.lj3*r6inv-a.lj4); - if (rsq > cut_lj_innersq) { - switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * - (tmp_coef2 + 2.0*rsq) * tmp_coef1; - evdwl *= switch1; - } - evdwl *= factor_lj; - } else evdwl = 0.0; - } - - if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, - evdwl,ecoul,fpair,delx,dely,delz); - } - } - } - - ff[i].x += tmpfx; - ff[i].y += tmpfy; - ff[i].z += tmpfz; - } - - free(fast_alpha); fast_alpha = 0; - - if (vflag_fdotr) virial_fdotr_compute(); -} - -#undef EWALD_F -#undef EWALD_P -#undef EWALD_A1 -#undef EWALD_A2 -#undef EWALD_A3 -#undef EWALD_A4 -#undef EWALD_A5 - -#undef MIN -#undef MAX } diff --git a/src/OPT/pair_lj_cut_coul_long_opt.cpp b/src/OPT/pair_lj_cut_coul_long_opt.cpp new file mode 100644 index 0000000000..da09305270 --- /dev/null +++ b/src/OPT/pair_lj_cut_coul_long_opt.cpp @@ -0,0 +1,203 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "pair_lj_cut_coul_long_opt.h" +#include "atom.h" +#include "force.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulLongOpt::PairLJCutCoulLongOpt(LAMMPS *lmp) : PairLJCutCoulLong(lmp) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulLongOpt::compute(int eflag, int vflag) +{ + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + if (!ncoultablebits) { + if (evflag) { + if (eflag) { + if (force->newton_pair) return eval<1,1,1,0>(); + else return eval<1,1,0,0>(); + } else { + if (force->newton_pair) return eval<1,0,1,0>(); + else return eval<1,0,0,0>(); + } + } else { + if (force->newton_pair) return eval<0,0,1,0>(); + else return eval<0,0,0,0>(); + } + } else { + if (evflag) { + if (eflag) { + if (force->newton_pair) return eval<1,1,1,1>(); + else return eval<1,1,0,1>(); + } else { + if (force->newton_pair) return eval<1,0,1,1>(); + else return eval<1,0,0,1>(); + } + } else { + if (force->newton_pair) return eval<0,0,1,1>(); + else return eval<0,0,0,1>(); + } + } +} + + +template < const int EVFLAG, const int EFLAG, + const int NEWTON_PAIR, const int CTABLE > +void PairLJCutCoulLongOpt::eval() +{ + int i,ii,j,jj,inum,jnum,itype,jtype,itable; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double fraction,table; + double r,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc; + int *ilist,*jlist,*numneigh,**firstneigh; + double rsq; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp = fytmp = fztmp = 0.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) { + if (!CTABLE || 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; + } 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; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*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; + + fpair = (forcecoul + factor_lj*forcelj) * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + if (!CTABLE || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[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(i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,delx,dely,delz); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ diff --git a/src/OPT/pair_lj_cut_coul_long_opt.h b/src/OPT/pair_lj_cut_coul_long_opt.h new file mode 100644 index 0000000000..4c19ee9b5d --- /dev/null +++ b/src/OPT/pair_lj_cut_coul_long_opt.h @@ -0,0 +1,41 @@ +/* ---------------------------------------------------------------------- + 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/opt,PairLJCutCoulLongOpt) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_LONG_OPT_H +#define LMP_PAIR_LJ_CUT_COUL_LONG_OPT_H + +#include "pair_lj_cut_coul_long.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulLongOpt : public PairLJCutCoulLong { + public: + PairLJCutCoulLongOpt(class LAMMPS *); + virtual void compute(int, int); + + protected: + template + void eval(); +}; + +} + +#endif +#endif diff --git a/src/OPT/pair_lj_cut_coul_long_tip4p_opt.cpp b/src/OPT/pair_lj_cut_coul_long_tip4p_opt.cpp new file mode 100644 index 0000000000..aee802db21 --- /dev/null +++ b/src/OPT/pair_lj_cut_coul_long_tip4p_opt.cpp @@ -0,0 +1,483 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + OPT version: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_cut_coul_long_tip4p_opt.h" +#include "atom.h" +#include "domain.h" +#include "force.h" +#include "error.h" +#include "memory.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulLongTIP4POpt::PairLJCutCoulLongTIP4POpt(LAMMPS *lmp) : + PairLJCutCoulLongTIP4P(lmp) +{ + single_enable = 0; + respa_enable = 0; + + // TIP4P cannot compute virial as F dot r + // due to find_M() finding bonded H atoms which are not near O atom + + no_virial_fdotr_compute = 1; + + // for caching m-shift corrected positions + maxmpos = 0; + h1idx = h2idx = NULL; + mpos = NULL; +} + +PairLJCutCoulLongTIP4POpt::~PairLJCutCoulLongTIP4POpt() +{ + memory->destroy(h1idx); + memory->destroy(h2idx); + memory->destroy(mpos); +} + +void PairLJCutCoulLongTIP4POpt::compute(int eflag, int vflag) +{ + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + const int nlocal = atom->nlocal; + const int nall = nlocal + atom->nghost; + + // reallocate per-atom arrays, if necessary + if (nall > maxmpos) { + maxmpos = nall; + memory->grow(mpos,maxmpos,3,"pair:mpos"); + memory->grow(h1idx,maxmpos,"pair:h1idx"); + memory->grow(h2idx,maxmpos,"pair:h2idx"); + } + + // cache corrected M positions in mpos[] + double **x = atom->x; + int *type = atom->type; + for (int i = 0; i < nlocal; i++) { + if (type[i] == typeO) { + find_M(i,h1idx[i],h2idx[i],mpos[i]); + } else { + mpos[i][0] = x[i][0]; + mpos[i][1] = x[i][1]; + mpos[i][2] = x[i][2]; + } + } + for (int i = nlocal; i < nall; i++) { + if (type[i] == typeO) { + find_M_permissive(i,h1idx[i],h2idx[i],mpos[i]); + } else { + mpos[i][0] = x[i][0]; + mpos[i][1] = x[i][1]; + mpos[i][2] = x[i][2]; + } + } + + if (!ncoultablebits) { + if (evflag) { + if (eflag) { + if (vflag) { + if (force->newton_pair) return eval<1,1,1,1,0>(); + else return eval<1,1,1,0,0>(); + } else { + if (force->newton_pair) return eval<1,1,0,1,0>(); + else return eval<1,1,0,0,0>(); + } + } else { + if (vflag) { + if (force->newton_pair) return eval<1,0,1,1,0>(); + else return eval<1,0,1,0,0>(); + } else { + if (force->newton_pair) return eval<1,0,0,1,0>(); + else return eval<1,0,0,0,0>(); + } + } + } else { + if (force->newton_pair) return eval<0,0,0,1,0>(); + else return eval<0,0,0,0,0>(); + } + } else { + if (evflag) { + if (eflag) { + if (vflag) { + if (force->newton_pair) return eval<1,1,1,1,1>(); + else return eval<1,1,1,0,1>(); + } else { + if (force->newton_pair) return eval<1,1,0,1,1>(); + else return eval<1,1,0,0,1>(); + } + } else { + if (vflag) { + if (force->newton_pair) return eval<1,0,1,1,1>(); + else return eval<1,0,1,0,1>(); + } else { + if (force->newton_pair) return eval<1,0,0,1,1>(); + else return eval<1,0,0,0,1>(); + } + } + } else { + if (force->newton_pair) return eval<0,0,0,1,1>(); + else return eval<0,0,0,0,1>(); + } + } +} + +/* ---------------------------------------------------------------------- */ + +template < const int EVFLAG, const int EFLAG, const int VFLAG, + const int NEWTON_PAIR, const int CTABLE > +void PairLJCutCoulLongTIP4POpt::eval() +{ + int i,j,ii,jj,inum,jnum,itype,jtype,itable; + int n,vlist[6]; + int iH1,iH2,jH1,jH2; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul; + double fraction,table; + double delxOM, delyOM, delzOM; + double r,r2inv,r6inv,forcecoul,forcelj,cforce; + double factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc,ddotf; + double v[6],xH1[3],xH2[3]; + double fdx,fdy,fdz,f1x,f1y,f1z,fOx,fOy,fOz,fHx,fHy,fHz; + double *x1,*x2; + int *ilist,*jlist,*numneigh,**firstneigh; + double rsq; + + evdwl = ecoul = 0.0; + + double **f = atom->f; + double **x = atom->x; + double *q = atom->q; + 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; + double fxtmp,fytmp,fztmp; + + 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]; + itype = type[i]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + x1 = mpos[i]; + iH1 = h1idx[i]; + iH2 = h2idx[i]; + + 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_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + forcelj *= factor_lj * r2inv; + + fxtmp += delx*forcelj; + fytmp += dely*forcelj; + fztmp += delz*forcelj; + f[j][0] -= delx*forcelj; + f[j][1] -= dely*forcelj; + f[j][2] -= delz*forcelj; + + if (EFLAG) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + + if (EVFLAG) ev_tally(i,j,nlocal,newton_pair, + evdwl,0.0,forcelj,delx,dely,delz); + } + + // adjust rsq and delxyz for off-site O charge(s) + + if (itype == typeO || jtype == typeO) { + x2 = mpos[j]; + jH1 = h1idx[j]; + jH2 = h2idx[j]; + if (jtype == typeO && ( jH1 < 0 || jH2 < 0)) + error->one(FLERR,"TIP4P hydrogen is missing"); + delx = x1[0] - x2[0]; + dely = x1[1] - x2[1]; + delz = x1[2] - x2[2]; + rsq = delx*delx + dely*dely + delz*delz; + } + + // test current rsq against cutoff and compute Coulombic force + + if (rsq < cut_coulsq) { + r2inv = 1 / rsq; + if (!CTABLE || 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; + } + } 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; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + + cforce = forcecoul * r2inv; + + // if i,j are not O atoms, force is applied directly + // if i or j are O atoms, force is on fictitious atom & partitioned + // force partitioning due to Feenstra, J Comp Chem, 20, 786 (1999) + // f_f = fictitious force, fO = f_f (1 - 2 alpha), fH = alpha f_f + // preserves total force and torque on water molecule + // virial = sum(r x F) where each water's atoms are near xi and xj + // vlist stores 2,4,6 atoms whose forces contribute to virial + + n = 0; + + if (itype != typeO) { + fxtmp += delx * cforce; + fytmp += dely * cforce; + fztmp += delz * cforce; + + if (VFLAG) { + v[0] = x[i][0] * delx * cforce; + v[1] = x[i][1] * dely * cforce; + v[2] = x[i][2] * delz * cforce; + v[3] = x[i][0] * dely * cforce; + v[4] = x[i][0] * delz * cforce; + v[5] = x[i][1] * delz * cforce; + vlist[n++] = i; + } + + } else { + + fdx = delx*cforce; + fdy = dely*cforce; + fdz = delz*cforce; + + delxOM = x[i][0] - x1[0]; + delyOM = x[i][1] - x1[1]; + delzOM = x[i][2] - x1[2]; + + ddotf = (delxOM * fdx + delyOM * fdy + delzOM * fdz) / + (qdist*qdist); + + f1x = alpha * (fdx - ddotf * delxOM); + f1y = alpha * (fdy - ddotf * delyOM); + f1z = alpha * (fdz - ddotf * delzOM); + + fOx = fdx - f1x; + fOy = fdy - f1y; + fOz = fdz - f1z; + + fHx = 0.5 * f1x; + fHy = 0.5 * f1y; + fHz = 0.5 * f1z; + + fxtmp += fOx; + fytmp += fOy; + fztmp += fOz; + + f[iH1][0] += fHx; + f[iH1][1] += fHy; + f[iH1][2] += fHz; + + f[iH2][0] += fHx; + f[iH2][1] += fHy; + f[iH2][2] += fHz; + + if (VFLAG) { + domain->closest_image(x[i],x[iH1],xH1); + domain->closest_image(x[i],x[iH2],xH2); + + v[0] = x[i][0]*fOx + xH1[0]*fHx + xH2[0]*fHx; + v[1] = x[i][1]*fOy + xH1[1]*fHy + xH2[1]*fHy; + v[2] = x[i][2]*fOz + xH1[2]*fHz + xH2[2]*fHz; + v[3] = x[i][0]*fOy + xH1[0]*fHy + xH2[0]*fHy; + v[4] = x[i][0]*fOz + xH1[0]*fHz + xH2[0]*fHz; + v[5] = x[i][1]*fOz + xH1[1]*fHz + xH2[1]*fHz; + + vlist[n++] = i; + vlist[n++] = iH1; + vlist[n++] = iH2; + } + } + + if (jtype != typeO) { + f[j][0] -= delx * cforce; + f[j][1] -= dely * cforce; + f[j][2] -= delz * cforce; + + if (VFLAG) { + v[0] -= x[j][0] * delx * cforce; + v[1] -= x[j][1] * dely * cforce; + v[2] -= x[j][2] * delz * cforce; + v[3] -= x[j][0] * dely * cforce; + v[4] -= x[j][0] * delz * cforce; + v[5] -= x[j][1] * delz * cforce; + vlist[n++] = j; + } + + } else { + + fdx = -delx*cforce; + fdy = -dely*cforce; + fdz = -delz*cforce; + + delxOM = x[j][0] - x2[0]; + delyOM = x[j][1] - x2[1]; + delzOM = x[j][2] - x2[2]; + + ddotf = (delxOM * fdx + delyOM * fdy + delzOM * fdz) / + (qdist*qdist); + + f1x = alpha * (fdx - ddotf * delxOM); + f1y = alpha * (fdy - ddotf * delyOM); + f1z = alpha * (fdz - ddotf * delzOM); + + fOx = fdx - f1x; + fOy = fdy - f1y; + fOz = fdz - f1z; + + fHx = 0.5 * f1x; + fHy = 0.5 * f1y; + fHz = 0.5 * f1z; + + f[j][0] += fOx; + f[j][1] += fOy; + f[j][2] += fOz; + + f[jH1][0] += fHx; + f[jH1][1] += fHy; + f[jH1][2] += fHz; + + f[jH2][0] += fHx; + f[jH2][1] += fHy; + f[jH2][2] += fHz; + + if (VFLAG) { + domain->closest_image(x[j],x[jH1],xH1); + domain->closest_image(x[j],x[jH2],xH2); + + v[0] += x[j][0]*fOx + xH1[0]*fHx + xH2[0]*fHx; + v[1] += x[j][1]*fOy + xH1[1]*fHy + xH2[1]*fHy; + v[2] += x[j][2]*fOz + xH1[2]*fHz + xH2[2]*fHz; + v[3] += x[j][0]*fOy + xH1[0]*fHy + xH2[0]*fHy; + v[4] += x[j][0]*fOz + xH1[0]*fHz + xH2[0]*fHz; + v[5] += x[j][1]*fOz + xH1[1]*fHz + xH2[1]*fHz; + + vlist[n++] = j; + vlist[n++] = jH1; + vlist[n++] = jH2; + } + } + + if (EFLAG) { + if (!CTABLE || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j] * table; + } + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + + if (EVFLAG) ev_tally_list(n,vlist,ecoul,v); + } + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulLongTIP4POpt::find_M_permissive(int i, int &iH1, int &iH2, double *xM) +{ + // test that O is correctly bonded to 2 succesive H atoms + + iH1 = atom->map(atom->tag[i] + 1); + iH2 = atom->map(atom->tag[i] + 2); + + if (iH1 == -1 || iH2 == -1) + return; + else + find_M(i,iH1,iH2,xM); +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulLongTIP4POpt::memory_usage() +{ + double bytes = PairLJCutCoulLongTIP4P::memory_usage(); + bytes += 2 * maxmpos * sizeof(int); + bytes += 3 * maxmpos * sizeof(double); + bytes += maxmpos * sizeof(double *); + + return bytes; +} diff --git a/src/OPT/pair_lj_cut_coul_long_tip4p_opt.h b/src/OPT/pair_lj_cut_coul_long_tip4p_opt.h new file mode 100644 index 0000000000..902ec39708 --- /dev/null +++ b/src/OPT/pair_lj_cut_coul_long_tip4p_opt.h @@ -0,0 +1,50 @@ +/* -*- 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/tip4p/opt,PairLJCutCoulLongTIP4POpt) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_LONG_TIP4P_OPT_H +#define LMP_PAIR_LJ_CUT_COUL_LONG_TIP4P_OPT_H + +#include "pair_lj_cut_coul_long_tip4p.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulLongTIP4POpt : public PairLJCutCoulLongTIP4P { + public: + PairLJCutCoulLongTIP4POpt(class LAMMPS *); + virtual ~PairLJCutCoulLongTIP4POpt(); + + virtual void compute(int, int); + virtual double memory_usage(); + + protected: + // this is to cache m-shift corrected positions. + int maxmpos; // size of the following arrays + int *h1idx, *h2idx; // local index of hydrogen atoms + double **mpos; // coordinates corrected for m-shift. + void find_M_permissive(int, int &, int &, double *); + + template < const int, const int, const int, const int, const int > + void eval(); + +}; + +} + +#endif +#endif diff --git a/src/OPT/pair_lj_cut_opt.cpp b/src/OPT/pair_lj_cut_opt.cpp index d939727a59..8f855da566 100644 --- a/src/OPT/pair_lj_cut_opt.cpp +++ b/src/OPT/pair_lj_cut_opt.cpp @@ -18,7 +18,11 @@ Vincent Natoli, Stone Ridge Technology ------------------------------------------------------------------------- */ +#include "stdlib.h" #include "pair_lj_cut_opt.h" +#include "atom.h" +#include "force.h" +#include "neigh_list.h" using namespace LAMMPS_NS; @@ -46,3 +50,152 @@ void PairLJCutOpt::compute(int eflag, int vflag) else return eval<0,0,0>(); } } + +/* ---------------------------------------------------------------------- */ + +template < int EVFLAG, int EFLAG, int NEWTON_PAIR > +void PairLJCutOpt::eval() +{ + typedef struct { double x,y,z; } vec3_t; + + typedef struct { + double cutsq,lj1,lj2,lj3,lj4,offset; + double _pad[2]; + } fast_alpha_t; + + int i,j,ii,jj,inum,jnum,itype,jtype,sbindex; + double factor_lj; + double evdwl = 0.0; + + double** __restrict__ x = atom->x; + double** __restrict__ f = atom->f; + int* __restrict__ type = atom->type; + int nlocal = atom->nlocal; + double* __restrict__ special_lj = force->special_lj; + + inum = list->inum; + int* __restrict__ ilist = list->ilist; + int** __restrict__ firstneigh = list->firstneigh; + int* __restrict__ numneigh = list->numneigh; + + vec3_t* __restrict__ xx = (vec3_t*)x[0]; + vec3_t* __restrict__ ff = (vec3_t*)f[0]; + + int ntypes = atom->ntypes; + int ntypes2 = ntypes*ntypes; + + fast_alpha_t* __restrict__ fast_alpha = + (fast_alpha_t*) malloc(ntypes2*sizeof(fast_alpha_t)); + for (i = 0; i < ntypes; i++) for (j = 0; j < ntypes; j++) { + fast_alpha_t& a = fast_alpha[i*ntypes+j]; + a.cutsq = cutsq[i+1][j+1]; + a.lj1 = lj1[i+1][j+1]; + a.lj2 = lj2[i+1][j+1]; + a.lj3 = lj3[i+1][j+1]; + a.lj4 = lj4[i+1][j+1]; + a.offset = offset[i+1][j+1]; + } + fast_alpha_t* __restrict__ tabsix = fast_alpha; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + double xtmp = xx[i].x; + double ytmp = xx[i].y; + double ztmp = xx[i].z; + itype = type[i] - 1; + int* __restrict__ jlist = firstneigh[i]; + jnum = numneigh[i]; + + double tmpfx = 0.0; + double tmpfy = 0.0; + double tmpfz = 0.0; + + fast_alpha_t* __restrict__ tabsixi = (fast_alpha_t*)&tabsix[itype*ntypes]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + sbindex = sbmask(j); + + if (sbindex == 0) { + double delx = xtmp - xx[j].x; + double dely = ytmp - xx[j].y; + double delz = ztmp - xx[j].z; + double rsq = delx*delx + dely*dely + delz*delz; + + jtype = type[j] - 1; + + fast_alpha_t& a = tabsixi[jtype]; + + if (rsq < a.cutsq) { + double r2inv = 1.0/rsq; + double r6inv = r2inv*r2inv*r2inv; + double forcelj = r6inv * (a.lj1*r6inv - a.lj2); + double fpair = forcelj*r2inv; + + tmpfx += delx*fpair; + tmpfy += dely*fpair; + tmpfz += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + ff[j].x -= delx*fpair; + ff[j].y -= dely*fpair; + ff[j].z -= delz*fpair; + } + + if (EFLAG) evdwl = r6inv*(a.lj3*r6inv-a.lj4) - a.offset; + + if (EVFLAG) + ev_tally(i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz); + } + + } else { + factor_lj = special_lj[sbindex]; + j &= NEIGHMASK; + + double delx = xtmp - xx[j].x; + double dely = ytmp - xx[j].y; + double delz = ztmp - xx[j].z; + double rsq = delx*delx + dely*dely + delz*delz; + + int jtype1 = type[j]; + jtype = jtype1 - 1; + + fast_alpha_t& a = tabsixi[jtype]; + if (rsq < a.cutsq) { + double r2inv = 1.0/rsq; + double r6inv = r2inv*r2inv*r2inv; + fast_alpha_t& a = tabsixi[jtype]; + double forcelj = r6inv * (a.lj1*r6inv - a.lj2); + double fpair = factor_lj*forcelj*r2inv; + + tmpfx += delx*fpair; + tmpfy += dely*fpair; + tmpfz += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + ff[j].x -= delx*fpair; + ff[j].y -= dely*fpair; + ff[j].z -= delz*fpair; + } + + if (EFLAG) { + evdwl = r6inv*(a.lj3*r6inv-a.lj4) - a.offset; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz); + } + } + } + + ff[i].x += tmpfx; + ff[i].y += tmpfy; + ff[i].z += tmpfz; + } + + free(fast_alpha); fast_alpha = 0; + + if (vflag_fdotr) virial_fdotr_compute(); +} diff --git a/src/OPT/pair_lj_cut_opt.h b/src/OPT/pair_lj_cut_opt.h index acd6afefeb..0bdd004811 100644 --- a/src/OPT/pair_lj_cut_opt.h +++ b/src/OPT/pair_lj_cut_opt.h @@ -11,13 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -/* ---------------------------------------------------------------------- - Contributing authors: - James Fischer, High Performance Technologies, Inc. - David Richie, Stone Ridge Technology - Vincent Natol, Stone Ridge Technology -------------------------------------------------------------------------- */ - #ifdef PAIR_CLASS PairStyle(lj/cut/opt,PairLJCutOpt) @@ -27,11 +20,7 @@ PairStyle(lj/cut/opt,PairLJCutOpt) #ifndef LMP_PAIR_LJ_CUT_OPT_H #define LMP_PAIR_LJ_CUT_OPT_H -#include "stdlib.h" #include "pair_lj_cut.h" -#include "atom.h" -#include "force.h" -#include "neigh_list.h" namespace LAMMPS_NS { @@ -44,153 +33,6 @@ class PairLJCutOpt : public PairLJCut { template < int EVFLAG, int EFLAG, int NEWTON_PAIR > void eval(); }; -template < int EVFLAG, int EFLAG, int NEWTON_PAIR > -void PairLJCutOpt::eval() -{ - typedef struct { double x,y,z; } vec3_t; - - typedef struct { - double cutsq,lj1,lj2,lj3,lj4,offset; - double _pad[2]; - } fast_alpha_t; - - int i,j,ii,jj,inum,jnum,itype,jtype,sbindex; - double factor_lj; - double evdwl = 0.0; - - double** __restrict__ x = atom->x; - double** __restrict__ f = atom->f; - int* __restrict__ type = atom->type; - int nlocal = atom->nlocal; - double* __restrict__ special_lj = force->special_lj; - - inum = list->inum; - int* __restrict__ ilist = list->ilist; - int** __restrict__ firstneigh = list->firstneigh; - int* __restrict__ numneigh = list->numneigh; - - vec3_t* __restrict__ xx = (vec3_t*)x[0]; - vec3_t* __restrict__ ff = (vec3_t*)f[0]; - - int ntypes = atom->ntypes; - int ntypes2 = ntypes*ntypes; - - fast_alpha_t* __restrict__ fast_alpha = - (fast_alpha_t*) malloc(ntypes2*sizeof(fast_alpha_t)); - for (i = 0; i < ntypes; i++) for (j = 0; j < ntypes; j++) { - fast_alpha_t& a = fast_alpha[i*ntypes+j]; - a.cutsq = cutsq[i+1][j+1]; - a.lj1 = lj1[i+1][j+1]; - a.lj2 = lj2[i+1][j+1]; - a.lj3 = lj3[i+1][j+1]; - a.lj4 = lj4[i+1][j+1]; - a.offset = offset[i+1][j+1]; - } - fast_alpha_t* __restrict__ tabsix = fast_alpha; - - // loop over neighbors of my atoms - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - double xtmp = xx[i].x; - double ytmp = xx[i].y; - double ztmp = xx[i].z; - itype = type[i] - 1; - int* __restrict__ jlist = firstneigh[i]; - jnum = numneigh[i]; - - double tmpfx = 0.0; - double tmpfy = 0.0; - double tmpfz = 0.0; - - fast_alpha_t* __restrict__ tabsixi = (fast_alpha_t*)&tabsix[itype*ntypes]; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - sbindex = sbmask(j); - - if (sbindex == 0) { - double delx = xtmp - xx[j].x; - double dely = ytmp - xx[j].y; - double delz = ztmp - xx[j].z; - double rsq = delx*delx + dely*dely + delz*delz; - - jtype = type[j] - 1; - - fast_alpha_t& a = tabsixi[jtype]; - - if (rsq < a.cutsq) { - double r2inv = 1.0/rsq; - double r6inv = r2inv*r2inv*r2inv; - double forcelj = r6inv * (a.lj1*r6inv - a.lj2); - double fpair = forcelj*r2inv; - - tmpfx += delx*fpair; - tmpfy += dely*fpair; - tmpfz += delz*fpair; - if (NEWTON_PAIR || j < nlocal) { - ff[j].x -= delx*fpair; - ff[j].y -= dely*fpair; - ff[j].z -= delz*fpair; - } - - if (EFLAG) evdwl = r6inv*(a.lj3*r6inv-a.lj4) - a.offset; - - if (EVFLAG) - ev_tally(i,j,nlocal,NEWTON_PAIR, - evdwl,0.0,fpair,delx,dely,delz); - } - - } else { - factor_lj = special_lj[sbindex]; - j &= NEIGHMASK; - - double delx = xtmp - xx[j].x; - double dely = ytmp - xx[j].y; - double delz = ztmp - xx[j].z; - double rsq = delx*delx + dely*dely + delz*delz; - - int jtype1 = type[j]; - jtype = jtype1 - 1; - - fast_alpha_t& a = tabsixi[jtype]; - if (rsq < a.cutsq) { - double r2inv = 1.0/rsq; - double r6inv = r2inv*r2inv*r2inv; - fast_alpha_t& a = tabsixi[jtype]; - double forcelj = r6inv * (a.lj1*r6inv - a.lj2); - double fpair = factor_lj*forcelj*r2inv; - - tmpfx += delx*fpair; - tmpfy += dely*fpair; - tmpfz += delz*fpair; - if (NEWTON_PAIR || j < nlocal) { - ff[j].x -= delx*fpair; - ff[j].y -= dely*fpair; - ff[j].z -= delz*fpair; - } - - if (EFLAG) { - evdwl = r6inv*(a.lj3*r6inv-a.lj4) - a.offset; - evdwl *= factor_lj; - } - - if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, - evdwl,0.0,fpair,delx,dely,delz); - } - } - } - - ff[i].x += tmpfx; - ff[i].y += tmpfy; - ff[i].z += tmpfz; - } - - free(fast_alpha); fast_alpha = 0; - - if (vflag_fdotr) virial_fdotr_compute(); -} - } #endif diff --git a/src/OPT/pair_morse_opt.cpp b/src/OPT/pair_morse_opt.cpp index 1cf96d85b4..5a9bfe7bed 100644 --- a/src/OPT/pair_morse_opt.cpp +++ b/src/OPT/pair_morse_opt.cpp @@ -18,7 +18,12 @@ Vincent Natoli, Stone Ridge Technology ------------------------------------------------------------------------- */ +#include "math.h" +#include "stdlib.h" #include "pair_morse_opt.h" +#include "atom.h" +#include "force.h" +#include "neigh_list.h" using namespace LAMMPS_NS; @@ -46,3 +51,148 @@ void PairMorseOpt::compute(int eflag, int vflag) else return eval<0,0,0>(); } } + +/* ---------------------------------------------------------------------- */ + +template < int EVFLAG, int EFLAG, int NEWTON_PAIR > +void PairMorseOpt::eval() +{ + typedef struct { double x,y,z; } vec3_t; + + typedef struct { + double cutsq,r0,alpha,morse1,d0,offset; + double _pad[2]; + } fast_alpha_t; + + int i,j,ii,jj,inum,jnum,itype,jtype,sbindex; + double factor_lj; + double evdwl = 0.0; + + double** __restrict__ x = atom->x; + double** __restrict__ f = atom->f; + int* __restrict__ type = atom->type; + int nlocal = atom->nlocal; + double* __restrict__ special_lj = force->special_lj; + + inum = list->inum; + int* __restrict__ ilist = list->ilist; + int** __restrict__ firstneigh = list->firstneigh; + int* __restrict__ numneigh = list->numneigh; + + vec3_t* __restrict__ xx = (vec3_t*)x[0]; + vec3_t* __restrict__ ff = (vec3_t*)f[0]; + + int ntypes = atom->ntypes; + int ntypes2 = ntypes*ntypes; + + fast_alpha_t* __restrict__ fast_alpha = + (fast_alpha_t*) malloc(ntypes2*sizeof(fast_alpha_t)); + for (i = 0; i < ntypes; i++) for (j = 0; j < ntypes; j++) { + fast_alpha_t& a = fast_alpha[i*ntypes+j]; + a.cutsq = cutsq[i+1][j+1]; + a.r0 = r0[i+1][j+1]; + a.alpha = alpha[i+1][j+1]; + a.morse1 = morse1[i+1][j+1]; + a.d0 = d0[i+1][j+1]; + a.offset = offset[i+1][j+1]; + } + fast_alpha_t* __restrict__ tabsix = fast_alpha; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + double xtmp = xx[i].x; + double ytmp = xx[i].y; + double ztmp = xx[i].z; + itype = type[i] - 1; + int* __restrict__ jlist = firstneigh[i]; + jnum = numneigh[i]; + + double tmpfx = 0.0; + double tmpfy = 0.0; + double tmpfz = 0.0; + + fast_alpha_t* __restrict__ tabsixi = (fast_alpha_t*)&tabsix[itype*ntypes]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + sbindex = sbmask(j); + + if (sbindex == 0) { + double delx = xtmp - xx[j].x; + double dely = ytmp - xx[j].y; + double delz = ztmp - xx[j].z; + double rsq = delx*delx + dely*dely + delz*delz; + + jtype = type[j] - 1; + + fast_alpha_t& a = tabsixi[jtype]; + if (rsq < a.cutsq) { + double r = sqrt(rsq); + double dr = r - a.r0; + double dexp = exp(-a.alpha * dr); + double fpair = a.morse1 * (dexp*dexp - dexp) / r; + + tmpfx += delx*fpair; + tmpfy += dely*fpair; + tmpfz += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + ff[j].x -= delx*fpair; + ff[j].y -= dely*fpair; + ff[j].z -= delz*fpair; + } + + if (EFLAG) evdwl = a.d0 * (dexp*dexp - 2.0*dexp) - a.offset; + + if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz); + } + + } else { + factor_lj = special_lj[sbindex]; + j &= NEIGHMASK; + + double delx = xtmp - xx[j].x; + double dely = ytmp - xx[j].y; + double delz = ztmp - xx[j].z; + double rsq = delx*delx + dely*dely + delz*delz; + + jtype = type[j] - 1; + + fast_alpha_t& a = tabsixi[jtype]; + if (rsq < a.cutsq) { + double r = sqrt(rsq); + double dr = r - a.r0; + double dexp = exp(-a.alpha * dr); + double fpair = factor_lj * a.morse1 * (dexp*dexp - dexp) / r; + + tmpfx += delx*fpair; + tmpfy += dely*fpair; + tmpfz += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + ff[j].x -= delx*fpair; + ff[j].y -= dely*fpair; + ff[j].z -= delz*fpair; + } + + if (EFLAG) { + evdwl = a.d0 * (dexp*dexp - 2.0*dexp) - a.offset; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz); + } + } + } + + ff[i].x += tmpfx; + ff[i].y += tmpfy; + ff[i].z += tmpfz; + } + + free(fast_alpha); fast_alpha = 0; + + if (vflag_fdotr) virial_fdotr_compute(); +} diff --git a/src/OPT/pair_morse_opt.h b/src/OPT/pair_morse_opt.h index 3d1ea371c6..0e80ac4d74 100644 --- a/src/OPT/pair_morse_opt.h +++ b/src/OPT/pair_morse_opt.h @@ -11,13 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -/* ---------------------------------------------------------------------- - Contributing authors: - James Fischer, High Performance Technologies, Inc. - David Richie, Stone Ridge Technology - Vincent Natol, Stone Ridge Technology -------------------------------------------------------------------------- */ - #ifdef PAIR_CLASS PairStyle(morse/opt,PairMorseOpt) @@ -27,12 +20,7 @@ PairStyle(morse/opt,PairMorseOpt) #ifndef LMP_PAIR_MORSE_OPT_H #define LMP_PAIR_MORSE_OPT_H -#include "math.h" -#include "stdlib.h" #include "pair_morse.h" -#include "atom.h" -#include "force.h" -#include "neigh_list.h" namespace LAMMPS_NS { @@ -45,149 +33,6 @@ class PairMorseOpt : public PairMorse { template < int EVFLAG, int EFLAG, int NEWTON_PAIR > void eval(); }; -template < int EVFLAG, int EFLAG, int NEWTON_PAIR > -void PairMorseOpt::eval() -{ - typedef struct { double x,y,z; } vec3_t; - - typedef struct { - double cutsq,r0,alpha,morse1,d0,offset; - double _pad[2]; - } fast_alpha_t; - - int i,j,ii,jj,inum,jnum,itype,jtype,sbindex; - double factor_lj; - double evdwl = 0.0; - - double** __restrict__ x = atom->x; - double** __restrict__ f = atom->f; - int* __restrict__ type = atom->type; - int nlocal = atom->nlocal; - double* __restrict__ special_lj = force->special_lj; - - inum = list->inum; - int* __restrict__ ilist = list->ilist; - int** __restrict__ firstneigh = list->firstneigh; - int* __restrict__ numneigh = list->numneigh; - - vec3_t* __restrict__ xx = (vec3_t*)x[0]; - vec3_t* __restrict__ ff = (vec3_t*)f[0]; - - int ntypes = atom->ntypes; - int ntypes2 = ntypes*ntypes; - - fast_alpha_t* __restrict__ fast_alpha = - (fast_alpha_t*) malloc(ntypes2*sizeof(fast_alpha_t)); - for (i = 0; i < ntypes; i++) for (j = 0; j < ntypes; j++) { - fast_alpha_t& a = fast_alpha[i*ntypes+j]; - a.cutsq = cutsq[i+1][j+1]; - a.r0 = r0[i+1][j+1]; - a.alpha = alpha[i+1][j+1]; - a.morse1 = morse1[i+1][j+1]; - a.d0 = d0[i+1][j+1]; - a.offset = offset[i+1][j+1]; - } - fast_alpha_t* __restrict__ tabsix = fast_alpha; - - // loop over neighbors of my atoms - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - double xtmp = xx[i].x; - double ytmp = xx[i].y; - double ztmp = xx[i].z; - itype = type[i] - 1; - int* __restrict__ jlist = firstneigh[i]; - jnum = numneigh[i]; - - double tmpfx = 0.0; - double tmpfy = 0.0; - double tmpfz = 0.0; - - fast_alpha_t* __restrict__ tabsixi = (fast_alpha_t*)&tabsix[itype*ntypes]; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - sbindex = sbmask(j); - - if (sbindex == 0) { - double delx = xtmp - xx[j].x; - double dely = ytmp - xx[j].y; - double delz = ztmp - xx[j].z; - double rsq = delx*delx + dely*dely + delz*delz; - - jtype = type[j] - 1; - - fast_alpha_t& a = tabsixi[jtype]; - if (rsq < a.cutsq) { - double r = sqrt(rsq); - double dr = r - a.r0; - double dexp = exp(-a.alpha * dr); - double fpair = a.morse1 * (dexp*dexp - dexp) / r; - - tmpfx += delx*fpair; - tmpfy += dely*fpair; - tmpfz += delz*fpair; - if (NEWTON_PAIR || j < nlocal) { - ff[j].x -= delx*fpair; - ff[j].y -= dely*fpair; - ff[j].z -= delz*fpair; - } - - if (EFLAG) evdwl = a.d0 * (dexp*dexp - 2.0*dexp) - a.offset; - - if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, - evdwl,0.0,fpair,delx,dely,delz); - } - - } else { - factor_lj = special_lj[sbindex]; - j &= NEIGHMASK; - - double delx = xtmp - xx[j].x; - double dely = ytmp - xx[j].y; - double delz = ztmp - xx[j].z; - double rsq = delx*delx + dely*dely + delz*delz; - - jtype = type[j] - 1; - - fast_alpha_t& a = tabsixi[jtype]; - if (rsq < a.cutsq) { - double r = sqrt(rsq); - double dr = r - a.r0; - double dexp = exp(-a.alpha * dr); - double fpair = factor_lj * a.morse1 * (dexp*dexp - dexp) / r; - - tmpfx += delx*fpair; - tmpfy += dely*fpair; - tmpfz += delz*fpair; - if (NEWTON_PAIR || j < nlocal) { - ff[j].x -= delx*fpair; - ff[j].y -= dely*fpair; - ff[j].z -= delz*fpair; - } - - if (EFLAG) { - evdwl = a.d0 * (dexp*dexp - 2.0*dexp) - a.offset; - evdwl *= factor_lj; - } - - if (EVFLAG) ev_tally(i,j,nlocal,NEWTON_PAIR, - evdwl,0.0,fpair,delx,dely,delz); - } - } - } - - ff[i].x += tmpfx; - ff[i].y += tmpfy; - ff[i].z += tmpfz; - } - - free(fast_alpha); fast_alpha = 0; - - if (vflag_fdotr) virial_fdotr_compute(); -} - } #endif diff --git a/src/PERI/atom_vec_peri.cpp b/src/PERI/atom_vec_peri.cpp index f42f1d1f4a..b571400621 100644 --- a/src/PERI/atom_vec_peri.cpp +++ b/src/PERI/atom_vec_peri.cpp @@ -64,7 +64,7 @@ void AtomVecPeri::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); @@ -72,7 +72,7 @@ void AtomVecPeri::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); vfrac = memory->grow(atom->vfrac,nmax,"atom:vfrac"); rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); @@ -761,15 +761,15 @@ void AtomVecPeri::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); type[nlocal] = atoi(values[1]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); vfrac[nlocal] = atof(values[2]); rmass[nlocal] = atof(values[3]); - if (rmass[nlocal] <= 0.0) error->one("Invalid mass value"); + if (rmass[nlocal] <= 0.0) error->one(FLERR,"Invalid mass value"); x[nlocal][0] = coord[0]; x[nlocal][1] = coord[1]; @@ -800,7 +800,7 @@ int AtomVecPeri::data_atom_hybrid(int nlocal, char **values) { vfrac[nlocal] = atof(values[0]); rmass[nlocal] = atof(values[1]); - if (rmass[nlocal] <= 0.0) error->one("Invalid mass value"); + if (rmass[nlocal] <= 0.0) error->one(FLERR,"Invalid mass value"); s0[nlocal] = DBL_MAX; x0[nlocal][0] = x[nlocal][0]; @@ -824,7 +824,7 @@ bigint AtomVecPeri::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("vfrac")) bytes += memory->usage(vfrac,nmax); if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); diff --git a/src/PERI/compute_damage_atom.cpp b/src/PERI/compute_damage_atom.cpp index a66e305983..92407985c8 100644 --- a/src/PERI/compute_damage_atom.cpp +++ b/src/PERI/compute_damage_atom.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; ComputeDamageAtom::ComputeDamageAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute damage/atom command"); + if (narg != 3) error->all(FLERR,"Illegal compute damage/atom command"); peratom_flag = 1; size_peratom_cols = 0; @@ -58,7 +58,7 @@ void ComputeDamageAtom::init() for (int i = 0; i < modify->ncompute; i++) if (strcmp(modify->compute[i]->style,"damage/peri") == 0) count++; if (count > 1 && comm->me == 0) - error->warning("More than one compute damage/atom"); + error->warning(FLERR,"More than one compute damage/atom"); // find associated PERI_NEIGH fix that must exist @@ -66,7 +66,7 @@ void ComputeDamageAtom::init() for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"PERI_NEIGH") == 0) ifix_peri = i; if (ifix_peri == -1) - error->all("Compute damage/atom requires peridynamic potential"); + error->all(FLERR,"Compute damage/atom requires peridynamic potential"); } /* ---------------------------------------------------------------------- */ diff --git a/src/PERI/fix_peri_neigh.cpp b/src/PERI/fix_peri_neigh.cpp index 666a276973..eb7d8c8539 100644 --- a/src/PERI/fix_peri_neigh.cpp +++ b/src/PERI/fix_peri_neigh.cpp @@ -34,9 +34,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixPeriNeigh::FixPeriNeigh(LAMMPS *lmp,int narg, char **arg) : @@ -251,7 +248,7 @@ void FixPeriNeigh::setup(int vflag) for (jj = 0; jj < jnum; jj++) { for (int kk = jj+1; kk < jnum; kk++) { if (partner[i][jj] == partner[i][kk]) - error->one("Duplicate particle in PeriDynamic bond - " + error->one(FLERR,"Duplicate particle in PeriDynamic bond - " "simulation box is too small"); } } @@ -263,8 +260,8 @@ void FixPeriNeigh::setup(int vflag) double **x0 = atom->x0; double half_lc = 0.5*(domain->lattice->xlattice); double vfrac_scale; - PairPeriLPS *pairlps = dynamic_cast(anypair); - PairPeriPMB *pairpmb = dynamic_cast(anypair); + PairPeriLPS *pairlps = static_cast(anypair); + PairPeriPMB *pairpmb = static_cast(anypair); for (i = 0; i < nlocal; i++) { double xtmp0 = x0[i][0]; double ytmp0 = x0[i][1]; diff --git a/src/PERI/fix_peri_neigh.h b/src/PERI/fix_peri_neigh.h index 09ca455077..8a441f22cb 100644 --- a/src/PERI/fix_peri_neigh.h +++ b/src/PERI/fix_peri_neigh.h @@ -26,7 +26,9 @@ namespace LAMMPS_NS { class FixPeriNeigh : public Fix { friend class PairPeriPMB; + friend class PairPeriPMBOMP; friend class PairPeriLPS; + friend class PairPeriLPSOMP; friend class ComputeDamageAtom; public: diff --git a/src/PERI/pair_peri_lps.cpp b/src/PERI/pair_peri_lps.cpp index ec50bdf0ec..ab74710949 100644 --- a/src/PERI/pair_peri_lps.cpp +++ b/src/PERI/pair_peri_lps.cpp @@ -36,9 +36,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairPeriLPS::PairPeriLPS(LAMMPS *lmp) : Pair(lmp) @@ -177,7 +174,7 @@ void PairPeriLPS::compute(int eflag, int vflag) double kshort = (15.0 * 18.0 * bulkmodulus[itype][itype]) / (3.141592653589793 * cutsq[itype][jtype] * cutsq[itype][jtype]); - rk = (kshort * vfrac[j]) * (dr / sqrt(cutsq[itype][jtype])); + rk = (kshort * vfrac[j]) * (dr / cut[itype][jtype]); if (r > 0.0) fpair = -(rk/r); else fpair = 0.0; @@ -217,9 +214,9 @@ void PairPeriLPS::compute(int eflag, int vflag) comm->forward_comm_fix(modify->fix[ifix_peri]); // Volume-dependent part of the energy - for (i = 0; i < nlocal; i++) { - itype = type[i]; - if (eflag) { + if (eflag) { + for (i = 0; i < nlocal; i++) { + itype = type[i]; if (eflag_global) eng_vdwl += 0.5 * bulkmodulus[itype][itype] * (theta[i] * theta[i]); if (eflag_atom) @@ -269,7 +266,7 @@ void PairPeriLPS::compute(int eflag, int vflag) delz0 = ztmp0 - x0[j][2]; if (periodic) domain->minimum_image(delx0,dely0,delz0); jtype = type[j]; - delta = sqrt(cutsq[itype][jtype]); + delta = cut[itype][jtype]; r = sqrt(rsq); dr = r - r0[i][jj]; @@ -319,8 +316,7 @@ void PairPeriLPS::compute(int eflag, int vflag) if (first) s0_new[i] = s00[itype][jtype] - (alpha[itype][jtype] * stretch); else - s0_new[i] = MAX(s0_new[i], - s00[itype][jtype] - (alpha[itype][jtype] * stretch)); + s0_new[i] = MAX(s0_new[i],s00[itype][jtype] - (alpha[itype][jtype] * stretch)); first = false; } @@ -359,7 +355,7 @@ void PairPeriLPS::allocate() void PairPeriLPS::settings(int narg, char **arg) { - if (narg) error->all("Illegal pair_style command"); + if (narg) error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -368,18 +364,18 @@ void PairPeriLPS::settings(int narg, char **arg) void PairPeriLPS::coeff(int narg, char **arg) { - if (narg != 7) error->all("Incorrect args for pair coefficients"); + if (narg != 7) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; force->bounds(arg[0],atom->ntypes,ilo,ihi); force->bounds(arg[1],atom->ntypes,jlo,jhi); - double bulkmodulus_one = atof(arg[2]); - double shearmodulus_one = atof(arg[3]); - double cut_one = atof(arg[4]); - double s00_one = atof(arg[5]); - double alpha_one = atof(arg[6]); + double bulkmodulus_one = atof(arg[2]); + double shearmodulus_one = atof(arg[3]); + double cut_one = atof(arg[4]); + double s00_one = atof(arg[5]); + double alpha_one = atof(arg[6]); int count = 0; for (int i = ilo; i <= ihi; i++) { @@ -394,7 +390,7 @@ void PairPeriLPS::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -403,12 +399,13 @@ void PairPeriLPS::coeff(int narg, char **arg) double PairPeriLPS::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); - bulkmodulus[j][i] = bulkmodulus[i][j]; - shearmodulus[j][i] = shearmodulus[i][j]; - s00[j][i] = s00[i][j]; - alpha[j][i] = alpha[i][j]; + bulkmodulus[j][i] = bulkmodulus[i][j]; + shearmodulus[j][i] = shearmodulus[i][j]; + s00[j][i] = s00[i][j]; + alpha[j][i] = alpha[i][j]; + cut[j][i] = cut[i][j]; return cut[i][j]; } @@ -421,16 +418,16 @@ void PairPeriLPS::init_style() { // error checks - if (!atom->peri_flag) error->all("Pair style peri requires atom style peri"); + if (!atom->peri_flag) error->all(FLERR,"Pair style peri requires atom style peri"); if (atom->map_style == 0) - error->all("Pair peri requires an atom map, see atom_modify"); + error->all(FLERR,"Pair peri requires an atom map, see atom_modify"); if (domain->lattice == NULL) - error->all("Pair peri requires a lattice be defined"); + error->all(FLERR,"Pair peri requires a lattice be defined"); if (domain->lattice->xlattice != domain->lattice->ylattice || domain->lattice->xlattice != domain->lattice->zlattice || domain->lattice->ylattice != domain->lattice->zlattice) - error->all("Pair peri lattice is not identical in x, y, and z"); + error->all(FLERR,"Pair peri lattice is not identical in x, y, and z"); // if first init, create Fix needed for storing fixed neighbors @@ -448,7 +445,7 @@ void PairPeriLPS::init_style() for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"PERI_NEIGH") == 0) ifix_peri = i; - if (ifix_peri == -1) error->all("Fix peri neigh does not exist"); + if (ifix_peri == -1) error->all(FLERR,"Fix peri neigh does not exist"); neighbor->request(this); } @@ -620,7 +617,7 @@ double PairPeriLPS::influence_function(double xi_x, double xi_y, double xi_z) double omega; if (fabs(r) < 2.2204e-016) - error->one("Divide by 0 in influence function of pair peri/lps"); + error->one(FLERR,"Divide by 0 in influence function of pair peri/lps"); omega = 1.0/r; return omega; } @@ -692,7 +689,7 @@ void PairPeriLPS::compute_dilatation() if (fabs(dr) < 2.2204e-016) dr = 0.0; jtype = type[j]; - delta = sqrt(cutsq[itype][jtype]); + delta = cut[itype][jtype]; // scale vfrac[j] if particle j near the horizon diff --git a/src/PERI/pair_peri_lps.h b/src/PERI/pair_peri_lps.h index 47ec71901e..602172ffa4 100644 --- a/src/PERI/pair_peri_lps.h +++ b/src/PERI/pair_peri_lps.h @@ -27,11 +27,11 @@ namespace LAMMPS_NS { class PairPeriLPS : public Pair { public: PairPeriLPS(class LAMMPS *); - ~PairPeriLPS(); + virtual ~PairPeriLPS(); int pack_comm(int, int *, double *, int, int *); void unpack_comm(int, int, double *); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); diff --git a/src/PERI/pair_peri_pmb.cpp b/src/PERI/pair_peri_pmb.cpp index 436745e938..2d0ae40725 100644 --- a/src/PERI/pair_peri_pmb.cpp +++ b/src/PERI/pair_peri_pmb.cpp @@ -37,9 +37,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairPeriPMB::PairPeriPMB(LAMMPS *lmp) : Pair(lmp) @@ -164,7 +161,7 @@ void PairPeriPMB::compute(int eflag, int vflag) dr = r - d_ij; rk = (15.0 * kspring[itype][jtype] * vfrac[j]) * - (dr / sqrt(cutsq[itype][jtype])); + (dr / cut[itype][jtype]); if (r > 0.0) fpair = -(rk/r); else fpair = 0.0; @@ -185,7 +182,7 @@ void PairPeriPMB::compute(int eflag, int vflag) // grow bond forces array if necessary - if (nlocal > nmax) { + if (atom->nmax > nmax) { memory->destroy(s0_new); nmax = atom->nmax; memory->create(s0_new,nmax,"pair:s0_new"); @@ -226,7 +223,7 @@ void PairPeriPMB::compute(int eflag, int vflag) if (periodic) domain->minimum_image(delx,dely,delz); rsq = delx*delx + dely*dely + delz*delz; jtype = type[j]; - delta = sqrt(cutsq[itype][jtype]); + delta = cut[itype][jtype]; r = sqrt(rsq); dr = r - r0[i][jj]; @@ -301,7 +298,7 @@ void PairPeriPMB::allocate() void PairPeriPMB::settings(int narg, char **arg) { - if (narg) error->all("Illegal pair_style command"); + if (narg) error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -310,7 +307,7 @@ void PairPeriPMB::settings(int narg, char **arg) void PairPeriPMB::coeff(int narg, char **arg) { - if (narg != 6) error->all("Incorrect args for pair coefficients"); + if (narg != 6) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -334,7 +331,7 @@ void PairPeriPMB::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -343,11 +340,12 @@ void PairPeriPMB::coeff(int narg, char **arg) double PairPeriPMB::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); kspring[j][i] = kspring[i][j]; alpha[j][i] = alpha[i][j]; s00[j][i] = s00[i][j]; + cut[j][i] = cut[i][j]; return cut[i][j]; } @@ -360,16 +358,16 @@ void PairPeriPMB::init_style() { // error checks - if (!atom->peri_flag) error->all("Pair style peri requires atom style peri"); + if (!atom->peri_flag) error->all(FLERR,"Pair style peri requires atom style peri"); if (atom->map_style == 0) - error->all("Pair peri requires an atom map, see atom_modify"); + error->all(FLERR,"Pair peri requires an atom map, see atom_modify"); if (domain->lattice == NULL) - error->all("Pair peri requires a lattice be defined"); + error->all(FLERR,"Pair peri requires a lattice be defined"); if (domain->lattice->xlattice != domain->lattice->ylattice || domain->lattice->xlattice != domain->lattice->zlattice || domain->lattice->ylattice != domain->lattice->zlattice) - error->all("Pair peri lattice is not identical in x, y, and z"); + error->all(FLERR,"Pair peri lattice is not identical in x, y, and z"); // if first init, create Fix needed for storing fixed neighbors @@ -387,7 +385,7 @@ void PairPeriPMB::init_style() for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"PERI_NEIGH") == 0) ifix_peri = i; - if (ifix_peri == -1) error->all("Fix peri neigh does not exist"); + if (ifix_peri == -1) error->all(FLERR,"Fix peri neigh does not exist"); neighbor->request(this); } diff --git a/src/PERI/pair_peri_pmb.h b/src/PERI/pair_peri_pmb.h index 6418b3013f..1065ba5233 100644 --- a/src/PERI/pair_peri_pmb.h +++ b/src/PERI/pair_peri_pmb.h @@ -27,8 +27,8 @@ namespace LAMMPS_NS { class PairPeriPMB : public Pair { public: PairPeriPMB(class LAMMPS *); - ~PairPeriPMB(); - void compute(int, int); + virtual ~PairPeriPMB(); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); @@ -38,7 +38,7 @@ class PairPeriPMB : public Pair { void write_restart_settings(FILE *) {} void read_restart_settings(FILE *) {} double single(int, int, int, int, double, double, double, double &); - double memory_usage(); + virtual double memory_usage(); protected: int ifix_peri; diff --git a/src/POEMS/fix_poems.cpp b/src/POEMS/fix_poems.cpp index 47b82dfa28..4e50abb4f6 100644 --- a/src/POEMS/fix_poems.cpp +++ b/src/POEMS/fix_poems.cpp @@ -44,9 +44,6 @@ using namespace LAMMPS_NS; #define EPSILON 1.0e-7 #define MAXJACOBI 50 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- define rigid bodies and joints, initiate POEMS ------------------------------------------------------------------------- */ @@ -91,19 +88,19 @@ FixPOEMS::FixPOEMS(LAMMPS *lmp, int narg, char **arg) : // set natom2body, atom2body for all atoms and nbody = # of rigid bodies // atoms must also be in fix group to be in a body - if (narg < 4) error->all("Illegal fix poems command"); + if (narg < 4) error->all(FLERR,"Illegal fix poems command"); // group = arg has list of groups if (strcmp(arg[3],"group") == 0) { nbody = narg-4; - if (nbody <= 0) error->all("Illegal fix poems command"); + if (nbody <= 0) error->all(FLERR,"Illegal fix poems command"); int *igroups = new int[nbody]; for (ibody = 0; ibody < nbody; ibody++) { igroups[ibody] = group->find(arg[ibody+4]); if (igroups[ibody] == -1) - error->all("Could not find fix poems group ID"); + error->all(FLERR,"Could not find fix poems group ID"); } int *mask = atom->mask; @@ -138,9 +135,9 @@ FixPOEMS::FixPOEMS(LAMMPS *lmp, int narg, char **arg) : // use nall as incremented ptr to set atom2body[] values for each atom } else if (strcmp(arg[3],"molecule") == 0) { - if (narg != 4) error->all("Illegal fix poems command"); + if (narg != 4) error->all(FLERR,"Illegal fix poems command"); if (atom->molecular == 0) - error->all("Must use a molecular atom style with fix poems molecule"); + error->all(FLERR,"Must use a molecular atom style with fix poems molecule"); int *mask = atom->mask; int *molecule = atom->molecule; @@ -179,19 +176,19 @@ FixPOEMS::FixPOEMS(LAMMPS *lmp, int narg, char **arg) : delete [] ncount; delete [] nall; - } else error->all("Illegal fix poems command"); + } else error->all(FLERR,"Illegal fix poems command"); // error if no bodies // error if any atom in too many bodies - if (nbody == 0) error->all("No rigid bodies defined"); + if (nbody == 0) error->all(FLERR,"No rigid bodies defined"); int flag = 0; for (int i = 0; i < nlocal; i++) if (natom2body[i] > MAXBODY) flag = 1; int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); - if (flagall) error->all("Atom in too many rigid bodies - boost MAXBODY"); + if (flagall) error->all(FLERR,"Atom in too many rigid bodies - boost MAXBODY"); // create all nbody-length arrays @@ -226,7 +223,7 @@ FixPOEMS::FixPOEMS(LAMMPS *lmp, int narg, char **arg) : delete [] ncount; for (ibody = 0; ibody < nbody; ibody++) - if (nrigid[ibody] <= 1) error->all("One or zero atoms in rigid body"); + if (nrigid[ibody] <= 1) error->all(FLERR,"One or zero atoms in rigid body"); // build list of joint connections and check for cycles and trees @@ -331,7 +328,7 @@ void FixPOEMS::init() int count = 0; for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"poems") == 0) count++; - if (count > 1 && comm->me == 0) error->warning("More than one fix poems"); + if (count > 1 && comm->me == 0) error->warning(FLERR,"More than one fix poems"); // error if npt,nph fix comes before rigid fix @@ -342,7 +339,7 @@ void FixPOEMS::init() if (i < modify->nfix) { for (int j = i; j < modify->nfix; j++) if (strcmp(modify->fix[j]->style,"poems") == 0) - error->all("POEMS fix must come before NPT/NPH fix"); + error->all(FLERR,"POEMS fix must come before NPT/NPH fix"); } // timestep info @@ -456,7 +453,7 @@ void FixPOEMS::init() tensor[0][2] = tensor[2][0] = all[ibody][5]; ierror = jacobi(tensor,inertia[ibody],evectors); - if (ierror) error->all("Insufficient Jacobi rotations for POEMS body"); + if (ierror) error->all(FLERR,"Insufficient Jacobi rotations for POEMS body"); ex_space[ibody][0] = evectors[0][0]; ex_space[ibody][1] = evectors[1][0]; @@ -480,7 +477,7 @@ void FixPOEMS::init() if (inertia[ibody][0] < EPSILON*max || inertia[ibody][1] < EPSILON*max || inertia[ibody][2] < EPSILON*max) - error->all("Rigid body has degenerate moment of inertia"); + error->all(FLERR,"Rigid body has degenerate moment of inertia"); // enforce 3 evectors as a right-handed coordinate system // flip 3rd evector if needed @@ -576,11 +573,11 @@ void FixPOEMS::init() if (fabs(all[ibody][0]-inertia[ibody][0]) > TOLERANCE || fabs(all[ibody][1]-inertia[ibody][1]) > TOLERANCE || fabs(all[ibody][2]-inertia[ibody][2]) > TOLERANCE) - error->all("Bad principal moments"); + error->all(FLERR,"Bad principal moments"); if (fabs(all[ibody][3]) > TOLERANCE || fabs(all[ibody][4]) > TOLERANCE || fabs(all[ibody][5]) > TOLERANCE) - error->all("Bad principal moments"); + error->all(FLERR,"Bad principal moments"); } } @@ -888,7 +885,7 @@ void FixPOEMS::readfile(char *file) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix poems file %s",file); - error->one(str); + error->one(FLERR,str); } } @@ -1020,7 +1017,7 @@ void FixPOEMS::jointbuild() // warning if no joints if (njoint == 0 && me == 0) - error->warning("No joints between rigid bodies, use fix rigid instead"); + error->warning(FLERR,"No joints between rigid bodies, use fix rigid instead"); // sort joint list in ascending order by body indices // check for loops in joint connections between rigid bodies @@ -1029,7 +1026,7 @@ void FixPOEMS::jointbuild() sortlist(njoint,jlist); if (loopcheck(nbody,njoint,jlist)) - error->all("Cyclic loop in joint connections"); + error->all(FLERR,"Cyclic loop in joint connections"); int *bodyflag = new int[nbody]; for (i = 0; i < nbody; i++) bodyflag[i] = 0; @@ -1038,7 +1035,7 @@ void FixPOEMS::jointbuild() bodyflag[jlist[i][1]]++; } for (i = 0; i < nbody; i++) - if (bodyflag[i] > 2) error->all("Tree structure in joint connections"); + if (bodyflag[i] > 2) error->all(FLERR,"Tree structure in joint connections"); delete [] bodyflag; // allocate and setup joint arrays diff --git a/src/Package.sh b/src/Package.sh index fb3694bb4e..78b7b7a10b 100644 --- a/src/Package.sh +++ b/src/Package.sh @@ -1,5 +1,5 @@ # Package.sh = package management, called from Makefile -# Syntax: sh Package.sh DIR status/update/overwrite/regenerate/diff +# Syntax: sh Package.sh DIR status/update/overwrite/diff # style used to translate dir name to package name @@ -79,15 +79,6 @@ elif (test $2 = "overwrite") then echo " $1 package is not installed, no action" fi -# regenenate Makefile.package from Makefile.package.empty -# if installed: -# re-install so Install.sh will edit Makefile.package - -elif (test $2 = "regenerate") then - if (test $installed = 1) then - /bin/sh Install.sh 1 - fi - # diff # if installed: # show any differences between src files and package files diff --git a/src/REAX/fix_reax_bonds.cpp b/src/REAX/fix_reax_bonds.cpp index 67317bd6dc..ddd5b5eaa3 100644 --- a/src/REAX/fix_reax_bonds.cpp +++ b/src/REAX/fix_reax_bonds.cpp @@ -37,19 +37,19 @@ using namespace LAMMPS_NS; FixReaxBonds::FixReaxBonds(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 5) error->all("Illegal fix reax/bonds command"); + if (narg < 5) error->all(FLERR,"Illegal fix reax/bonds command"); MPI_Comm_rank(world,&me); nevery = atoi(arg[3]); - if (nevery < 1) error->all("Illegal fix reax/bonds command"); + if (nevery < 1) error->all(FLERR,"Illegal fix reax/bonds command"); if (me == 0) { fp = fopen(arg[4],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix reax/bonds file %s",arg[4]); - error->one(str); + error->one(FLERR,str); } } } @@ -86,7 +86,7 @@ void FixReaxBonds::init() // insure ReaxFF is defined if (force->pair_match("reax",1) == NULL) - error->all("Cannot use fix reax/bonds without pair_style reax"); + error->all(FLERR,"Cannot use fix reax/bonds without pair_style reax"); } /* ---------------------------------------------------------------------- */ @@ -195,7 +195,7 @@ void FixReaxBonds::OutputReaxBonds(bigint ntimestep, FILE *fp) if (numbonds > nsbmax_most) { char str[128]; sprintf(str,"Fix reax/bonds numbonds > nsbmax_most"); - error->one(str); + error->one(FLERR,str); } // print connection table diff --git a/src/REAX/pair_reax.cpp b/src/REAX/pair_reax.cpp index 6e9e3020f0..38aafd89f0 100644 --- a/src/REAX/pair_reax.cpp +++ b/src/REAX/pair_reax.cpp @@ -39,8 +39,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) #define SMALL 0.0001 /* ---------------------------------------------------------------------- */ @@ -48,6 +46,7 @@ using namespace LAMMPS_NS; PairREAX::PairREAX(LAMMPS *lmp) : Pair(lmp) { single_enable = 0; + restartinfo = 0; one_coeff = 1; no_virial_fdotr_compute = 1; @@ -278,7 +277,7 @@ void PairREAX::write_reax_positions() FORTRAN(rsmall, RSMALL).na_local = nlocal; if (nlocal+nghost > ReaxParams::nat) - error->one("Reax_defs.h setting for NATDEF is too small"); + error->one(FLERR,"Reax_defs.h setting for NATDEF is too small"); jx = 0; jy = ReaxParams::nat; @@ -361,7 +360,7 @@ void PairREAX::write_reax_vlist() jjj = i+1; } if (nvpair >= nvpairmax) - error->one("Reax_defs.h setting for NNEIGHMAXDEF is too small"); + error->one(FLERR,"Reax_defs.h setting for NNEIGHMAXDEF is too small"); FORTRAN(cbkpairs, CBKPAIRS).nvl1[nvpair] = iii; FORTRAN(cbkpairs, CBKPAIRS).nvl2[nvpair] = jjj; @@ -420,7 +419,7 @@ void PairREAX::write_reax_vlist() jjj = j+1; if (nvpair >= nvpairmax) - error->one("Reax_defs.h setting for NNEIGHMAXDEF is too small"); + error->one(FLERR,"Reax_defs.h setting for NNEIGHMAXDEF is too small"); FORTRAN(cbkpairs, CBKPAIRS).nvl1[nvpair] = iii; FORTRAN(cbkpairs, CBKPAIRS).nvl2[nvpair] = jjj; @@ -485,7 +484,7 @@ void PairREAX::allocate() void PairREAX::settings(int narg, char **arg) { - if (narg != 0 && narg !=4) error->all("Illegal pair_style command"); + if (narg != 0 && narg !=4) error->all(FLERR,"Illegal pair_style command"); if (narg == 4) { hbcut = force->numeric(arg[0]); @@ -497,7 +496,7 @@ void PairREAX::settings(int narg, char **arg) (ihbnew != 0 && ihbnew != 1) || (itripstaball != 0 && itripstaball != 1) || precision <= 0.0) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); } } @@ -510,17 +509,17 @@ void PairREAX::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure filename is ffield.reax if (strcmp(arg[2],"ffield.reax") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read args that map atom types to elements in potential file // map[i] = which element the Ith atom type is, -1 if NULL @@ -530,7 +529,7 @@ void PairREAX::coeff(int narg, char **arg) for (int i = 3; i < narg; i++) { if (strcmp(arg[i],"NULL") == 0) { map[i-2] = -1; - error->all("Cannot currently use pair reax with pair hybrid"); + error->all(FLERR,"Cannot currently use pair reax with pair hybrid"); continue; } map[i-2] = force->inumeric(arg[i]); @@ -545,7 +544,7 @@ void PairREAX::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -555,11 +554,11 @@ void PairREAX::coeff(int narg, char **arg) void PairREAX::init_style() { if (atom->tag_enable == 0) - error->all("Pair style reax requires atom IDs"); + error->all(FLERR,"Pair style reax requires atom IDs"); if (force->newton_pair == 0) - error->all("Pair style reax requires newton pair on"); + error->all(FLERR,"Pair style reax requires newton pair on"); if (strcmp(update->unit_style,"real") != 0 && comm->me == 0) - error->warning("Not using real units with pair reax"); + error->warning(FLERR,"Not using real units with pair reax"); int irequest = neighbor->request(this); neighbor->requests[irequest]->newton = 2; @@ -595,7 +594,7 @@ void PairREAX::init_style() double chi, eta, gamma; for (int itype = 1; itype <= atom->ntypes; itype++) { if (map[itype] < 1 || map[itype] > nelements) - error->all("Invalid REAX atom type"); + error->all(FLERR,"Invalid REAX atom type"); chi = FORTRAN(cbkchb, CBKCHB).chi[map[itype]-1]; eta = FORTRAN(cbkchb, CBKCHB).eta[map[itype]-1]; gamma = FORTRAN(cbkchb, CBKCHB).gam[map[itype]-1]; diff --git a/src/REPLICA/compute_event_displace.cpp b/src/REPLICA/compute_event_displace.cpp index 53e9d9f8f9..3f5f401c4b 100644 --- a/src/REPLICA/compute_event_displace.cpp +++ b/src/REPLICA/compute_event_displace.cpp @@ -37,14 +37,14 @@ using namespace LAMMPS_NS; ComputeEventDisplace::ComputeEventDisplace(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 4) error->all("Illegal compute event/displace command"); + if (narg != 4) error->all(FLERR,"Illegal compute event/displace command"); scalar_flag = 1; extscalar = 0; double displace_dist = atof(arg[3]); if (displace_dist <= 0.0) - error->all("Distance must be > 0 for compute event/displace"); + error->all(FLERR,"Distance must be > 0 for compute event/displace"); displace_distsq = displace_dist * displace_dist; // fix event ID will be set later by PRD @@ -69,12 +69,12 @@ void ComputeEventDisplace::init() if (id_event != NULL) { int ifix = modify->find_fix(id_event); - if (ifix < 0) error->all("Could not find compute event/displace fix ID"); + if (ifix < 0) error->all(FLERR,"Could not find compute event/displace fix ID"); fix_event = (FixEvent*) modify->fix[ifix]; if (strcmp(fix_event->style,"EVENT/PRD") != 0 && strcmp(fix_event->style,"EVENT/TAD") != 0) - error->all("Compute event/displace has invalid fix event assigned"); + error->all(FLERR,"Compute event/displace has invalid fix event assigned"); } triclinic = domain->triclinic; diff --git a/src/REPLICA/fix_event.cpp b/src/REPLICA/fix_event.cpp index 1b4f795e37..1277135502 100644 --- a/src/REPLICA/fix_event.cpp +++ b/src/REPLICA/fix_event.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; FixEvent::FixEvent(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 3) error->all("Illegal fix event command"); + if (narg != 3) error->all(FLERR,"Illegal fix event command"); restart_global = 1; diff --git a/src/REPLICA/fix_event_prd.cpp b/src/REPLICA/fix_event_prd.cpp index ac428f3713..84dedd18fd 100644 --- a/src/REPLICA/fix_event_prd.cpp +++ b/src/REPLICA/fix_event_prd.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; FixEventPRD::FixEventPRD(LAMMPS *lmp, int narg, char **arg) : FixEvent(lmp, narg, arg) { - if (narg != 3) error->all("Illegal fix event command"); + if (narg != 3) error->all(FLERR,"Illegal fix event command"); restart_global = 1; diff --git a/src/REPLICA/fix_event_tad.cpp b/src/REPLICA/fix_event_tad.cpp index 950fcd6b80..7574b4873f 100644 --- a/src/REPLICA/fix_event_tad.cpp +++ b/src/REPLICA/fix_event_tad.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; FixEventTAD::FixEventTAD(LAMMPS *lmp, int narg, char **arg) : FixEvent(lmp, narg, arg) { - if (narg != 3) error->all("Illegal fix event command"); + if (narg != 3) error->all(FLERR,"Illegal fix event command"); restart_global = 1; diff --git a/src/REPLICA/fix_neb.cpp b/src/REPLICA/fix_neb.cpp index 958aaa6cfe..d244ea7a8e 100644 --- a/src/REPLICA/fix_neb.cpp +++ b/src/REPLICA/fix_neb.cpp @@ -27,18 +27,15 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixNEB::FixNEB(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 4) error->all("Illegal fix neb command"); + if (narg != 4) error->all(FLERR,"Illegal fix neb command"); kspring = atof(arg[3]); - if (kspring <= 0.0) error->all("Illegal fix neb command"); + if (kspring <= 0.0) error->all(FLERR,"Illegal fix neb command"); // nreplica = number of partitions // ireplica = which world I am in universe @@ -98,7 +95,7 @@ void FixNEB::init() { int icompute = modify->find_compute(id_pe); if (icompute < 0) - error->all("Potential energy ID for fix neb does not exist"); + error->all(FLERR,"Potential energy ID for fix neb does not exist"); pe = modify->compute[icompute]; // turn off climbing mode, NEB command turns it on after init() @@ -156,7 +153,7 @@ void FixNEB::min_post_force(int vflag) double **x = atom->x; int *mask = atom->mask; int nlocal = atom->nlocal; - if (nlocal != nebatoms) error->one("Atom count changed in fix neb"); + if (nlocal != nebatoms) error->one(FLERR,"Atom count changed in fix neb"); if (ireplica > 0) MPI_Irecv(xprev[0],3*nlocal,MPI_DOUBLE,procprev,0,uworld,&request); diff --git a/src/REPLICA/neb.cpp b/src/REPLICA/neb.cpp index 6768b89acd..c8747aa811 100644 --- a/src/REPLICA/neb.cpp +++ b/src/REPLICA/neb.cpp @@ -101,9 +101,9 @@ NEB::~NEB() void NEB::command(int narg, char **arg) { if (domain->box_exist == 0) - error->all("NEB command before simulation box is defined"); + error->all(FLERR,"NEB command before simulation box is defined"); - if (narg != 6) error->universe_all("Illegal NEB command"); + if (narg != 6) error->universe_all(FLERR,"Illegal NEB command"); etol = atof(arg[0]); ftol = atof(arg[1]); @@ -114,11 +114,11 @@ void NEB::command(int narg, char **arg) // error checks - if (etol < 0.0) error->all("Illegal NEB command"); - if (ftol < 0.0) error->all("Illegal NEB command"); - if (nevery == 0) error->universe_all("Illegal NEB command"); + if (etol < 0.0) error->all(FLERR,"Illegal NEB command"); + if (ftol < 0.0) error->all(FLERR,"Illegal NEB command"); + if (nevery == 0) error->universe_all(FLERR,"Illegal NEB command"); if (n1steps % nevery || n2steps % nevery) - error->universe_all("Illegal NEB command"); + error->universe_all(FLERR,"Illegal NEB command"); // replica info @@ -130,13 +130,13 @@ void NEB::command(int narg, char **arg) // error checks - if (nreplica == 1) error->all("Cannot use NEB with a single replica"); + if (nreplica == 1) error->all(FLERR,"Cannot use NEB with a single replica"); if (nreplica != universe->nprocs) - error->all("Can only use NEB with 1-processor replicas"); + error->all(FLERR,"Can only use NEB with 1-processor replicas"); if (atom->sortfreq > 0) - error->all("Cannot use NEB with atom_modify sort enabled"); + error->all(FLERR,"Cannot use NEB with atom_modify sort enabled"); if (atom->map_style == 0) - error->all("Cannot use NEB unless atom map exists"); + error->all(FLERR,"Cannot use NEB unless atom map exists"); // read in file of final state atom coords and reset my coords @@ -163,7 +163,7 @@ void NEB::run() int ineb; for (ineb = 0; ineb < modify->nfix; ineb++) if (strcmp(modify->fix[ineb]->style,"neb") == 0) break; - if (ineb == modify->nfix) error->all("NEB requires use of fix neb"); + if (ineb == modify->nfix) error->all(FLERR,"NEB requires use of fix neb"); fneb = (FixNEB *) modify->fix[ineb]; nall = 4; @@ -180,7 +180,7 @@ void NEB::run() lmp->init(); if (update->minimize->searchflag) - error->all("NEB requires damped dynamics minimizer"); + error->all(FLERR,"NEB requires damped dynamics minimizer"); // setup regular NEB minimization @@ -192,7 +192,7 @@ void NEB::run() update->nsteps = n1steps; update->max_eval = n1steps; if (update->laststep < 0 || update->laststep > MAXBIGINT) - error->all("Too many timesteps for NEB"); + error->all(FLERR,"Too many timesteps for NEB"); update->minimize->setup(); @@ -259,7 +259,7 @@ void NEB::run() update->nsteps = n2steps; update->max_eval = n2steps; if (update->laststep < 0 || update->laststep > MAXBIGINT) - error->all("Too many timesteps"); + error->all(FLERR,"Too many timesteps"); update->minimize->init(); fneb->rclimber = top; @@ -354,7 +354,7 @@ void NEB::readfile(char *file) if (firstline) { if (atom->count_words(bufptr) == 4) firstline = 0; - else error->all("Incorrect format in NEB coordinate file"); + else error->all(FLERR,"Incorrect format in NEB coordinate file"); } sscanf(bufptr,"%d %lg %lg %lg",&tag,&xx,&yy,&zz); @@ -410,14 +410,14 @@ void NEB::open(char *file) sprintf(gunzip,"gunzip -c %s",file); fp = popen(gunzip,"r"); #else - error->one("Cannot open gzipped file"); + error->one(FLERR,"Cannot open gzipped file"); #endif } if (fp == NULL) { char str[128]; sprintf(str,"Cannot open file %s",file); - error->one(str); + error->one(FLERR,str); } } diff --git a/src/REPLICA/prd.cpp b/src/REPLICA/prd.cpp index 85d1b49062..909d7e35ec 100644 --- a/src/REPLICA/prd.cpp +++ b/src/REPLICA/prd.cpp @@ -63,15 +63,15 @@ void PRD::command(int narg, char **arg) // error checks if (domain->box_exist == 0) - error->all("PRD command before simulation box is defined"); + error->all(FLERR,"PRD command before simulation box is defined"); if (universe->nworlds != universe->nprocs && atom->map_style == 0) - error->all("Cannot use PRD with multi-processor replicas " + error->all(FLERR,"Cannot use PRD with multi-processor replicas " "unless atom map exists"); if (universe->nworlds == 1 && comm->me == 0) - error->warning("Running PRD with only one replica"); + error->warning(FLERR,"Running PRD with only one replica"); - if (narg < 7) error->universe_all("Illegal prd command"); + if (narg < 7) error->universe_all(FLERR,"Illegal prd command"); nsteps = atoi(arg[0]); t_event = atoi(arg[1]); @@ -87,11 +87,11 @@ void PRD::command(int narg, char **arg) // total # of timesteps must be multiple of t_event - if (t_event <= 0) error->universe_all("Invalid t_event in prd command"); + if (t_event <= 0) error->universe_all(FLERR,"Invalid t_event in prd command"); if (nsteps % t_event) - error->universe_all("PRD nsteps must be multiple of t_event"); + error->universe_all(FLERR,"PRD nsteps must be multiple of t_event"); if (t_corr % t_event) - error->universe_all("PRD t_corr must be multiple of t_event"); + error->universe_all(FLERR,"PRD t_corr must be multiple of t_event"); // local storage @@ -184,7 +184,7 @@ void PRD::command(int narg, char **arg) // necessary so it will know atom coords at last event int icompute = modify->find_compute(id_compute); - if (icompute < 0) error->all("Could not find compute ID for PRD"); + if (icompute < 0) error->all(FLERR,"Could not find compute ID for PRD"); compute_event = modify->compute[icompute]; compute_event->reset_extra_compute_fix("prd_event"); @@ -196,7 +196,7 @@ void PRD::command(int narg, char **arg) if (neigh_every != 1 || neigh_delay != 0 || neigh_dist_check != 1) { if (me == 0) - error->warning("Resetting reneighboring criteria during PRD"); + error->warning(FLERR,"Resetting reneighboring criteria during PRD"); } neighbor->every = 1; @@ -211,7 +211,7 @@ void PRD::command(int narg, char **arg) update->endstep = update->laststep = update->firststep + nsteps; update->restrict_output = 1; if (update->laststep < 0 || update->laststep > MAXBIGINT) - error->all("Too many timesteps"); + error->all(FLERR,"Too many timesteps"); lmp->init(); @@ -227,14 +227,14 @@ void PRD::command(int narg, char **arg) for (int i = 0; i < modify->nfix; i++) if (modify->fix[i]->time_depend) - error->all("Cannot use PRD with a time-dependent fix defined"); + error->all(FLERR,"Cannot use PRD with a time-dependent fix defined"); for (int i = 0; i < domain->nregion; i++) if (domain->regions[i]->dynamic_check()) - error->all("Cannot use PRD with a time-dependent region defined"); + error->all(FLERR,"Cannot use PRD with a time-dependent region defined"); if (atom->sortfreq > 0) - error->all("Cannot use PRD with atom_modify sort enabled"); + error->all(FLERR,"Cannot use PRD with atom_modify sort enabled"); // perform PRD simulation @@ -499,7 +499,7 @@ void PRD::quench() update->nsteps = maxiter; update->endstep = update->laststep = update->firststep + maxiter; if (update->laststep < 0 || update->laststep > MAXBIGINT) - error->all("Too many iterations"); + error->all(FLERR,"Too many iterations"); // full init works @@ -753,7 +753,7 @@ void PRD::replicate(int ireplica) void PRD::options(int narg, char **arg) { - if (narg < 0) error->all("Illegal prd command"); + if (narg < 0) error->all(FLERR,"Illegal prd command"); // set defaults @@ -776,42 +776,42 @@ void PRD::options(int narg, char **arg) int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"min") == 0) { - if (iarg+5 > narg) error->all("Illegal prd command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal prd command"); etol = atof(arg[iarg+1]); ftol = atof(arg[iarg+2]); maxiter = atoi(arg[iarg+3]); maxeval = atoi(arg[iarg+4]); - if (maxiter < 0) error->all("Illegal prd command"); + if (maxiter < 0) error->all(FLERR,"Illegal prd command"); iarg += 5; } else if (strcmp(arg[iarg],"temp") == 0) { - if (iarg+2 > narg) error->all("Illegal prd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal prd command"); temp_flag = 1; temp_dephase = atof(arg[iarg+1]); - if (temp_dephase <= 0.0) error->all("Illegal prd command"); + if (temp_dephase <= 0.0) error->all(FLERR,"Illegal prd command"); iarg += 2; } else if (strcmp(arg[iarg],"vel") == 0) { - if (iarg+3 > narg) error->all("Illegal prd command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal prd command"); delete [] loop_setting; delete [] dist_setting; if (strcmp(arg[iarg+1],"all") == 0) loop_setting = NULL; else if (strcmp(arg[iarg+1],"local") == 0) loop_setting = NULL; else if (strcmp(arg[iarg+1],"geom") == 0) loop_setting = NULL; - else error->all("Illegal prd command"); + else error->all(FLERR,"Illegal prd command"); int n = strlen(arg[iarg+1]) + 1; loop_setting = new char[n]; strcpy(loop_setting,arg[iarg+1]); if (strcmp(arg[iarg+2],"uniform") == 0) dist_setting = NULL; else if (strcmp(arg[iarg+2],"gaussian") == 0) dist_setting = NULL; - else error->all("Illegal prd command"); + else error->all(FLERR,"Illegal prd command"); n = strlen(arg[iarg+2]) + 1; dist_setting = new char[n]; strcpy(dist_setting,arg[iarg+2]); iarg += 3; - } else error->all("Illegal prd command"); + } else error->all(FLERR,"Illegal prd command"); } } diff --git a/src/REPLICA/tad.cpp b/src/REPLICA/tad.cpp index 8241d407a7..3f4ba9c160 100644 --- a/src/REPLICA/tad.cpp +++ b/src/REPLICA/tad.cpp @@ -80,17 +80,17 @@ void TAD::command(int narg, char **arg) // error checks if (domain->box_exist == 0) - error->all("Tad command before simulation box is defined"); + error->all(FLERR,"Tad command before simulation box is defined"); if (universe->nworlds == 1) - error->all("Cannot use TAD with a single replica for NEB"); + error->all(FLERR,"Cannot use TAD with a single replica for NEB"); if (universe->nworlds != universe->nprocs) - error->all("Can only use TAD with 1-processor replicas for NEB"); + error->all(FLERR,"Can only use TAD with 1-processor replicas for NEB"); if (atom->sortfreq > 0) - error->all("Cannot use TAD with atom_modify sort enabled for NEB"); + error->all(FLERR,"Cannot use TAD with atom_modify sort enabled for NEB"); if (atom->map_style == 0) - error->all("Cannot use TAD unless atom map exists for NEB"); + error->all(FLERR,"Cannot use TAD unless atom map exists for NEB"); - if (narg < 7) error->universe_all("Illegal tad command"); + if (narg < 7) error->universe_all(FLERR,"Illegal tad command"); nsteps = atoi(arg[0]); t_event = atoi(arg[1]); @@ -106,15 +106,15 @@ void TAD::command(int narg, char **arg) // total # of timesteps must be multiple of t_event - if (t_event <= 0) error->universe_all("Invalid t_event in tad command"); + if (t_event <= 0) error->universe_all(FLERR,"Invalid t_event in tad command"); if (nsteps % t_event) - error->universe_all("TAD nsteps must be multiple of t_event"); + error->universe_all(FLERR,"TAD nsteps must be multiple of t_event"); if (delta_conf <= 0.0 || delta_conf >= 1.0) - error->universe_all("Invalid delta_conf in tad command"); + error->universe_all(FLERR,"Invalid delta_conf in tad command"); if (tmax <= 0.0) - error->universe_all("Invalid tmax in tad command"); + error->universe_all(FLERR,"Invalid tmax in tad command"); // deltconf = (ln(1/delta))/freq_min (timestep units) @@ -171,7 +171,7 @@ void TAD::command(int narg, char **arg) // necessary so it will know atom coords at last event int icompute = modify->find_compute(id_compute); - if (icompute < 0) error->all("Could not find compute ID for TAD"); + if (icompute < 0) error->all(FLERR,"Could not find compute ID for TAD"); compute_event = modify->compute[icompute]; compute_event->reset_extra_compute_fix("tad_event"); @@ -183,7 +183,7 @@ void TAD::command(int narg, char **arg) if (neigh_every != 1 || neigh_delay != 0 || neigh_dist_check != 1) { if (me_universe == 0) - error->warning("Resetting reneighboring criteria during TAD"); + error->warning(FLERR,"Resetting reneighboring criteria during TAD"); } neighbor->every = 1; @@ -198,7 +198,7 @@ void TAD::command(int narg, char **arg) update->endstep = update->laststep = update->firststep + nsteps; update->restrict_output = 1; if (update->laststep < 0 || update->laststep > MAXBIGINT) - error->all("Too many timesteps"); + error->all(FLERR,"Too many timesteps"); lmp->init(); @@ -470,7 +470,7 @@ void TAD::quench() update->nsteps = maxiter; update->endstep = update->laststep = update->firststep + maxiter; if (update->laststep < 0 || update->laststep > MAXBIGINT) - error->all("Too many iterations"); + error->all(FLERR,"Too many iterations"); // full init works @@ -570,7 +570,7 @@ void TAD::log_event(int ievent) void TAD::options(int narg, char **arg) { - if (narg < 0) error->all("Illegal tad command"); + if (narg < 0) error->all(FLERR,"Illegal tad command"); // set defaults @@ -594,18 +594,18 @@ void TAD::options(int narg, char **arg) int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"min") == 0) { - if (iarg+5 > narg) error->all("Illegal tad command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal tad command"); etol = atof(arg[iarg+1]); ftol = atof(arg[iarg+2]); maxiter = atoi(arg[iarg+3]); maxeval = atoi(arg[iarg+4]); if (maxiter < 0 || maxeval < 0 || etol < 0.0 || ftol < 0.0 ) - error->all("Illegal tad command"); + error->all(FLERR,"Illegal tad command"); iarg += 5; } else if (strcmp(arg[iarg],"neb") == 0) { - if (iarg+6 > narg) error->all("Illegal tad command"); + if (iarg+6 > narg) error->all(FLERR,"Illegal tad command"); etol_neb = atof(arg[iarg+1]); ftol_neb = atof(arg[iarg+2]); n1steps_neb = atoi(arg[iarg+3]); @@ -613,11 +613,11 @@ void TAD::options(int narg, char **arg) nevery_neb = atoi(arg[iarg+5]); if (etol_neb < 0.0 || ftol_neb < 0.0 || n1steps_neb < 0 || n2steps_neb < 0 || - nevery_neb < 0) error->all("Illegal tad command"); + nevery_neb < 0) error->all(FLERR,"Illegal tad command"); iarg += 6; } else if (strcmp(arg[iarg],"min_style") == 0) { - if (iarg+2 > narg) error->all("Illegal tad command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal tad command"); int n = strlen(arg[iarg+1]) + 1; delete [] min_style; min_style = new char[n]; @@ -625,7 +625,7 @@ void TAD::options(int narg, char **arg) iarg += 2; } else if (strcmp(arg[iarg],"neb_style") == 0) { - if (iarg+2 > narg) error->all("Illegal tad command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal tad command"); int n = strlen(arg[iarg+1]) + 1; delete [] min_style_neb; min_style_neb = new char[n]; @@ -634,7 +634,7 @@ void TAD::options(int narg, char **arg) } else if (strcmp(arg[iarg],"neb_log") == 0) { delete [] neb_logfilename; - if (iarg+2 > narg) error->all("Illegal tad command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal tad command"); if (strcmp(arg[iarg+1],"none") == 0) neb_logfilename = NULL; else { int n = strlen(arg[iarg+1]) + 1; @@ -642,7 +642,7 @@ void TAD::options(int narg, char **arg) strcpy(neb_logfilename,arg[iarg+1]); } iarg += 2; - } else error->all("Illegal tad command"); + } else error->all(FLERR,"Illegal tad command"); } } diff --git a/src/REPLICA/temper.cpp b/src/REPLICA/temper.cpp index ea8fcfaab6..d95fb3d89b 100644 --- a/src/REPLICA/temper.cpp +++ b/src/REPLICA/temper.cpp @@ -65,10 +65,10 @@ Temper::~Temper() void Temper::command(int narg, char **arg) { if (universe->nworlds == 1) - error->all("Must have more than one processor partition to temper"); + error->all(FLERR,"Must have more than one processor partition to temper"); if (domain->box_exist == 0) - error->all("Temper command before simulation box is defined"); - if (narg != 6 && narg != 7) error->universe_all("Illegal temper command"); + error->all(FLERR,"Temper command before simulation box is defined"); + if (narg != 6 && narg != 7) error->universe_all(FLERR,"Illegal temper command"); int nsteps = atoi(arg[0]); nevery = atoi(arg[1]); @@ -77,7 +77,7 @@ void Temper::command(int narg, char **arg) for (whichfix = 0; whichfix < modify->nfix; whichfix++) if (strcmp(arg[3],modify->fix[whichfix]->id) == 0) break; if (whichfix == modify->nfix) - error->universe_all("Tempering fix ID is not defined"); + error->universe_all(FLERR,"Tempering fix ID is not defined"); seed_swap = atoi(arg[4]); seed_boltz = atoi(arg[5]); @@ -87,10 +87,10 @@ void Temper::command(int narg, char **arg) // swap frequency must evenly divide total # of timesteps - if (nevery == 0) error->universe_all("Invalid frequency in temper command"); + if (nevery == 0) error->universe_all(FLERR,"Invalid frequency in temper command"); nswaps = nsteps/nevery; if (nswaps*nevery != nsteps) - error->universe_all("Non integer # of swaps in temper command"); + error->universe_all(FLERR,"Non integer # of swaps in temper command"); // fix style must be appropriate for temperature control @@ -98,7 +98,7 @@ void Temper::command(int narg, char **arg) (strcmp(modify->fix[whichfix]->style,"langevin") != 0) && (strcmp(modify->fix[whichfix]->style,"temp/berendsen") != 0) && (strcmp(modify->fix[whichfix]->style,"temp/rescale") != 0)) - error->universe_all("Tempering temperature fix is not valid"); + error->universe_all(FLERR,"Tempering temperature fix is not valid"); // setup for long tempering run @@ -107,7 +107,7 @@ void Temper::command(int narg, char **arg) update->beginstep = update->firststep = update->ntimestep; update->endstep = update->laststep = update->firststep + nsteps; if (update->laststep < 0 || update->laststep > MAXBIGINT) - error->all("Too many timesteps"); + error->all(FLERR,"Too many timesteps"); lmp->init(); @@ -123,7 +123,7 @@ void Temper::command(int narg, char **arg) // notify compute it will be called at first swap int id = modify->find_compute("thermo_pe"); - if (id < 0) error->all("Tempering could not find thermo_pe compute"); + if (id < 0) error->all(FLERR,"Tempering could not find thermo_pe compute"); Compute *pe_compute = modify->compute[id]; pe_compute->addstep(update->ntimestep + nevery); diff --git a/src/SHOCK/Install.sh b/src/SHOCK/Install.sh index 642f0839c5..1931770eec 100644 --- a/src/SHOCK/Install.sh +++ b/src/SHOCK/Install.sh @@ -2,14 +2,26 @@ if (test $1 = 1) then - cp fix_msst.cpp fix_nphug.cpp .. + cp fix_append_atoms.cpp .. + cp fix_msst.cpp .. + cp fix_nphug.cpp .. + cp fix_wall_piston.cpp .. - cp fix_msst.h fix_nphug.h .. + cp fix_append_atoms.h .. + cp fix_msst.h .. + cp fix_nphug.h .. + cp fix_wall_piston.h .. elif (test $1 = 0) then - rm -f ../fix_msst.cpp ../fix_nphug.cpp + rm -f ../fix_append_atoms.cpp + rm -f ../fix_msst.cpp + rm -f ../fix_nphug.cpp + rm -f ../fix_wall_piston.cpp - rm -f ../fix_msst.h ../fix_nphug.h + rm -f ../fix_append_atoms.h + rm -f ../fix_msst.h + rm -f ../fix_nphug.h + rm -f ../fix_wall_piston.h fi diff --git a/src/SHOCK/fix_append_atoms.cpp b/src/SHOCK/fix_append_atoms.cpp new file mode 100644 index 0000000000..9d59470f0d --- /dev/null +++ b/src/SHOCK/fix_append_atoms.cpp @@ -0,0 +1,498 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "string.h" +#include "stdlib.h" +#include "fix_append_atoms.h" +#include "atom.h" +#include "atom_vec.h" +#include "comm.h" +#include "modify.h" +#include "domain.h" +#include "lattice.h" +#include "update.h" +#include "random_mars.h" +#include "error.h" +#include "force.h" + +using namespace LAMMPS_NS; + +#define BIG 1.0e30 +#define EPSILON 1.0e-6 + +/* ---------------------------------------------------------------------- */ + +FixAppendAtoms::FixAppendAtoms(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + force_reneighbor = 1; + next_reneighbor = -1; + box_change = 1; + time_depend = 1; + + if (narg < 4) error->all(FLERR,"Illegal fix append_atoms command"); + + scaleflag = 1; + spatflag=0; + xloflag = xhiflag = yloflag = yhiflag = zloflag = zhiflag = 0; + + tempflag = 0; + + ranflag = 0; + ranx = 0.0; + rany = 0.0; + ranz = 0.0; + + randomx = NULL; + randomt = NULL; + + int iarg = 0; + iarg = 3; + while (iarg < narg) { + if (strcmp(arg[iarg],"xlo") == 0) { + error->all(FLERR,"Only zhi currently implemented for append_atoms"); + xloflag = 1; + iarg++; + if (domain->boundary[0][0] != 3) + error->all(FLERR, + "Must shrink-wrap with minimum the append boundary"); + } else if (strcmp(arg[iarg],"xhi") == 0) { + error->all(FLERR,"Only zhi currently implemented for append_atom"); + xhiflag = 1; + iarg++; + if (domain->boundary[0][1] != 3) + error->all(FLERR, + "Must shrink-wrap with minimum the append boundary"); + } else if (strcmp(arg[iarg],"ylo") == 0) { + error->all(FLERR,"Only zhi currently implemented for append_atom"); + yloflag = 1; + iarg++; + if (domain->boundary[1][0] != 3) + error->all(FLERR, + "Must shrink-wrap with minimum the append boundary"); + } else if (strcmp(arg[iarg],"yhi") == 0) { + error->all(FLERR,"Only zhi currently implemented for append_atom"); + yhiflag = 1; + iarg++; + if (domain->boundary[1][1] != 3) + error->all(FLERR, + "Must shrink-wrap with minimum the append boundary"); + } else if (strcmp(arg[iarg],"zlo") == 0) { + error->all(FLERR,"Only zhi currently implemented for append_atom"); + zloflag = 1; + iarg++; + if (domain->boundary[2][0] != 3) + error->all(FLERR, + "Must shrink-wrap with minimum the append boundary"); + } else if (strcmp(arg[iarg],"zhi") == 0) { + zhiflag = 1; + iarg++; + if (domain->boundary[2][1] != 3) + error->all(FLERR, + "Must shrink-wrap with minimum the append boundary"); + } else if (strcmp(arg[iarg],"freq") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix append_atoms command"); + freq = atoi(arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"spatial") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal fix append_atoms command"); + if (strcmp(arg[iarg+1],"f_") == 0) + error->all(FLERR, + "Bad fix ID in fix append_atoms command"); + spatflag = 1; + int n = strlen(arg[iarg+1]); + spatlead = atof(arg[iarg+2]); + char *suffix = new char[n]; + strcpy(suffix,&arg[iarg+1][2]); + n = strlen(suffix) + 1; + spatialid = new char[n]; + strcpy(spatialid,suffix); + delete [] suffix; + iarg += 3; + // NEED TO CHECK TO MAKE SURE FIX IS AN AVE/SPATIAL + } else if (strcmp(arg[iarg],"size") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix append_atoms command"); + size = atof(arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"units") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix append_atoms command"); + if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; + else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; + else error->all(FLERR,"Illegal fix append_atoms command"); + iarg += 2; + } else if (strcmp(arg[iarg],"random") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal fix append_atoms command"); + ranflag = 1; + ranx = atof(arg[iarg+1]); + rany = atof(arg[iarg+2]); + ranz = atof(arg[iarg+3]); + xseed = atoi(arg[iarg+4]); + if (xseed <= 0) error->all(FLERR,"Illegal fix append_atoms command"); + randomx = new RanMars(lmp,xseed + comm->me); + iarg += 5; + } else if (strcmp(arg[iarg],"temp") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal fix append_atoms command"); + tempflag = 1; + t_target = atof(arg[iarg+1]); + t_period = atof(arg[iarg+2]); + tseed = atoi(arg[iarg+3]); + t_extent = atof(arg[iarg+4]); + if (t_target <= 0) error->all(FLERR,"Illegal fix append_atoms command"); + if (t_period <= 0) error->all(FLERR,"Illegal fix append_atoms command"); + if (t_extent <= 0) error->all(FLERR,"Illegal fix append_atoms command"); + if (tseed <= 0) error->all(FLERR,"Illegal fix append_atoms command"); + randomt = new RanMars(lmp,tseed + comm->me); + gfactor1 = new double[atom->ntypes+1]; + gfactor2 = new double[atom->ntypes+1]; + iarg += 5; + } else error->all(FLERR,"Illegal fix append_atoms command"); + } + + if ((xloflag || xhiflag) && domain->xperiodic) + error->all(FLERR,"Cannot use append_atoms in periodic dimension"); + if ((yloflag || yhiflag) && domain->yperiodic) + error->all(FLERR,"Cannot use append_atoms in periodic dimension"); + if ((zloflag || zhiflag) && domain->zperiodic) + error->all(FLERR,"Cannot use append_atoms in periodic dimension"); + + if (domain->triclinic == 1) + error->all(FLERR,"Cannot append atoms to a triclinic box"); + + // setup scaling + + if (scaleflag && domain->lattice == NULL) + error->all(FLERR,"Use of fix append_atoms with undefined lattice"); + + double xscale,yscale,zscale; + if (scaleflag) { + xscale = domain->lattice->xlattice; + yscale = domain->lattice->ylattice; + zscale = domain->lattice->zlattice; + } + else xscale = yscale = zscale = 1.0; + + if (xloflag || xhiflag) size *= xscale; + if (yloflag || yhiflag) size *= yscale; + if (zloflag || zhiflag) size *= zscale; + + if (ranflag) { + ranx *= xscale; + rany *= yscale; + ranz *= zscale; + } +} + +/* ---------------------------------------------------------------------- */ + +FixAppendAtoms::~FixAppendAtoms() +{ + if (ranflag) delete randomx; + if (tempflag) { + delete randomt; + delete [] gfactor1; + delete [] gfactor2; + } +} + +/* ---------------------------------------------------------------------- */ + +int FixAppendAtoms::setmask() +{ + int mask = 0; + mask |= PRE_EXCHANGE; + mask |= INITIAL_INTEGRATE; + mask |= POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixAppendAtoms::initial_integrate(int vflag) +{ + if (update->ntimestep % freq == 0) { + next_reneighbor = update->ntimestep; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixAppendAtoms::setup(int vflag) +{ + /*** CALL TO CREATE GROUP? SEE POST_FORCE ***/ + post_force(vflag); +} + + +/* ---------------------------------------------------------------------- */ + +int FixAppendAtoms::get_spatial() +{ + if (update->ntimestep % freq == 0) { + int ifix = modify->find_fix(spatialid); + if (ifix < 0) + error->all(FLERR,"Fix ID for fix ave/spatial does not exist"); + Fix *fix = modify->fix[ifix]; + + int failed = 0; + int count = 0; + while (failed < 2) { + double tmp = fix->compute_vector(2*count); + if (tmp == 0.0) failed++; + else failed = 0; + count++; + } + double pos[count-2]; + double val[count-2]; + for (int loop=0; loop < count-2; loop++) { + pos[loop] = fix->compute_vector(2*loop); + val[loop] = fix->compute_vector(2*loop+1); + } + +// Always ignor the first and last +// SHOULD HAVE A MEMORY OF MIN AND MAX ENERGY +// CAPTURE BINSIZE FROM SPATIAL + + double binsize = 2.0; + double min_energy=0.0; + double max_energy=0.0; + int header = static_cast (size / binsize); + advance = 0; + + for (int loop=1; loop <= header; loop++) { + max_energy += val[loop]; + } + for (int loop=count-2-2*header; loop <=count-3-header; loop++) { + min_energy += val[loop]; + } + max_energy /= header; + min_energy /= header; + + double shockfront_min = 0.0; + double shockfront_max = 0.0; + double shockfront_loc = 0.0; + int front_found1 = 0; + for (int loop=count-3-header; loop > header; loop--) { + if (front_found1 == 1) continue; + if (val[loop] > min_energy + 0.1*(max_energy - min_energy)) { + shockfront_max = pos[loop]; + front_found1=1; + } + } + int front_found2 = 0; + for (int loop=header+1; loop <=count-3-header; loop++) { + if (val[loop] > min_energy + 0.6*(max_energy - min_energy)) { + shockfront_min = pos[loop]; + front_found2=1; + } + } + if (front_found1 + front_found2 == 0) shockfront_loc = 0.0; + else if (front_found1 + front_found2 == 1) shockfront_loc = shockfront_max + shockfront_min; + else if (front_found1 == 1 && front_found2 == 1 && shockfront_max-shockfront_min > spatlead/2.0) shockfront_loc = shockfront_max; + else shockfront_loc = (shockfront_max + shockfront_min) / 2.0; + if (comm->me == 0) printf("SHOCK: %g %g %g %g %g\n", shockfront_loc, shockfront_min, shockfront_max, domain->boxlo[2], domain->boxhi[2]); + + if (domain->boxhi[2] - shockfront_loc < spatlead) advance = 1; + } + + advance_sum = 0; + MPI_Allreduce(&advance,&advance_sum,1,MPI_INT,MPI_SUM,world); + + if (advance_sum > 0) return 1; + else return 0; +} + +/* ---------------------------------------------------------------------- */ + +void FixAppendAtoms::post_force(int vflag) +{ + double **f = atom->f; + double **v = atom->v; + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + + double gamma1,gamma2; + double tsqrt = sqrt(t_target); + + if (atom->mass) { + if (tempflag) { + for (int i = 1; i <= atom->ntypes; i++) { + gfactor1[i] = -atom->mass[i] / t_period / force->ftm2v; + gfactor2[i] = sqrt(atom->mass[i]) * + sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) / + force->ftm2v; + } + } + for (int i = 0; i < nlocal; i++) { + // SET TEMP AHEAD OF SHOCK + if (tempflag && x[i][2] >= domain->boxhi[2] - t_extent ) { + gamma1 = gfactor1[type[i]]; + gamma2 = gfactor2[type[i]] * tsqrt; + f[i][0] += gamma1*v[i][0] + gamma2*(randomt->uniform()-0.5); + f[i][1] += gamma1*v[i][1] + gamma2*(randomt->uniform()-0.5); + f[i][2] += gamma1*v[i][2] + gamma2*(randomt->uniform()-0.5); + } + // FREEZE ATOMS AT BOUNDARY + if (x[i][2] >= domain->boxhi[2] - size) { + f[i][0] = 0.0; + f[i][1] = 0.0; + f[i][2] = 0.0; + v[i][0] = 0.0; + v[i][1] = 0.0; + v[i][2] = 0.0; + } + } + } else { + double *rmass = atom->rmass; + double boltz = force->boltz; + double dt = update->dt; + double mvv2e = force->mvv2e; + double ftm2v = force->ftm2v; + + for (int i = 0; i < nlocal; i++) { + // SET TEMP AHEAD OF SHOCK + if (tempflag && x[i][2] >= domain->boxhi[2] - t_extent ) { + gamma1 = -rmass[i] / t_period / ftm2v; + gamma2 = sqrt(rmass[i]) * sqrt(24.0*boltz/t_period/dt/mvv2e) / ftm2v; + gamma2 *= tsqrt; + f[i][0] += gamma1*v[i][0] + gamma2*(randomt->uniform()-0.5); + f[i][1] += gamma1*v[i][1] + gamma2*(randomt->uniform()-0.5); + f[i][2] += gamma1*v[i][2] + gamma2*(randomt->uniform()-0.5); + } + // FREEZE ATOMS AT BOUNDARY + if (x[i][2] >= domain->boxhi[2] - size) { + f[i][0] = 0.0; + f[i][1] = 0.0; + f[i][2] = 0.0; + v[i][0] = 0.0; + v[i][1] = 0.0; + v[i][2] = 0.0; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixAppendAtoms::pre_exchange() +{ + int ntimestep = update->ntimestep; + int addnode = 0; + + if (ntimestep % freq == 0) { + if (spatflag==1) if (get_spatial()==0) return; + if (comm->myloc[2] == comm->procgrid[2]-1) { + if (domain->lattice) { + nbasis = domain->lattice->nbasis; + basistype = new int[nbasis]; + for (int i = 0; i < nbasis; i++) basistype[i] = 1; + } else error->all(FLERR,"must define lattice to append_atoms"); + + double bboxlo[3],bboxhi[3]; + + bboxlo[0] = domain->sublo[0]; bboxhi[0] = domain->subhi[0]; + bboxlo[1] = domain->sublo[1]; bboxhi[1] = domain->subhi[1]; + bboxlo[2] = domain->subhi[2]; bboxhi[2] = domain->subhi[2]+size; + + double xmin,ymin,zmin,xmax,ymax,zmax; + xmin = ymin = zmin = BIG; + xmax = ymax = zmax = -BIG; + + domain->lattice->bbox(1,bboxlo[0],bboxlo[1],bboxlo[2], + xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxhi[0],bboxlo[1],bboxlo[2], + xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxlo[0],bboxhi[1],bboxlo[2], + xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxhi[0],bboxhi[1],bboxlo[2], + xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxlo[0],bboxlo[1],bboxhi[2], + xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxhi[0],bboxlo[1],bboxhi[2], + xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxlo[0],bboxhi[1],bboxhi[2], + xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxhi[0],bboxhi[1],bboxhi[2], + xmin,ymin,zmin,xmax,ymax,zmax); + + int ilo,ihi,jlo,jhi,klo,khi; + ilo = static_cast (xmin); + jlo = static_cast (ymin); + klo = static_cast (zmin); + ihi = static_cast (xmax); + jhi = static_cast (ymax); + khi = static_cast (zmax); + + if (xmin < 0.0) ilo--; + if (ymin < 0.0) jlo--; + if (zmin < 0.0) klo--; + + double **basis = domain->lattice->basis; + double x[3]; + double *sublo = domain->sublo; + double *subhi = domain->subhi; + double *mass = atom->mass; + + int i,j,k,m; + for (k = klo; k <= khi; k++) { + for (j = jlo; j <= jhi; j++) { + for (i = ilo; i <= ihi; i++) { + for (m = 0; m < nbasis; m++) { + x[0] = i + basis[m][0]; + x[1] = j + basis[m][1]; + x[2] = k + basis[m][2]; + + int flag = 0; + // convert from lattice coords to box coords + domain->lattice->lattice2box(x[0],x[1],x[2]); + + if (x[0] >= sublo[0] && x[0] < subhi[0] && + x[1] >= sublo[1] && x[1] < subhi[1] && + x[2] >= subhi[2] && x[2] < subhi[2]+size) flag = 1; + else if (domain->dimension == 2 && x[1] >= domain->boxhi[1] && + comm->myloc[1] == comm->procgrid[1]-1 && + x[0] >= sublo[0] && x[0] < subhi[0]) flag = 1; + + if (flag) { + if (ranflag) { + x[0] += ranx * 2.0*(randomx->uniform()-0.5); + x[1] += rany * 2.0*(randomx->uniform()-0.5); + x[2] += ranz * 2.0*(randomx->uniform()-0.5); + } + addnode++; + atom->avec->create_atom(basistype[m],x); + } + } + } + } + } + } + int addtotal = 0; + MPI_Barrier(world); + MPI_Allreduce(&addnode,&addtotal,1,MPI_INT,MPI_SUM,world); + + if (addtotal) { + domain->reset_box(); + if (atom->tag_enable) { + atom->tag_extend(); + atom->natoms += addtotal; + if (atom->map_style) { + atom->nghost = 0; + atom->map_init(); + atom->map_set(); + } + } + } + } +} diff --git a/src/SHOCK/fix_append_atoms.h b/src/SHOCK/fix_append_atoms.h new file mode 100644 index 0000000000..3d101b9212 --- /dev/null +++ b/src/SHOCK/fix_append_atoms.h @@ -0,0 +1,56 @@ +/* ---------------------------------------------------------------------- + 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(append_atoms,FixAppendAtoms) + +#else + +#ifndef FIX_APPEND_ATOMS_H +#define FIX_APPEND_ATOMS_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixAppendAtoms : public Fix { + public: + FixAppendAtoms(class LAMMPS *, int, char **); + ~FixAppendAtoms(); + int setmask(); + void setup(int); + void pre_exchange(); + void initial_integrate(int); + void post_force(int); + + private: + int get_spatial(); + int spatflag, xloflag, xhiflag, yloflag, yhiflag, zloflag, zhiflag; + int ranflag, tempflag, xseed, tseed; + double ranx, rany, ranz, t_target, t_period, t_extent; + class RanMars *randomx; + class RanMars *randomt; + int scaleflag, freq; + int *basistype, nbasis; + int advance, advance_sum; + double size, spatlead; + char *spatialid; + double tfactor; + double *gfactor1,*gfactor2; +}; + +} + +#endif +#endif diff --git a/src/SHOCK/fix_msst.cpp b/src/SHOCK/fix_msst.cpp index 90cb7b3241..1ba47ee146 100644 --- a/src/SHOCK/fix_msst.cpp +++ b/src/SHOCK/fix_msst.cpp @@ -41,7 +41,7 @@ using namespace LAMMPS_NS; FixMSST::FixMSST(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 4) error->all("Illegal fix msst command"); + if (narg < 4) error->all(FLERR,"Illegal fix msst command"); restart_global = 1; box_change = 1; @@ -76,12 +76,12 @@ FixMSST::FixMSST(LAMMPS *lmp, int narg, char **arg) : else if ( strcmp(arg[3],"z") == 0 ) direction = 2; else { - error->all("Illegal fix msst command"); + error->all(FLERR,"Illegal fix msst command"); } velocity = atof(arg[4]); if ( velocity < 0 ) - error->all("Illegal fix msst command"); + error->all(FLERR,"Illegal fix msst command"); for ( int iarg = 5; iarg < narg; iarg++ ) { if ( strcmp(arg[iarg],"q") == 0 ) { @@ -105,9 +105,9 @@ FixMSST::FixMSST(LAMMPS *lmp, int narg, char **arg) : } else if ( strcmp(arg[iarg],"tscale") == 0 ) { tscale = atof(arg[iarg+1]); if (tscale < 0.0 || tscale > 1.0) - error->all("Fix msst tscale must satisfy 0 <= tscale < 1"); + error->all(FLERR,"Fix msst tscale must satisfy 0 <= tscale < 1"); iarg++; - } else error->all("Illegal fix msst command"); + } else error->all(FLERR,"Illegal fix msst command"); } if (comm->me == 0) { @@ -161,7 +161,7 @@ FixMSST::FixMSST(LAMMPS *lmp, int narg, char **arg) : // check for periodicity in controlled dimensions - if (domain->nonperiodic) error->all("Fix msst requires a periodic box"); + if (domain->nonperiodic) error->all(FLERR,"Fix msst requires a periodic box"); // create a new compute temp style // id = fix-ID + temp @@ -267,7 +267,7 @@ int FixMSST::setmask() void FixMSST::init() { if (atom->mass == NULL) - error->all("Cannot use fix msst without per-type mass defined"); + error->all(FLERR,"Cannot use fix msst without per-type mass defined"); // set compute ptrs @@ -275,13 +275,13 @@ void FixMSST::init() int ipress = modify->find_compute(id_press); int ipe = modify->find_compute(id_pe); if (itemp < 0 || ipress < 0|| ipe < 0) - error->all("Could not find fix msst compute ID"); + error->all(FLERR,"Could not find fix msst compute ID"); if (modify->compute[itemp]->tempflag == 0) - error->all("Fix msst compute ID does not compute temperature"); + error->all(FLERR,"Fix msst compute ID does not compute temperature"); if (modify->compute[ipress]->pressflag == 0) - error->all("Fix msst compute ID does not compute pressure"); + error->all(FLERR,"Fix msst compute ID does not compute pressure"); if (modify->compute[ipe]->peflag == 0) - error->all("Fix msst compute ID does not compute potential energy"); + error->all(FLERR,"Fix msst compute ID does not compute potential energy"); temperature = modify->compute[itemp]; pressure = modify->compute[ipress]; @@ -739,7 +739,7 @@ void FixMSST::restart(char *buf) int FixMSST::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -750,18 +750,18 @@ int FixMSST::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != 0 && comm->me == 0) - error->warning("Temperature for MSST is not for group all"); + error->warning(FLERR,"Temperature for MSST is not for group all"); return 2; } else if (strcmp(arg[0],"press") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (pflag) { modify->delete_compute(id_press); pflag = 0; @@ -772,11 +772,11 @@ int FixMSST::modify_param(int narg, char **arg) strcpy(id_press,arg[1]); int icompute = modify->find_compute(id_press); - if (icompute < 0) error->all("Could not find fix_modify pressure ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify pressure ID"); pressure = modify->compute[icompute]; if (pressure->pressflag == 0) - error->all("Fix_modify pressure ID does not compute pressure"); + error->all(FLERR,"Fix_modify pressure ID does not compute pressure"); return 2; } return 0; diff --git a/src/SHOCK/fix_nphug.cpp b/src/SHOCK/fix_nphug.cpp index 0a2c3cded4..32230940d5 100644 --- a/src/SHOCK/fix_nphug.cpp +++ b/src/SHOCK/fix_nphug.cpp @@ -11,55 +11,8 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -/* - - This fix applies the NPHug Hugoniostat method of Ravelo et al. - -(Ravelo, Holian, Germann, and Lomdahl, PRB 70 014103 (2004)) - -It uses the Nose-Hoover thermostat and barostat (fix_nh.html). -The Nose-Hoover barostat is used to compress the system -to a specified final stress state. This is done either -hydrostatically (using keyword iso, aniso, or tri) or uniaxially -(using keywords x, y, or z). In the hydrostatic case, -the cell dimensions change dynamically so that the average axial stress -in all three directions converges towards the specified target value. -In the uniaxial case, the chosen cell dimension changes dynamically -so that the average -axial stress in that direction converges towards the target value. The -other two cell dimensions are kept fixed (zero lateral strain). - -This leads to the following restrictions on the keywords: - -- The specified initial and -final target pressures must be the same. - -- Only one of the following keywords may be used: -iso, aniso, tri, x, y, z, - -- The keywords xy, xz, yz may not be used. - -- The only admissible value for the couple keyword is xyz, -which has the same effect as keyword iso - -- The drag parameter is proportional to the beta_H and beta_p -damping coefficients in the Ravelo paper. - -- The temp keyword serves only to set the value of tdamp. The initial -and final target temperatures are ignored. - -- The values of tdamp and pdamp are inversely proportional to the -coupling rate nu_H and nu_p in the Ravelo paper - -- All other keywords function in the same way. - -*/ - - - - - #include "string.h" +#include "stdlib.h" #include "fix_nphug.h" #include "modify.h" #include "error.h" @@ -67,31 +20,102 @@ coupling rate nu_H and nu_p in the Ravelo paper #include "compute.h" #include "force.h" #include "domain.h" +#include "group.h" +#include "math.h" +#include "memory.h" +#include "comm.h" +#include "math.h" using namespace LAMMPS_NS; +enum{ISO,ANISO,TRICLINIC}; // same as fix_nh.cpp + /* ---------------------------------------------------------------------- */ FixNPHug::FixNPHug(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { - // Hard-code to use initial state of system + + // Prevent masses from being updated every timestep + + eta_mass_flag = 0; + omega_mass_flag = 0; + etap_mass_flag = 0; + + // extend vector of base-class computes + + size_vector += 3; + + // turn off deviatoric flag and remove strain energy from vector + + deviatoric_flag = 0; + size_vector -= 1; + + // use initial state as reference state v0_set = p0_set = e0_set = 0; - // Hard-code to use z direction + // check pressure settings - direction = 2; - if (p_flag[0] == 1 || p_flag[1] == 1 || - p_flag[3] == 1 || p_flag[4] == 1 || p_flag[5] == 1) - error->all("Only pressure control in z direction to be used with fix nphug"); - if (p_flag[2] == 0) - error->all("Pressure control in z direction must be used with fix nphug"); + if (p_start[0] != p_stop[0] || + p_start[1] != p_stop[1] || + p_start[2] != p_stop[2]) + error->all(FLERR,"Invalid argument for fix nphug"); + + // uniaxial = 0 means hydrostatic compression + // uniaxial = 1 means uniaxial compression + // in x, y, or z (idir = 0, 1, or 2) + + // isotropic hydrostatic compression + + if (pstyle == ISO) { + uniaxial = 0; + + // anisotropic compression + + } else if (pstyle == ANISO) { + + // anisotropic hydrostatic compression + + if (p_start[0] == p_start[1] && + p_start[0] == p_start[2] ) + uniaxial = 0; + + // uniaxial compression + + else if (p_flag[0] == 1 && p_flag[1] == 0 + && p_flag[2] == 0) { + uniaxial = 1; + idir = 0; + } else if (p_flag[0] == 0 && p_flag[1] == 1 + && p_flag[2] == 0) { + uniaxial = 1; + idir = 1; + } else if (p_flag[0] == 0 && p_flag[1] == 0 + && p_flag[2] == 1) { + uniaxial = 1; + idir = 2; + + } else error->all(FLERR,"Invalid argument for fix nphug"); + + // triclinic hydrostatic compression + + } else if (pstyle == TRICLINIC) { + + if (p_start[0] == p_start[1] && + p_start[0] == p_start[2] && + p_start[3] == 0.0 && + p_start[4] == 0.0 && + p_start[5] == 0.0 ) + uniaxial = 0; + + else error->all(FLERR,"Invalid argument for fix nphug"); + } if (!tstat_flag) - error->all("Temperature control must be used with fix nphug"); + error->all(FLERR,"Temperature control must be used with fix nphug"); if (!pstat_flag) - error->all("Pressure control must be used with fix nphug"); + error->all(FLERR,"Pressure control must be used with fix nphug"); // create a new compute temp style // id = fix-ID + temp @@ -171,7 +195,7 @@ void FixNPHug::init() int icompute = modify->find_compute(id_pe); if (icompute < 0) - error->all("Potential energy ID for fix nvt/nph/npt does not exist"); + error->all(FLERR,"Potential energy ID for fix nvt/nph/npt does not exist"); pe = modify->compute[icompute]; } @@ -190,8 +214,11 @@ void FixNPHug::setup(int vflag) } if ( p0_set == 0 ) { - p0 = p_current[direction]; p0_set = 1; + if (uniaxial == 1) + p0 = p_current[idir]; + else + p0 = (p_current[0]+p_current[1]+p_current[2])/3.0; } if ( e0_set == 0 ) { @@ -199,6 +226,12 @@ void FixNPHug::setup(int vflag) e0_set = 1; } + double masstot = group->mass(igroup); + rho0 = nktv2p*force->mvv2e*masstot/v0; + + t_target = 0.01; + + pe->addstep(update->ntimestep+1); } /* ---------------------------------------------------------------------- @@ -209,21 +242,9 @@ void FixNPHug::compute_temp_target() { t_target = t_current + compute_hugoniot(); ke_target = tdof * boltz * t_target; - if (ke_target < 0.0) ke_target = 0.0; - - // If t_target is very small, need to choose - // more reasonable value for use by barostat and - // thermostat masses. ke_target is left as is. - - if (t_target <= 1.0e-6) { - if (strcmp(update->unit_style,"lj") == 0) t0 = 1.0; - else t0 = 300.0; - } - pressure->addstep(update->ntimestep+1); pe->addstep(update->ntimestep+1); } - /* ---------------------------------------------------------------------- */ double FixNPHug::compute_etotal() @@ -232,7 +253,7 @@ double FixNPHug::compute_etotal() epot = pe->compute_scalar(); if (thermo_energy) epot -= compute_scalar(); ekin = temperature->compute_scalar(); - ekin *= 0.5 * temperature->dof * force->boltz; + ekin *= 0.5 * tdof * force->boltz; etot = epot+ekin; return etot; } @@ -249,24 +270,191 @@ double FixNPHug::compute_vol() /* ---------------------------------------------------------------------- Computes the deviation of the current point - from the Hugoniot in energy units. + from the Hugoniot in temperature units. ------------------------------------------------------------------------- */ double FixNPHug::compute_hugoniot() { - double v, e, p; + double v,e,p; double dhugo; e = compute_etotal(); temperature->compute_vector(); - pressure->compute_vector(); - p = pressure->vector[direction]; + + + if (uniaxial == 1) { + pressure->compute_vector(); + p = pressure->vector[idir]; + } else + p = pressure->compute_scalar(); v = compute_vol(); dhugo = (0.5 * (p + p0 ) * ( v0 - v)) / force->nktv2p + e0 - e; + dhugo /= tdof * boltz; + return dhugo; } + +/* ---------------------------------------------------------------------- + Compute shock velocity is distance/time units +------------------------------------------------------------------------- */ + +double FixNPHug::compute_us() +{ + double v,p; + double eps,us; + + temperature->compute_vector(); + + if (uniaxial == 1) { + pressure->compute_vector(); + p = pressure->vector[idir]; + } else + p = pressure->compute_scalar(); + + v = compute_vol(); + + // Us^2 = (p-p0)/(rho0*eps) + + eps = 1.0 - v/v0; + if (eps < 1.0e-10) us = 0.0; + else if (p < p0) us = 0.0; + else us = sqrt((p-p0)/(rho0*eps)); + + return us; +} + +/* ---------------------------------------------------------------------- + Compute particle velocity is distance/time units +------------------------------------------------------------------------- */ + +double FixNPHug::compute_up() +{ + double v; + double eps,us,up; + + v = compute_vol(); + us = compute_us(); + + // u = eps*Us + + eps = 1.0 - v/v0; + up = us*eps; + + return up; +} + +// look for index in local class +// if index not found, look in base class + +double FixNPHug::compute_vector(int n) +{ + int ilen; + + // n = 0: Hugoniot energy difference (temperature units) + + ilen = 1; + if (n < ilen) return compute_hugoniot(); + n -= ilen; + + // n = 1: Shock velocity + + ilen = 1; + if (n < ilen) return compute_us(); + n -= ilen; + + // n = 2: Particle velocity + + ilen = 1; + if (n < ilen) return compute_up(); + n -= ilen; + + // index not found, look in base class + + return FixNH::compute_vector(n); +} + +/* ---------------------------------------------------------------------- + pack restart data +------------------------------------------------------------------------- */ + +int FixNPHug::pack_restart_data(double *list) +{ + int n = 0; + + list[n++] = e0; + list[n++] = v0; + list[n++] = p0; + + // call the base class function + + n += FixNH::pack_restart_data(list+n); + + return n; +} + +/* ---------------------------------------------------------------------- + calculate the number of data to be packed +------------------------------------------------------------------------- */ + +int FixNPHug::size_restart_global() +{ + int nsize = 3; + + // call the base class function + + nsize += FixNH::size_restart_global(); + + return nsize; +} + +/* ---------------------------------------------------------------------- + use state info from restart file to restart the Fix +------------------------------------------------------------------------- */ + +void FixNPHug::restart(char *buf) +{ + int n = 0; + double *list = (double *) buf; + e0 = list[n++]; + v0 = list[n++]; + p0 = list[n++]; + + e0_set = 1; + v0_set = 1; + p0_set = 1; + + // call the base class function + + buf += n*sizeof(double); + FixNH::restart(buf); + +} + +/* ---------------------------------------------------------------------- */ + +int FixNPHug::modify_param(int narg, char **arg) +{ + if (strcmp(arg[0],"e0") == 0) { + if (narg < 2) error->all(FLERR,"Illegal fix nphug command"); + e0 = atof(arg[1]); + e0_set = 1; + return 2; + } else if (strcmp(arg[0],"v0") == 0) { + if (narg < 2) error->all(FLERR,"Illegal fix nphug command"); + v0 = atof(arg[1]); + v0_set = 1; + return 2; + } else if (strcmp(arg[0],"p0") == 0) { + if (narg < 2) error->all(FLERR,"Illegal fix nphug command"); + p0 = atof(arg[1]); + p0_set = 1; + return 2; + } + + return 0; +} diff --git a/src/SHOCK/fix_nphug.h b/src/SHOCK/fix_nphug.h index 37ca8451ea..f70ebf632e 100644 --- a/src/SHOCK/fix_nphug.h +++ b/src/SHOCK/fix_nphug.h @@ -30,20 +30,29 @@ class FixNPHug : public FixNH { ~FixNPHug(); void init(); void setup(int); - + int modify_param(int, char **); + int pack_restart_data(double *); // pack restart data + void restart(char *); + private: class Compute *pe; // PE compute pointer void compute_temp_target(); + double compute_vector(int); double compute_etotal(); double compute_vol(); double compute_hugoniot(); + double compute_us(); + double compute_up(); char *id_pe; int peflag; int v0_set,p0_set,e0_set; - double v0,p0,e0; - int direction; + double v0,p0,e0,rho0; + int idir; + int uniaxial; + + int size_restart_global(); }; } diff --git a/src/SHOCK/fix_wall_piston.cpp b/src/SHOCK/fix_wall_piston.cpp new file mode 100644 index 0000000000..3b66583715 --- /dev/null +++ b/src/SHOCK/fix_wall_piston.cpp @@ -0,0 +1,329 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "string.h" +#include "stdlib.h" +#include "fix_wall_piston.h" +#include "atom.h" +#include "modify.h" +#include "domain.h" +#include "lattice.h" +#include "update.h" +#include "error.h" +#include "random_mars.h" +#include "force.h" +#include "comm.h" +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +/* ---------------------------------------------------------------------- */ + +FixWallPiston::FixWallPiston(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + force_reneighbor = 1; + next_reneighbor = -1; + box_change = 1; + time_depend = 1; + + if (narg < 4) error->all(FLERR,"Illegal fix wall/piston command"); + + randomt = NULL; + tempflag = 0; + scaleflag = 1; + roughflag = 0; + rampflag = 0; + rampNL1flag = 0; + rampNL2flag = 0; + rampNL3flag = 0; + rampNL4flag = 0; + rampNL5flag = 0; + x0 = y0 = z0 = vx = vy = vz = 0.0; + xloflag = xhiflag = yloflag = yhiflag = zloflag = zhiflag = 0; + int iarg = 0; + iarg = 3; + while (iarg < narg) { + if (strcmp(arg[iarg],"xlo") == 0) { error->all(FLERR,"Fix wall/piston command only available at zlo"); + } else if (strcmp(arg[iarg],"ylo") == 0) { error->all(FLERR,"Fix wall/piston command only available at zlo"); + } else if (strcmp(arg[iarg],"zlo") == 0) { + zloflag = 1; + iarg++; + if (domain->boundary[2][0] != 2) error->all(FLERR,"Must shrink-wrap piston boundary"); + } else if (strcmp(arg[iarg],"xhi") == 0) { error->all(FLERR,"Fix wall/piston command only available at zlo"); + } else if (strcmp(arg[iarg],"yhi") == 0) { error->all(FLERR,"Fix wall/piston command only available at zlo"); + } else if (strcmp(arg[iarg],"zhi") == 0) { error->all(FLERR,"Fix wall/piston command only available at zlo"); + } else if (strcmp(arg[iarg],"vel") == 0) { + if (iarg+4 > narg) error->all(FLERR,"Illegal fix wall/piston command"); + vx = atof(arg[iarg+1]); + vy = atof(arg[iarg+2]); + vz = atof(arg[iarg+3]); + iarg += 4; + } else if (strcmp(arg[iarg],"pos") == 0) { + if (iarg+4 > narg) error->all(FLERR,"Illegal fix wall/piston command"); + x0 = atof(arg[iarg+1]); + y0 = atof(arg[iarg+2]); + z0 = atof(arg[iarg+3]); + iarg += 4; + } else if (strcmp(arg[iarg],"temp") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal fix wall/pistons command"); + tempflag = 1; + t_target = atof(arg[iarg+1]); + t_period = atof(arg[iarg+2]); + tseed = atoi(arg[iarg+3]); + t_extent = atof(arg[iarg+4]); + if (t_target <= 0) error->all(FLERR,"Illegal fix wall/piston command"); + if (t_period <= 0) error->all(FLERR,"Illegal fix wall/piston command"); + if (t_extent <= 0) error->all(FLERR,"Illegal fix wall/piston command"); + if (tseed <= 0) error->all(FLERR,"Illegal fix wall/pistons command"); + randomt = new RanMars(lmp,tseed + comm->me); + gfactor1 = new double[atom->ntypes+1]; + gfactor2 = new double[atom->ntypes+1]; + iarg += 5; + } else if (strcmp(arg[iarg],"rough") == 0) { + roughflag = 1; + roughdist = atof(arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"ramp") == 0) { + rampflag = 1; + iarg++; + } else if (strcmp(arg[iarg],"rampNL1") == 0) { + rampNL1flag = 1; + iarg++; + } else if (strcmp(arg[iarg],"rampNL2") == 0) { + rampNL2flag = 1; + iarg++; + } else if (strcmp(arg[iarg],"rampNL3") == 0) { + rampNL3flag = 1; + iarg++; + } else if (strcmp(arg[iarg],"rampNL4") == 0) { + rampNL4flag = 1; + iarg++; + } else if (strcmp(arg[iarg],"rampNL5") == 0) { + rampNL5flag = 1; + iarg++; + } else if (strcmp(arg[iarg],"units") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix wall/piston command"); + if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; + else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; + else error->all(FLERR,"Illegal fix wall/piston command"); + iarg += 2; + } else error->all(FLERR,"Illegal fix wall/piston command"); + } + + if (vx < 0.0 || vy < 0.0 || vz < 0.0) error->all(FLERR,"Illegal fix wall/piston velocity"); + if ((xloflag || xhiflag) && domain->xperiodic) + error->all(FLERR,"Cannot use wall in periodic dimension"); + if ((yloflag || yhiflag) && domain->yperiodic) + error->all(FLERR,"Cannot use wall in periodic dimension"); + if ((zloflag || zhiflag) && domain->zperiodic) + error->all(FLERR,"Cannot use wall in periodic dimension"); + + // setup scaling + + if (scaleflag && domain->lattice == NULL) + error->all(FLERR,"Use of fix wall/piston with undefined lattice"); + + double xscale,yscale,zscale; + if (scaleflag) { + xscale = domain->lattice->xlattice; + yscale = domain->lattice->ylattice; + zscale = domain->lattice->zlattice; + } + else xscale = yscale = zscale = 1.0; + + vx *= xscale; + vy *= yscale; + vz *= zscale; + x0 *= xscale; + y0 *= yscale; + z0 *= zscale; + roughdist *= zscale; + + if (rampflag || rampNL1flag || rampNL2flag || rampNL3flag || rampNL4flag || rampNL5flag) { + maxvx = vx; + maxvy = vy; + maxvz = vz; + } +} + +/* ---------------------------------------------------------------------- */ + +int FixWallPiston::setmask() +{ + int mask = 0; + mask |= POST_INTEGRATE; + mask |= POST_INTEGRATE_RESPA; + mask |= INITIAL_INTEGRATE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixWallPiston::initial_integrate(int vflag) +{ + next_reneighbor = update->ntimestep; +} + +/* ---------------------------------------------------------------------- */ + +void FixWallPiston::post_integrate() +{ + double xlo, xhi, ylo, yhi, zlo, zhi; + + double **x = atom->x; + double **v = atom->v; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double t = (update->ntimestep - update->beginstep) * update->dt; + double tott = (update->endstep - update->beginstep) * update->dt; + double tt = t * t; + double ttt = tt * t; + double tttt = tt * tt; + double t0p5 = sqrt(t/tott); + double t1p5 = t0p5*t0p5*t0p5; + double t2p5 = t1p5*t0p5*t0p5; + + if (rampflag) { + paccelx = maxvx / tott; + paccely = maxvy / tott; + paccelz = maxvz / tott; + + if (zloflag) { zlo = z0 + 0.5 * paccelz * tt; vz = paccelz * t; } + } + else if (rampNL1flag) { + paccelz = maxvz / tott; + angfreq = MY_2PI / (0.5 * tott); + + if (zloflag) { + zlo = z0 + paccelz * (0.5*tt + 1.0/(angfreq*angfreq) - 1.0/(angfreq*angfreq)*cos(angfreq*t)); + vz = paccelz * (t + 1.0/angfreq*sin(angfreq*t)); + } + else { error->all(FLERR,"NL ramp in wall/piston only implemented in zlo for now"); } + } + else if (rampNL2flag) { + paccelz = maxvz / tott; + angfreq = 3.0*MY_2PI / tott; + + if (zloflag) { + zlo = z0 + paccelz * (0.5*tt + 4.0/(3.0*angfreq*angfreq)*(1.0-cos(angfreq*t)) + 1.0/(6.0*angfreq*angfreq)*(1.0-cos(2.0*angfreq*t))); + vz = paccelz * (t + 4.0/(3.0*angfreq)*sin(angfreq*t) + 1.0/(3.0*angfreq)*sin(2.0*angfreq*t)); + } + else { error->all(FLERR,"NL ramp in wall/piston only implemented in zlo for now"); } + } + else if (rampNL3flag) { + paccelz = maxvz / tott; + + if (zloflag) { + zlo = z0 + paccelz*tott*tott/2.5 * (t2p5 ); + vz = paccelz * tott * (t1p5 ); + } + else { error->all(FLERR,"NL ramp in wall/piston only implemented in zlo for now"); } + } + else if (rampNL4flag) { + paccelz = maxvz / tott; + + if (zloflag) { + zlo = z0 + paccelz/tott/3.0 * (ttt); + vz = paccelz / tott * (tt); + } + else { error->all(FLERR,"NL ramp in wall/piston only implemented in zlo for now"); } + } + else if (rampNL5flag) { + paccelz = maxvz / tott; + + if (zloflag) { + zlo = z0 + paccelz/tott/tott/4.0 * (tttt); + vz = paccelz / tott / tott * (ttt); + } + else { error->all(FLERR,"NL ramp in wall/piston only implemented in zlo for now"); } + } + else { + if (zloflag) { zlo = z0 + vz * t; } + } + + if (update->ntimestep % 1000 == 0) + if (comm->me == 0) { + if (screen) + fprintf(screen,"SHOCK: step " BIGINT_FORMAT + " t %g zpos %g vz %g az %g zlo %g\n", + update->ntimestep, t, zlo, vz, paccelz, domain->boxlo[2]); + if (logfile) + fprintf(logfile,"SHOCK: step " BIGINT_FORMAT + " t %g zpos %g vz %g az %g zlo %g\n", + update->ntimestep, t, zlo, vz, paccelz, domain->boxlo[2]); + } + + // VIRIAL PRESSURE CONTRIBUTION? + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + roughoff = 0.0; + if (roughflag) { + roughoff += roughdist*fabs((x[i][0] - domain->boxlo[0])/(domain->boxhi[0]-domain->boxlo[0])-0.5); + roughoff += roughdist*fabs((x[i][1] - domain->boxlo[1])/(domain->boxhi[1]-domain->boxlo[1])-0.5); + } + if (zloflag && x[i][2] < zlo - roughoff) { + x[i][2] = 2.0 * (zlo - roughoff) - x[i][2]; + v[i][2] = 2.0 * vz - v[i][2]; + } + } + } + double **f = atom->f; + int *type = atom->type; + + double gamma1,gamma2; + double tsqrt = sqrt(t_target); + + if (atom->mass) { + if (tempflag) { + for (int i = 1; i <= atom->ntypes; i++) { + gfactor1[i] = -atom->mass[i] / t_period / force->ftm2v; + gfactor2[i] = sqrt(atom->mass[i]) * + sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) / + force->ftm2v; + } + } + for (int i = 0; i < nlocal; i++) { + // SET TEMP AHEAD OF PISTON + if (tempflag && x[i][2] <= domain->boxlo[2] + t_extent ) { + gamma1 = gfactor1[type[i]]; + gamma2 = gfactor2[type[i]] * tsqrt; + f[i][0] += gamma1*v[i][0] + gamma2*(randomt->uniform()-0.5); + f[i][1] += gamma1*v[i][1] + gamma2*(randomt->uniform()-0.5); + f[i][2] += gamma1*(v[i][2]-vz) + gamma2*(randomt->uniform()-0.5); + } + } + } else { + double *rmass = atom->rmass; + double boltz = force->boltz; + double dt = update->dt; + double mvv2e = force->mvv2e; + double ftm2v = force->ftm2v; + + for (int i = 0; i < nlocal; i++) { + // SET TEMP AHEAD OF PISTON + if (tempflag && x[i][2] <= domain->boxlo[2] + t_extent ) { + gamma1 = -rmass[i] / t_period / ftm2v; + gamma2 = sqrt(rmass[i]) * sqrt(24.0*boltz/t_period/dt/mvv2e) / ftm2v; + gamma2 *= tsqrt; + f[i][0] += gamma1*v[i][0] + gamma2*(randomt->uniform()-0.5); + f[i][1] += gamma1*v[i][1] + gamma2*(randomt->uniform()-0.5); + f[i][2] += gamma1*v[i][2] + gamma2*(randomt->uniform()-0.5); + } + } + } + +} diff --git a/src/SHOCK/fix_wall_piston.h b/src/SHOCK/fix_wall_piston.h new file mode 100644 index 0000000000..46d4cdee68 --- /dev/null +++ b/src/SHOCK/fix_wall_piston.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------- + 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(wall/piston,FixWallPiston) + +#else + +#ifndef LMP_FIX_WALL_PISTON_H +#define LMP_FIX_WALL_PISTON_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixWallPiston : public Fix { + public: + FixWallPiston(class LAMMPS *, int, char **); + int setmask(); + void post_integrate(); + void initial_integrate(int); + + private: + int xloflag,xhiflag,yloflag,yhiflag,zloflag,zhiflag; + int scaleflag, roughflag, rampflag, rampNL1flag, rampNL2flag, rampNL3flag, rampNL4flag, rampNL5flag; + double roughdist,roughoff,x0,y0,z0,vx,vy,vz,maxvx,maxvy,maxvz,paccelx,paccely,paccelz, angfreq; + int tempflag, tseed; + double t_target, t_period, t_extent; + class RanMars *randomt; + double *gfactor1,*gfactor2; +}; + +} + +#endif +#endif diff --git a/src/SRD/Install.sh b/src/SRD/Install.sh index a17d81a2c7..27f1302c71 100644 --- a/src/SRD/Install.sh +++ b/src/SRD/Install.sh @@ -1,6 +1,6 @@ # Install/unInstall package files in LAMMPS -if (test $1 == 1) then +if (test $1 = 1) then cp fix_srd.cpp .. cp fix_wall_srd.cpp .. @@ -8,7 +8,7 @@ if (test $1 == 1) then cp fix_srd.h .. cp fix_wall_srd.h .. -elif (test $1 == 0) then +elif (test $1 = 0) then rm -f ../fix_srd.cpp rm -f ../fix_wall_srd.cpp diff --git a/src/SRD/fix_srd.cpp b/src/SRD/fix_srd.cpp index d46c58d434..b673b9b7b5 100644 --- a/src/SRD/fix_srd.cpp +++ b/src/SRD/fix_srd.cpp @@ -19,8 +19,11 @@ #include "string.h" #include "stdlib.h" #include "fix_srd.h" +#include "math_extra.h" #include "atom.h" #include "atom_vec_ellipsoid.h" +#include "atom_vec_line.h" +#include "atom_vec_tri.h" #include "group.h" #include "update.h" #include "force.h" @@ -33,13 +36,15 @@ #include "fix_wall_srd.h" #include "random_mars.h" #include "random_park.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; enum{SLIP,NOSLIP}; -enum{SPHERE,ELLIPSOID,WALL}; +enum{SPHERE,ELLIPSOID,LINE,TRIANGLE,WALL}; enum{INSIDE_ERROR,INSIDE_WARN,INSIDE_IGNORE}; enum{BIG_MOVE,SRD_MOVE,SRD_ROTATE}; enum{CUBIC_ERROR,CUBIC_WARN}; @@ -47,13 +52,13 @@ enum{SHIFT_NO,SHIFT_YES,SHIFT_POSSIBLE}; enum{NO_REMAP,X_REMAP,V_REMAP}; // same as fix_deform.cpp -#define INERTIA 0.4 -#define ATOMPERBIN 10 +#define EINERTIA 0.2 // moment of inertia prefactor for ellipsoid + +#define ATOMPERBIN 30 #define BIG 1.0e20 #define VBINSIZE 5 - -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) +#define TOLERANCE 0.00001 +#define MAXITER 20 //#define SRD_DEBUG 1 //#define SRD_DEBUG_ATOMID 58 @@ -63,7 +68,7 @@ enum{NO_REMAP,X_REMAP,V_REMAP}; // same as fix_deform.cpp FixSRD::FixSRD(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 8) error->all("Illegal fix srd command"); + if (narg < 8) error->all(FLERR,"Illegal fix srd command"); restart_pbc = 1; vector_flag = 1; @@ -95,90 +100,92 @@ FixSRD::FixSRD(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) cubictol = 0.01; shiftuser = SHIFT_NO; shiftseed = 0; - streamflag = 1; + tstat = 0; int iarg = 8; while (iarg < narg) { if (strcmp(arg[iarg],"lamda") == 0) { - if (iarg+2 > narg) error->all("Illegal fix srd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix srd command"); lamda = atof(arg[iarg+1]); lamdaflag = 1; iarg += 2; } else if (strcmp(arg[iarg],"collision") == 0) { - if (iarg+2 > narg) error->all("Illegal fix srd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix srd command"); if (strcmp(arg[iarg+1],"slip") == 0) collidestyle = SLIP; else if (strcmp(arg[iarg+1],"noslip") == 0) collidestyle = NOSLIP; - else error->all("Illegal fix srd command"); + else error->all(FLERR,"Illegal fix srd command"); iarg += 2; } else if (strcmp(arg[iarg],"overlap") == 0) { - if (iarg+2 > narg) error->all("Illegal fix srd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix srd command"); if (strcmp(arg[iarg+1],"yes") == 0) overlap = 1; else if (strcmp(arg[iarg+1],"no") == 0) overlap = 0; - else error->all("Illegal fix srd command"); + else error->all(FLERR,"Illegal fix srd command"); iarg += 2; } else if (strcmp(arg[iarg],"inside") == 0) { - if (iarg+2 > narg) error->all("Illegal fix srd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix srd command"); if (strcmp(arg[iarg+1],"error") == 0) insideflag = INSIDE_ERROR; else if (strcmp(arg[iarg+1],"warn") == 0) insideflag = INSIDE_WARN; else if (strcmp(arg[iarg+1],"ignore") == 0) insideflag = INSIDE_IGNORE; - else error->all("Illegal fix srd command"); + else error->all(FLERR,"Illegal fix srd command"); iarg += 2; } else if (strcmp(arg[iarg],"exact") == 0) { - if (iarg+2 > narg) error->all("Illegal fix srd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix srd command"); if (strcmp(arg[iarg+1],"yes") == 0) exactflag = 1; else if (strcmp(arg[iarg+1],"no") == 0) exactflag = 0; - else error->all("Illegal fix srd command"); + else error->all(FLERR,"Illegal fix srd command"); iarg += 2; } else if (strcmp(arg[iarg],"radius") == 0) { - if (iarg+2 > narg) error->all("Illegal fix srd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix srd command"); radfactor = atof(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"bounce") == 0) { - if (iarg+2 > narg) error->all("Illegal fix srd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix srd command"); maxbounceallow = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"search") == 0) { - if (iarg+2 > narg) error->all("Illegal fix srd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix srd command"); gridsearch = atof(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"cubic") == 0) { - if (iarg+3 > narg) error->all("Illegal fix srd command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix srd command"); if (strcmp(arg[iarg+1],"error") == 0) cubicflag = CUBIC_ERROR; else if (strcmp(arg[iarg+1],"warn") == 0) cubicflag = CUBIC_WARN; - else error->all("Illegal fix srd command"); + else error->all(FLERR,"Illegal fix srd command"); cubictol = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"shift") == 0) { - if (iarg+3 > narg) error->all("Illegal fix srd command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix srd command"); else if (strcmp(arg[iarg+1],"no") == 0) shiftuser = SHIFT_NO; else if (strcmp(arg[iarg+1],"yes") == 0) shiftuser = SHIFT_YES; else if (strcmp(arg[iarg+1],"possible") == 0) shiftuser = SHIFT_POSSIBLE; - else error->all("Illegal fix srd command"); + else error->all(FLERR,"Illegal fix srd command"); shiftseed = atoi(arg[iarg+2]); iarg += 3; - } else if (strcmp(arg[iarg],"stream") == 0) { - if (iarg+2 > narg) error->all("Illegal fix srd command"); - if (strcmp(arg[iarg+1],"yes") == 0) streamflag = 1; - else if (strcmp(arg[iarg+1],"no") == 0) streamflag = 0; - else error->all("Illegal fix srd command"); + } else if (strcmp(arg[iarg],"tstat") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix srd command"); + if (strcmp(arg[iarg+1],"no") == 0) tstat = 0; + else if (strcmp(arg[iarg+1],"yes") == 0) tstat = 1; + else error->all(FLERR,"Illegal fix srd command"); iarg += 2; - } else error->all("Illegal fix srd command"); + } else error->all(FLERR,"Illegal fix srd command"); } // error check - if (nevery <= 0) error->all("Illegal fix srd command"); - if (bigexist && biggroup < 0) error->all("Could not find fix srd group ID"); - if (gridsrd <= 0.0) error->all("Illegal fix srd command"); - if (temperature_srd <= 0.0) error->all("Illegal fix srd command"); - if (seed <= 0) error->all("Illegal fix srd command"); - if (radfactor <= 0.0) error->all("Illegal fix srd command"); - if (maxbounceallow < 0) error->all("Illegal fix srd command"); - if (lamdaflag && lamda <= 0.0) error->all("Illegal fix srd command"); - if (gridsearch <= 0.0) error->all("Illegal fix srd command"); - if (cubictol < 0.0 || cubictol > 1.0) error->all("Illegal fix srd command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix srd command"); + if (bigexist && biggroup < 0) + error->all(FLERR,"Could not find fix srd group ID"); + if (gridsrd <= 0.0) error->all(FLERR,"Illegal fix srd command"); + if (temperature_srd <= 0.0) error->all(FLERR,"Illegal fix srd command"); + if (seed <= 0) error->all(FLERR,"Illegal fix srd command"); + if (radfactor <= 0.0) error->all(FLERR,"Illegal fix srd command"); + if (maxbounceallow < 0) error->all(FLERR,"Illegal fix srd command"); + if (lamdaflag && lamda <= 0.0) error->all(FLERR,"Illegal fix srd command"); + if (gridsearch <= 0.0) error->all(FLERR,"Illegal fix srd command"); + if (cubictol < 0.0 || cubictol > 1.0) + error->all(FLERR,"Illegal fix srd command"); if ((shiftuser == SHIFT_YES || shiftuser == SHIFT_POSSIBLE) && - shiftseed <= 0) error->all("Illegal fix srd command"); + shiftseed <= 0) error->all(FLERR,"Illegal fix srd command"); // initialize Marsaglia RNG with processor-unique seed @@ -236,6 +243,8 @@ FixSRD::FixSRD(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) // atom style pointers to particles that store bonus info avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + avec_line = (AtomVecLine *) atom->style_match("line"); + avec_tri = (AtomVecTri *) atom->style_match("tri"); // fix parameters @@ -289,13 +298,14 @@ void FixSRD::init() { // error checks - if (force->newton_pair == 0) error->all("Fix srd requires newton pair on"); + if (force->newton_pair == 0) + error->all(FLERR,"Fix srd requires newton pair on"); if (bigexist && comm->ghost_velocity == 0) - error->all("Fix srd requires ghost atoms store velocity"); + error->all(FLERR,"Fix srd requires ghost atoms store velocity"); if (bigexist && collidestyle == NOSLIP && !atom->torque_flag) - error->all("Fix SRD no-slip requires atom attribute torque"); + error->all(FLERR,"Fix SRD no-slip requires atom attribute torque"); if (initflag && update->dt != dt_big) - error->all("Cannot change timestep once fix srd is setup"); + error->all(FLERR,"Cannot change timestep once fix srd is setup"); // orthogonal vs triclinic simulation box // could be static or shearing box @@ -307,7 +317,7 @@ void FixSRD::init() wallexist = 0; for (int m = 0; m < modify->nfix; m++) { if (strcmp(modify->fix[m]->style,"wall/srd") == 0) { - if (wallexist) error->all("Cannot use fix wall/srd more than once"); + if (wallexist) error->all(FLERR,"Cannot use fix wall/srd more than once"); wallexist = 1; wallfix = (FixWallSRD *) modify->fix[m]; nwall = wallfix->nwall; @@ -319,26 +329,32 @@ void FixSRD::init() fwall = wallfix->fwall; walltrigger = 0.5 * neighbor->skin; if (wallfix->overlap && overlap == 0 && me == 0) - error->warning("Fix SRD walls overlap but fix srd overlap not set"); + error->warning(FLERR, + "Fix SRD walls overlap but fix srd overlap not set"); } } // set change_flags if box size or shape changes - change_size = change_shape = 0; + change_size = change_shape = deformflag = 0; if (domain->nonperiodic == 2) change_size = 1; for (int i = 0; i < modify->nfix; i++) if (modify->fix[i]->box_change) { if (modify->fix[i]->box_change_size) change_size = 1; if (modify->fix[i]->box_change_shape) change_shape = 1; if (strcmp(modify->fix[i]->style,"deform") == 0) { + deformflag = 1; FixDeform *deform = (FixDeform *) modify->fix[i]; if (deform->box_change_shape && deform->remapflag != V_REMAP) - error->all("Using fix srd with inconsistent " + error->all(FLERR,"Using fix srd with inconsistent " "fix deform remap option"); } } + if (deformflag && tstat == 0 && me == 0) + error->warning(FLERR, + "Using fix srd with box deformation but no SRD thermostat"); + // parameterize based on current box volume dimension = domain->dimension; @@ -356,7 +372,10 @@ void FixSRD::init() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { vsq = v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]; - if (vsq > vmaxsq) nrescale++; + if (vsq > vmaxsq) { + nrescale++; + MathExtra::scale3(vmax/sqrt(vsq),v[i]); + } } int all; @@ -388,7 +407,8 @@ void FixSRD::setup(int vflag) setup_bounds(); if (dist_srd_reneigh < nevery*dt_big*vmax && me == 0) - error->warning("Fix srd SRD moves may trigger frequent reneighboring"); + error->warning(FLERR, + "Fix srd SRD moves may trigger frequent reneighboring"); // setup search bins and search stencil based on these distances @@ -404,6 +424,7 @@ void FixSRD::setup(int vflag) reneighflag = BIG_MOVE; pre_neighbor(); } + /* ---------------------------------------------------------------------- assign SRD particles to bins assign big particles to all bins they overlap @@ -413,6 +434,7 @@ void FixSRD::pre_neighbor() { int i,j,m,ix,iy,iz,jx,jy,jz,ibin,jbin,lo,hi; double rsq,cutbinsq; + double xlamda[3]; // grow SRD per-atom bin arrays if necessary @@ -509,7 +531,7 @@ void FixSRD::pre_neighbor() if (ix < 0 || ix >= nbin2x || iy < 0 || iy >= nbin2y || iz < 0 || iz >= nbin2z) - error->one("Fix SRD: bad search bin assignment"); + error->one(FLERR,"Fix SRD: bad search bin assignment"); cutbinsq = biglist[nbig].cutbinsq; for (j = 0; j < nstencil; j++) { @@ -523,13 +545,13 @@ void FixSRD::pre_neighbor() atom->tag[i],i,x[i][0],x[i][1],x[i][2]); printf("Bin indices: %d %d %d, %d %d %d, %d %d %d\n", ix,iy,iz,jx,jy,jz,nbin2x,nbin2y,nbin2z); - error->one("Fix SRD: bad stencil bin for big particle"); + error->one(FLERR,"Fix SRD: bad stencil bin for big particle"); } rsq = point_bin_distance(x[i],jx,jy,jz); if (rsq < cutbinsq) { jbin = ibin + stencil[j][3]; if (nbinbig[jbin] == ATOMPERBIN) - error->one("Fix SRD: too many big particles in bin"); + error->one(FLERR,"Fix SRD: too many big particles in bin"); binbig[jbin][nbinbig[jbin]++] = nbig; } } @@ -558,12 +580,13 @@ void FixSRD::pre_neighbor() if (side == 0) { hi = static_cast ((xwall[m]+delta-xblo2)*bininv2x); if (hi < 0) continue; - if (hi >= nbin2x) error->all("Fix SRD: bad search bin assignment"); + if (hi >= nbin2x) error->all(FLERR, + "Fix SRD: bad search bin assignment"); lo = 0; } else { lo = static_cast ((xwall[m]-delta-xblo2)*bininv2x); if (lo >= nbin2x) continue; - if (lo < 0) error->all("Fix SRD: bad search bin assignment"); + if (lo < 0) error->all(FLERR,"Fix SRD: bad search bin assignment"); hi = nbin2x-1; } @@ -572,7 +595,7 @@ void FixSRD::pre_neighbor() for (iz = 0; iz < nbin2z; iz++) { ibin = iz*nbin2y*nbin2x + iy*nbin2x + ix; if (nbinbig[ibin] == ATOMPERBIN) - error->all("Fix SRD: too many walls in bin"); + error->all(FLERR,"Fix SRD: too many walls in bin"); binbig[ibin][nbinbig[ibin]++] = nbig+m; } @@ -580,12 +603,13 @@ void FixSRD::pre_neighbor() if (side == 0) { hi = static_cast ((xwall[m]+delta-yblo2)*bininv2y); if (hi < 0) continue; - if (hi >= nbin2y) error->all("Fix SRD: bad search bin assignment"); + if (hi >= nbin2y) error->all(FLERR, + "Fix SRD: bad search bin assignment"); lo = 0; } else { lo = static_cast ((xwall[m]-delta-yblo2)*bininv2y); if (lo >= nbin2y) continue; - if (lo < 0) error->all("Fix SRD: bad search bin assignment"); + if (lo < 0) error->all(FLERR,"Fix SRD: bad search bin assignment"); hi = nbin2y-1; } @@ -594,7 +618,7 @@ void FixSRD::pre_neighbor() for (iz = 0; iz < nbin2z; iz++) { ibin = iz*nbin2y*nbin2x + iy*nbin2x + ix; if (nbinbig[ibin] == ATOMPERBIN) - error->all("Fix SRD: too many walls in bin"); + error->all(FLERR,"Fix SRD: too many walls in bin"); binbig[ibin][nbinbig[ibin]++] = nbig+m; } @@ -602,12 +626,13 @@ void FixSRD::pre_neighbor() if (side == 0) { hi = static_cast ((xwall[m]+delta-zblo2)*bininv2z); if (hi < 0) continue; - if (hi >= nbin2z) error->all("Fix SRD: bad search bin assignment"); + if (hi >= nbin2z) error->all(FLERR, + "Fix SRD: bad search bin assignment"); lo = 0; } else { lo = static_cast ((xwall[m]-delta-zblo2)*bininv2z); if (lo >= nbin2z) continue; - if (lo < 0) error->all("Fix SRD: bad search bin assignment"); + if (lo < 0) error->all(FLERR,"Fix SRD: bad search bin assignment"); hi = nbin2z-1; } @@ -616,7 +641,7 @@ void FixSRD::pre_neighbor() for (iy = 0; iy < nbin2y; iy++) { ibin = iz*nbin2y*nbin2x + iy*nbin2x + ix; if (nbinbig[ibin] == ATOMPERBIN) - error->all("Fix SRD: too many walls in bin"); + error->all(FLERR,"Fix SRD: too many walls in bin"); binbig[ibin][nbinbig[ibin]++] = nbig+m; } } @@ -642,6 +667,7 @@ void FixSRD::pre_neighbor() void FixSRD::post_force(int vflag) { int i,m,ix,iy,iz; + double xlamda[3]; // zero per-timestep stats @@ -692,7 +718,7 @@ void FixSRD::post_force(int vflag) fprintf(screen,"ix,iy,iz nx,ny,nz = %d %d %d %d %d %d\n", ix,iy,iz,nbin2x,nbin2y,nbin2z); } - error->one("Fix SRD: bad bin assignment for SRD advection"); + error->one(FLERR,"Fix SRD: bad bin assignment for SRD advection"); } } @@ -762,19 +788,20 @@ void FixSRD::post_force(int vflag) /* ---------------------------------------------------------------------- reset SRD velocities - may perform random shifting by 1/2 bin in each dimension + may perform random shifting by up to 1/2 bin in each dimension called at pre-neighbor stage when all SRDs are now inside my sub-domain - for triclinic, will set mean velocity to box deformation velocity + if tstat, then thermostat SRD particles as well, including streaming effects ------------------------------------------------------------------------- */ void FixSRD::reset_velocities() { int i,j,n,ix,iy,iz,ibin,axis,sign,irandom; - double u[3],vave[3]; - double vx,vy,vz,vsq; - double *vold,*vnew,*xlamda; + double u[3],vsum[3]; + double vx,vy,vz,vsq,tbin,scale; + double *vave,*vnew,*xlamda; + double vstream[3]; - // if requested, perform a dynamic shift + // if requested, perform a dynamic shift of bin positions if (shiftflag) { double *boxlo; @@ -828,39 +855,23 @@ void FixSRD::reset_velocities() if (triclinic) domain->lamda2x(nlocal); - if (triclinic && streamflag) { - double *h_rate = domain->h_rate; - double *h_ratelo = domain->h_ratelo; - for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) { - xlamda = x[i]; - v[i][0] -= h_rate[0]*xlamda[0] + h_rate[5]*xlamda[1] + - h_rate[4]*xlamda[2] + h_ratelo[0]; - v[i][1] -= h_rate[1]*xlamda[1] + h_rate[3]*xlamda[2] + h_ratelo[1]; - v[i][2] -= h_rate[2]*xlamda[2] + h_ratelo[2]; - } - } - // for each bin I have particles contributing to: - // compute ave v and v^2 of particles in that bin + // compute summed v of particles in that bin // if I own the bin, set its random value, else set to 0.0 for (i = 0; i < nbins; i++) { n = 0; - vave[0] = vave[1] = vave[2] = 0.0; + vsum[0] = vsum[1] = vsum[2] = 0.0; for (j = binhead[i]; j >= 0; j = binnext[j]) { - vx = v[j][0]; - vy = v[j][1]; - vz = v[j][2]; - vave[0] += vx; - vave[1] += vy; - vave[2] += vz; + vsum[0] += v[j][0]; + vsum[1] += v[j][1]; + vsum[2] += v[j][2]; n++; } - vbin[i].vave[0] = vave[0]; - vbin[i].vave[1] = vave[1]; - vbin[i].vave[2] = vave[2]; + vbin[i].vsum[0] = vsum[0]; + vbin[i].vsum[1] = vsum[1]; + vbin[i].vsum[2] = vsum[2]; vbin[i].n = n; if (vbin[i].owner) vbin[i].random = random->uniform(); else vbin[i].random = 0.0; @@ -871,24 +882,43 @@ void FixSRD::reset_velocities() if (shifts[shiftflag].commflag) vbin_comm(shiftflag); // for each bin I have particles contributing to: - // reassign particle velocity by rotation around a random axis - // accumulate T_srd for each bin I own - // for triclinic, replace mean velocity with stream velocity + // compute vave over particles in bin + // thermal velocity of each particle = v - vave + // rotate thermal vel of each particle around one of 6 random axes + // add vave back to each particle + // thermostat if requested: + // if no deformation, rescale thermal vel to temperature + // if deformation, rescale thermal vel and change vave to vstream + // these are settings for extra dof_temp, dof_tstat to subtract + // (not sure why these settings work best) + // no deformation, no tstat: dof_temp = 1 + // yes deformation, no tstat: doesn't matter, system will not equilibrate + // no deformation, yes tstat: dof_temp = dof_tstat = 1 + // yes deformation, yes tstat: dof_temp = dof_tstat = 0 + // accumulate final T_srd for each bin I own + + double tfactor = force->mvv2e * mass_srd / (dimension * force->boltz); + int dof_temp = 1; + int dof_tstat; + if (tstat) { + if (deformflag) dof_tstat = dof_temp = 0; + else dof_tstat = 1; + } srd_bin_temp = 0.0; srd_bin_count = 0; if (dimension == 2) axis = 2; + double *h_rate = domain->h_rate; + double *h_ratelo = domain->h_ratelo; for (i = 0; i < nbins; i++) { n = vbin[i].n; if (n == 0) continue; - vold = vbin[i].vave; - vold[0] /= n; - vold[1] /= n; - vold[2] /= n; - - vnew = vold; + vave = vbin[i].vsum; + vave[0] /= n; + vave[1] /= n; + vave[2] /= n; irandom = static_cast (6.0*vbin[i].random); sign = irandom % 2; @@ -897,54 +927,73 @@ void FixSRD::reset_velocities() vsq = 0.0; for (j = binhead[i]; j >= 0; j = binnext[j]) { if (axis == 0) { - u[0] = v[j][0]-vold[0]; - u[1] = sign ? v[j][2]-vold[2] : vold[2]-v[j][2]; - u[2] = sign ? vold[1]-v[j][1] : v[j][1]-vold[1]; + u[0] = v[j][0]-vave[0]; + u[1] = sign ? v[j][2]-vave[2] : vave[2]-v[j][2]; + u[2] = sign ? vave[1]-v[j][1] : v[j][1]-vave[1]; } else if (axis == 1) { - u[1] = v[j][1]-vold[1]; - u[0] = sign ? v[j][2]-vold[2] : vold[2]-v[j][2]; - u[2] = sign ? vold[0]-v[j][0] : v[j][0]-vold[0]; + u[1] = v[j][1]-vave[1]; + u[0] = sign ? v[j][2]-vave[2] : vave[2]-v[j][2]; + u[2] = sign ? vave[0]-v[j][0] : v[j][0]-vave[0]; } else { - u[2] = v[j][2]-vold[2]; - u[1] = sign ? v[j][0]-vold[0] : vold[0]-v[j][0]; - u[0] = sign ? vold[1]-v[j][1] : v[j][1]-vold[1]; + u[2] = v[j][2]-vave[2]; + u[1] = sign ? v[j][0]-vave[0] : vave[0]-v[j][0]; + u[0] = sign ? vave[1]-v[j][1] : v[j][1]-vave[1]; } vsq += u[0]*u[0] + u[1]*u[1] + u[2]*u[2]; - v[j][0] = u[0] + vnew[0]; - v[j][1] = u[1] + vnew[1]; - v[j][2] = u[2] + vnew[2]; + v[j][0] = u[0] + vave[0]; + v[j][1] = u[1] + vave[1]; + v[j][2] = u[2] + vave[2]; + } + + if (tstat && n > 1) { + if (deformflag) { + xlamda = vbin[i].xctr; + vstream[0] = h_rate[0]*xlamda[0] + h_rate[5]*xlamda[1] + + h_rate[4]*xlamda[2] + h_ratelo[0]; + vstream[1] = h_rate[1]*xlamda[1] + h_rate[3]*xlamda[2] + h_ratelo[1]; + vstream[2] = h_rate[2]*xlamda[2] + h_ratelo[2]; + } else { + vstream[0] = vave[0]; + vstream[1] = vave[1]; + vstream[2] = vave[2]; + } + + // tbin = thermal temperature of particles in bin + // scale = scale factor for thermal velocity + + tbin = vsq/(n-dof_tstat) * tfactor; + scale = sqrt(temperature_srd/tbin); + + vsq = 0.0; + for (j = binhead[i]; j >= 0; j = binnext[j]) { + u[0] = (v[j][0] - vave[0]) * scale; + u[1] = (v[j][1] - vave[1]) * scale; + u[2] = (v[j][2] - vave[2]) * scale; + vsq += u[0]*u[0] + u[1]*u[1] + u[2]*u[2]; + v[j][0] = u[0] + vstream[0]; + v[j][1] = u[1] + vstream[1]; + v[j][2] = u[2] + vstream[2]; + } } // sum partial contribution of my particles to T even if I don't own bin - // but only count bin if I own it, so that bin is counted exactly once + // but only count bin if I own it, so each bin is counted exactly once - if (n > 1) { - srd_bin_temp += vsq / (n-1); - if (vbin[i].owner) srd_bin_count++; - } + if (n > 1) srd_bin_temp += vsq/(n-dof_temp); + if (vbin[i].owner) srd_bin_count++; } - srd_bin_temp *= force->mvv2e * mass_srd / (dimension * force->boltz); - - if (triclinic && streamflag) { - double *h_rate = domain->h_rate; - double *h_ratelo = domain->h_ratelo; - for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) { - xlamda = x[i]; - v[i][0] += h_rate[0]*xlamda[0] + h_rate[5]*xlamda[1] + - h_rate[4]*xlamda[2] + h_ratelo[0]; - v[i][1] += h_rate[1]*xlamda[1] + h_rate[3]*xlamda[2] + h_ratelo[1]; - v[i][2] += h_rate[2]*xlamda[2] + h_ratelo[2]; - } - } + srd_bin_temp *= tfactor; // rescale any too-large velocities for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) { vsq = v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]; - if (vsq > vmaxsq) nrescale++; + if (vsq > vmaxsq) { + nrescale++; + MathExtra::scale3(vmax/sqrt(vsq),v[i]); + } } } @@ -1026,9 +1075,9 @@ void FixSRD::vbin_pack(BinAve *vbin, int n, int *list, double *buf) for (int i = 0; i < n; i++) { j = list[i]; buf[m++] = vbin[j].n; - buf[m++] = vbin[j].vave[0]; - buf[m++] = vbin[j].vave[1]; - buf[m++] = vbin[j].vave[2]; + buf[m++] = vbin[j].vsum[0]; + buf[m++] = vbin[j].vsum[1]; + buf[m++] = vbin[j].vsum[2]; buf[m++] = vbin[j].random; } } @@ -1044,9 +1093,9 @@ void FixSRD::vbin_unpack(double *buf, BinAve *vbin, int n, int *list) for (int i = 0; i < n; i++) { j = list[i]; vbin[j].n += static_cast (buf[m++]); - vbin[j].vave[0] += buf[m++]; - vbin[j].vave[1] += buf[m++]; - vbin[j].vave[2] += buf[m++]; + vbin[j].vsum[0] += buf[m++]; + vbin[j].vsum[1] += buf[m++]; + vbin[j].vsum[2] += buf[m++]; vbin[j].random += buf[m++]; } } @@ -1059,7 +1108,7 @@ void FixSRD::vbin_unpack(double *buf, BinAve *vbin, int n, int *list) void FixSRD::collisions_single() { - int i,j,k,m,type,mbig,ibin,ibounce,inside,collide_flag; + int i,j,k,m,type,nbig,ibin,ibounce,inside,collide_flag,lineside; double dt,t_remain; double norm[3],xscoll[3],xbcoll[3],vsnew[3]; Big *big; @@ -1091,11 +1140,11 @@ void FixSRD::collisions_single() dt = dt_big; while (collide_flag) { - mbig = nbinbig[ibin]; - if (ibounce == 0) ncheck += mbig; + nbig = nbinbig[ibin]; + if (ibounce == 0) ncheck += nbig; collide_flag = 0; - for (m = 0; m < mbig; m++) { + for (m = 0; m < nbig; m++) { k = binbig[ibin][m]; big = &biglist[k]; j = big->index; @@ -1148,24 +1197,18 @@ void FixSRD::collisions_single() "inside big particle %d on step " BIGINT_FORMAT " bounce %d\n", atom->tag[i],atom->tag[j],update->ntimestep,ibounce+1); - if (insideflag == INSIDE_ERROR) error->one(str); - error->warning(str); + if (insideflag == INSIDE_ERROR) error->one(FLERR,str); + error->warning(FLERR,str); } break; } if (collidestyle == SLIP) { - if (type == SPHERE) - slip_sphere(v[i],v[j],norm,vsnew); - else if (type == ELLIPSOID) - slip_ellipsoid(v[i],v[j],x[j],big,xscoll,norm,vsnew); - else - slip_wall(v[i],j,norm,vsnew); + if (type != WALL) slip(v[i],v[j],x[j],big,xscoll,norm,vsnew); + else slip_wall(v[i],j,norm,vsnew); } else { - if (type != WALL) - noslip(v[i],v[j],x[j],big,xscoll,norm,vsnew); - else - noslip_wall(v[i],j,xscoll,norm,vsnew); + if (type != WALL) noslip(v[i],v[j],x[j],big,-1, xscoll,norm,vsnew); + else noslip(v[i],NULL,x[j],big,j,xscoll,norm,vsnew); } if (dimension == 2) vsnew[2] = 0.0; @@ -1174,7 +1217,10 @@ void FixSRD::collisions_single() double vsq = vsnew[0]*vsnew[0] + vsnew[1]*vsnew[1] + vsnew[2]*vsnew[2]; - if (vsq > vmaxsq) nrescale++; + if (vsq > vmaxsq) { + nrescale++; + MathExtra::scale3(vmax/sqrt(vsq),vsnew); + } // update BIG particle and WALL and SRD // BIG particle is not torqued if sphere and SLIP collision @@ -1213,7 +1259,7 @@ void FixSRD::collisions_single() void FixSRD::collisions_multi() { - int i,j,k,m,type,mbig,ibin,ibounce,inside,jfirst,typefirst; + int i,j,k,m,type,nbig,ibin,ibounce,inside,jfirst,typefirst,jlast; double dt,t_remain,t_first; double norm[3],xscoll[3],xbcoll[3],vsnew[3]; double normfirst[3],xscollfirst[3],xbcollfirst[3]; @@ -1242,22 +1288,31 @@ void FixSRD::collisions_multi() if (nbinbig[ibin] == 0) continue; ibounce = 0; + jlast = -1; dt = dt_big; while (1) { - mbig = nbinbig[ibin]; - if (ibounce == 0) ncheck += mbig; + nbig = nbinbig[ibin]; + if (ibounce == 0) ncheck += nbig; t_first = 0.0; - for (m = 0; m < mbig; m++) { + for (m = 0; m < nbig; m++) { k = binbig[ibin][m]; big = &biglist[k]; j = big->index; + if (j == jlast) continue; type = big->type; - if (type == SPHERE) inside = inside_sphere(x[i],x[j],big); - else if (type == ELLIPSOID) inside = inside_ellipsoid(x[i],x[j],big); - else inside = inside_wall(x[i],j); + if (type == SPHERE) + inside = inside_sphere(x[i],x[j],big); + else if (type == ELLIPSOID) + inside = inside_ellipsoid(x[i],x[j],big); + else if (type == LINE) + inside = inside_line(x[i],x[j],v[i],v[j],big,dt); + else if (type == TRIANGLE) + inside = inside_tri(x[i],x[j],v[i],v[j],big,dt); + else + inside = inside_wall(x[i],j); if (inside) { if (type == SPHERE) @@ -1266,6 +1321,12 @@ void FixSRD::collisions_multi() else if (type == ELLIPSOID) t_remain = collision_ellipsoid_exact(x[i],x[j],v[i],v[j],big, xscoll,xbcoll,norm); + else if (type == LINE) + t_remain = collision_line_exact(x[i],x[j],v[i],v[j],big,dt, + xscoll,xbcoll,norm); + else if (type == TRIANGLE) + t_remain = collision_tri_exact(x[i],x[j],v[i],v[j],big,dt, + xscoll,xbcoll,norm); else t_remain = collision_wall_exact(x[i],j,v[i],xscoll,xbcoll,norm); @@ -1284,8 +1345,8 @@ void FixSRD::collisions_multi() "inside big particle %d on step " BIGINT_FORMAT " bounce %d\n", atom->tag[i],atom->tag[j],update->ntimestep,ibounce+1); - if (insideflag == INSIDE_ERROR) error->one(str); - error->warning(str); + if (insideflag == INSIDE_ERROR) error->one(FLERR,str); + error->warning(FLERR,str); } t_first = 0.0; break; @@ -1309,7 +1370,7 @@ void FixSRD::collisions_multi() } if (t_first == 0.0) break; - j = jfirst; + j = jlast = jfirst; type = typefirst; xscoll[0] = xscollfirst[0]; xscoll[1] = xscollfirst[1]; @@ -1322,17 +1383,11 @@ void FixSRD::collisions_multi() norm[2] = normfirst[2]; if (collidestyle == SLIP) { - if (type == SPHERE) - slip_sphere(v[i],v[j],norm,vsnew); - else if (type == ELLIPSOID) - slip_ellipsoid(v[i],v[j],x[j],big,xscoll,norm,vsnew); - else - slip_wall(v[i],j,norm,vsnew); + if (type != WALL) slip(v[i],v[j],x[j],big,xscoll,norm,vsnew); + else slip_wall(v[i],j,norm,vsnew); } else { - if (type != WALL) - noslip(v[i],v[j],x[j],big,xscoll,norm,vsnew); - else - noslip_wall(v[i],j,xscoll,norm,vsnew); + if (type != WALL) noslip(v[i],v[j],x[j],big,-1,xscoll,norm,vsnew); + else noslip(v[i],NULL,x[j],big,j,xscoll,norm,vsnew); } if (dimension == 2) vsnew[2] = 0.0; @@ -1340,7 +1395,10 @@ void FixSRD::collisions_multi() // check on rescaling of vsnew double vsq = vsnew[0]*vsnew[0] + vsnew[1]*vsnew[1] + vsnew[2]*vsnew[2]; - if (vsq > vmaxsq) nrescale++; + if (vsq > vmaxsq) { + nrescale++; + MathExtra::scale3(vmax/sqrt(vsq),vsnew); + } // update BIG particle and WALL and SRD // BIG particle is not torqued if sphere and SLIP collision @@ -1408,6 +1466,276 @@ int FixSRD::inside_ellipsoid(double *xs, double *xb, Big *big) return 0; } +/* ---------------------------------------------------------------------- + check if SRD particle S is inside line big particle B + collision only possible if: + S starts on positive side of infinite line, + which means it will collide with outside of rigid body made of lines + since line segments have outward normals, + when vector from first to last point is crossed with +z axis + S ends on negative side of infinite line + unlike most other inside() routines, then calculate exact collision: + solve for collision pt along infinite line + collision if pt is within endpoints of B +------------------------------------------------------------------------- */ + +int FixSRD::inside_line(double *xs, double *xb, double *vs, double *vb, + Big *big, double dt_step) +{ + double pmc0[2],pmc1[2],n0[2],n1[2]; + double n1_n0[2],pmc1_pmc0[2]; + + // 1 and 2 = start and end of timestep + // pmc = P - C, where P = position of S, C = position of B + // n = normal to line = [-sin(theta),cos(theta)], theta = orientation of B + // (P-C) dot N = side of line that S is on + // side0 = -1,0,1 for which side of line B that S is on at start of step + // side1 = -1,0,1 for which side of line B that S is on at end of step + + xs1[0] = xs[0]; + xs1[1] = xs[1]; + xb1[0] = xb[0]; + xb1[1] = xb[1]; + + xs0[0] = xs1[0] - dt_step*vs[0]; + xs0[1] = xs1[1] - dt_step*vs[1]; + xb0[0] = xb1[0] - dt_step*vb[0]; + xb0[1] = xb1[1] - dt_step*vb[1]; + + theta1 = big->theta; + theta0 = theta1 - dt_step*big->omega[2]; + + pmc0[0] = xs0[0] - xb0[0]; + pmc0[1] = xs0[1] - xb0[1]; + n0[0] = sin(theta0); + n0[1] = -cos(theta0); + + pmc1[0] = xs1[0] - xb1[0]; + pmc1[1] = xs1[1] - xb1[1]; + n1[0] = sin(theta1); + n1[1] = -cos(theta1); + + double side0 = pmc0[0]*n0[0] + pmc0[1]*n0[1]; + double side1 = pmc1[0]*n1[0] + pmc1[1]*n1[1]; + + if (side0 <= 0.0 || side1 >= 0.0) return 0; + + // solve for time t (0 to 1) at which moving particle + // crosses infinite moving/rotating line + + // Newton-Raphson solve of full non-linear parametric equation + + tfraction = newton_raphson(0.0,1.0); + + // quadratic equation solve of approximate parametric equation + + /* + n1_n0[0] = n1[0]-n0[0]; n1_n0[1] = n1[1]-n0[1]; + pmc1_pmc0[0] = pmc1[0]-pmc0[0]; pmc1_pmc0[1] = pmc1[1]-pmc0[1]; + + double a = pmc1_pmc0[0]*n1_n0[0] + pmc1_pmc0[1]*n1_n0[1]; + double b = pmc1_pmc0[0]*n0[0] + pmc1_pmc0[1]*n0[1] + + n1_n0[0]*pmc0[0] + n1_n0[1]*pmc0[1]; + double c = pmc0[0]*n0[0] + pmc0[1]*n0[1]; + + if (a == 0.0) { + double dot0 = pmc0[0]*n0[0] + pmc0[1]*n0[1]; + double dot1 = pmc1[0]*n0[0] + pmc1[1]*n0[1]; + double root = -dot0 / (dot1 - dot0); + //printf("Linear root: %g %g\n",root,tfraction); + tfraction = root; + + } else { + + double term = sqrt(b*b - 4.0*a*c); + double root1 = (-b + term) / (2.0*a); + double root2 = (-b - term) / (2.0*a); + + //printf("ABC vecs: %g %g: %g %g\n", + // pmc1_pmc0[0],pmc1_pmc0[1],n1_n0[0],n1_n0[1]); + //printf("ABC vecs: %g %g: %g %g: %g %g %g\n", + // n0[0],n0[1],n1[0],n1[1],theta0,theta1,big->omega[2]); + //printf("ABC root: %g %g %g: %g %g %g\n",a,b,c,root1,root2,tfraction); + + if (0.0 <= root1 && root1 <= 1.0) tfraction = root1; + else if (0.0 <= root2 && root2 <= 1.0) tfraction = root2; + else error->one(FLERR,"Bad quadratic solve for particle/line collision"); + } + */ + + // check if collision pt is within line segment at collision time + + xsc[0] = xs0[0] + tfraction*(xs1[0]-xs0[0]); + xsc[1] = xs0[1] + tfraction*(xs1[1]-xs0[1]); + xbc[0] = xb0[0] + tfraction*(xb1[0]-xb0[0]); + xbc[1] = xb0[1] + tfraction*(xb1[1]-xb0[1]); + double delx = xsc[0] - xbc[0]; + double dely = xsc[1] - xbc[1]; + double rsq = delx*delx + dely*dely; + if (rsq > 0.25*big->length*big->length) return 0; + + //nbc[0] = n0[0] + tfraction*(n1[0]-n0[0]); + //nbc[1] = n0[1] + tfraction*(n1[1]-n0[1]); + + nbc[0] = sin(theta0 + tfraction*(theta1-theta0)); + nbc[1] = -cos(theta0 + tfraction*(theta1-theta0)); + + return 1; +} + +/* ---------------------------------------------------------------------- + check if SRD particle S is inside triangle big particle B + collision only possible if: + S starts on positive side of triangle plane, + which means it will collide with outside of rigid body made of tris + since triangles have outward normals, + S ends on negative side of triangle plane + unlike most other inside() routines, then calculate exact collision: + solve for collision pt on triangle plane + collision if pt is inside triangle B +------------------------------------------------------------------------- */ + +int FixSRD::inside_tri(double *xs, double *xb, double *vs, double *vb, + Big *big, double dt_step) +{ + double pmc0[3],pmc1[3],n0[3]; + double n1_n0[3],pmc1_pmc0[3]; + double excoll[3],eycoll[3],ezcoll[3]; + double dc1[3],dc2[3],dc3[3]; + double c1[3],c2[3],c3[3]; + double c2mc1[3],c3mc2[3],c1mc3[3]; + double pvec[3],xproduct[3]; + + // 1 and 2 = start and end of timestep + // pmc = P - C, where P = position of S, C = position of B + // n = normal to triangle + // (P-C) dot N = side of tri that S is on + // side0 = -1,0,1 for which side of tri B that S is on at start of step + // side1 = -1,0,1 for which side of tri B that S is on at end of step + + double *omega = big->omega; + double *n1 = big->norm; + + n0[0] = n1[0] - dt_step*(omega[1]*n1[2] - omega[2]*n1[1]); + n0[1] = n1[1] - dt_step*(omega[2]*n1[0] - omega[0]*n1[2]); + n0[2] = n1[2] - dt_step*(omega[0]*n1[1] - omega[1]*n1[0]); + + pmc0[0] = xs[0] - dt_step*vs[0] - xb[0] + dt_step*vb[0]; + pmc0[1] = xs[1] - dt_step*vs[1] - xb[1] + dt_step*vb[1]; + pmc0[2] = xs[2] - dt_step*vs[2] - xb[2] + dt_step*vb[2]; + pmc1[0] = xs[0] - xb[0]; + pmc1[1] = xs[1] - xb[1]; + pmc1[2] = xs[2] - xb[2]; + + double side0 = MathExtra::dot3(pmc0,n0); + double side1 = MathExtra::dot3(pmc1,n1); + + if (side0 <= 0.0 || side1 >= 0.0) return 0; + + // solve for time t (0 to 1) at which moving particle + // crosses moving/rotating tri + // quadratic equation solve of approximate parametric equation + + n1_n0[0] = n1[0]-n0[0]; + n1_n0[1] = n1[1]-n0[1]; + n1_n0[2] = n1[2]-n0[2]; + pmc1_pmc0[0] = pmc1[0]-pmc0[0]; + pmc1_pmc0[1] = pmc1[1]-pmc0[1]; + pmc1_pmc0[2] = pmc1[2]-pmc0[2]; + + double a = MathExtra::dot3(pmc1_pmc0,n1_n0); + double b = MathExtra::dot3(pmc1_pmc0,n0) + MathExtra::dot3(n1_n0,pmc0); + double c = MathExtra::dot3(pmc0,n0); + + if (a == 0.0) { + double dot0 = MathExtra::dot3(pmc0,n0); + double dot1 = MathExtra::dot3(pmc1,n0); + double root = -dot0 / (dot1 - dot0); + tfraction = root; + } else { + double term = sqrt(b*b - 4.0*a*c); + double root1 = (-b + term) / (2.0*a); + double root2 = (-b - term) / (2.0*a); + if (0.0 <= root1 && root1 <= 1.0) tfraction = root1; + else if (0.0 <= root2 && root2 <= 1.0) tfraction = root2; + else error->one(FLERR,"Bad quadratic solve for particle/tri collision"); + } + + // calculate position/orientation of S and B at collision time + // dt = time previous to now at which collision occurs + // point = S position in plane of triangle at collision time + // Excoll,Eycoll,Ezcoll = orientation of tri at collision time + // c1,c2,c3 = corner points of triangle at collision time + // nbc = normal to plane of triangle at collision time + + AtomVecTri::Bonus *tbonus; + tbonus = avec_tri->bonus; + + double *ex = big->ex; + double *ey = big->ey; + double *ez = big->ez; + int index = atom->tri[big->index]; + double *c1body = tbonus[index].c1; + double *c2body = tbonus[index].c2; + double *c3body = tbonus[index].c3; + + double dt = (1.0-tfraction)*dt_step; + + xsc[0] = xs[0] - dt*vs[0]; + xsc[1] = xs[1] - dt*vs[1]; + xsc[2] = xs[2] - dt*vs[2]; + xbc[0] = xb[0] - dt*vb[0]; + xbc[1] = xb[1] - dt*vb[1]; + xbc[2] = xb[2] - dt*vb[2]; + + excoll[0] = ex[0] - dt*(omega[1]*ex[2] - omega[2]*ex[1]); + excoll[1] = ex[1] - dt*(omega[2]*ex[0] - omega[0]*ex[2]); + excoll[2] = ex[2] - dt*(omega[0]*ex[1] - omega[1]*ex[0]); + + eycoll[0] = ey[0] - dt*(omega[1]*ey[2] - omega[2]*ey[1]); + eycoll[1] = ey[1] - dt*(omega[2]*ey[0] - omega[0]*ey[2]); + eycoll[2] = ey[2] - dt*(omega[0]*ey[1] - omega[1]*ey[0]); + + ezcoll[0] = ez[0] - dt*(omega[1]*ez[2] - omega[2]*ez[1]); + ezcoll[1] = ez[1] - dt*(omega[2]*ez[0] - omega[0]*ez[2]); + ezcoll[2] = ez[2] - dt*(omega[0]*ez[1] - omega[1]*ez[0]); + + MathExtra::matvec(excoll,eycoll,ezcoll,c1body,dc1); + MathExtra::matvec(excoll,eycoll,ezcoll,c2body,dc2); + MathExtra::matvec(excoll,eycoll,ezcoll,c3body,dc3); + + MathExtra::add3(xbc,dc1,c1); + MathExtra::add3(xbc,dc2,c2); + MathExtra::add3(xbc,dc3,c3); + + MathExtra::sub3(c2,c1,c2mc1); + MathExtra::sub3(c3,c2,c3mc2); + MathExtra::sub3(c1,c3,c1mc3); + + MathExtra::cross3(c2mc1,c3mc2,nbc); + MathExtra::norm3(nbc); + + // check if collision pt is within triangle + // pvec = vector from tri vertex to intersection point + // xproduct = cross product of edge vec with pvec + // if dot product of xproduct with nbc < 0.0 for any of 3 edges, + // intersection point is outside tri + + MathExtra::sub3(xsc,c1,pvec); + MathExtra::cross3(c2mc1,pvec,xproduct); + if (MathExtra::dot3(xproduct,nbc) < 0.0) return 0; + + MathExtra::sub3(xsc,c2,pvec); + MathExtra::cross3(c3mc2,pvec,xproduct); + if (MathExtra::dot3(xproduct,nbc) < 0.0) return 0; + + MathExtra::sub3(xsc,c3,pvec); + MathExtra::cross3(c1mc3,pvec,xproduct); + if (MathExtra::dot3(xproduct,nbc) < 0.0) return 0; + + return 1; +} + /* ---------------------------------------------------------------------- check if SRD particle S is inside wall IWALL ------------------------------------------------------------------------- */ @@ -1439,7 +1767,7 @@ double FixSRD::collision_sphere_exact(double *xs, double *xb, double vs_dot_vs,vb_dot_vb,vs_dot_vb; double vs_dot_xb,vb_dot_xs,vs_dot_xs,vb_dot_xb; double xs_dot_xs,xb_dot_xb,xs_dot_xb; - double a,b,c,scale,dt; + double a,b,c,scale; vs_dot_vs = vs[0]*vs[0] + vs[1]*vs[1] + vs[2]*vs[2]; vb_dot_vb = vb[0]*vb[0] + vb[1]*vb[1] + vb[2]*vb[2]; @@ -1458,7 +1786,7 @@ double FixSRD::collision_sphere_exact(double *xs, double *xb, b = 2.0 * (vs_dot_xb + vb_dot_xs - vs_dot_xs - vb_dot_xb); c = xs_dot_xs + xb_dot_xb - 2.0*xs_dot_xb - big->radsq; - dt = (-b + sqrt(b*b - 4.0*a*c)) / (2.0*a); + double dt = (-b + sqrt(b*b - 4.0*a*c)) / (2.0*a); xscoll[0] = xs[0] - dt*vs[0]; xscoll[1] = xs[1] - dt*vs[1]; @@ -1529,7 +1857,7 @@ double FixSRD::collision_ellipsoid_exact(double *xs, double *xb, double vs_vb[3],xs_xb[3],omega_ex[3],omega_ey[3],omega_ez[3]; double excoll[3],eycoll[3],ezcoll[3],delta[3],xbody[3],nbody[3]; double ax,bx,cx,ay,by,cy,az,bz,cz; - double a,b,c,dt,scale; + double a,b,c,scale; double *omega = big->omega; double *ex = big->ex; @@ -1539,17 +1867,9 @@ double FixSRD::collision_ellipsoid_exact(double *xs, double *xb, vs_vb[0] = vs[0]-vb[0]; vs_vb[1] = vs[1]-vb[1]; vs_vb[2] = vs[2]-vb[2]; xs_xb[0] = xs[0]-xb[0]; xs_xb[1] = xs[1]-xb[1]; xs_xb[2] = xs[2]-xb[2]; - omega_ex[0] = omega[1]*ex[2] - omega[2]*ex[1]; - omega_ex[1] = omega[2]*ex[0] - omega[0]*ex[2]; - omega_ex[2] = omega[0]*ex[1] - omega[1]*ex[0]; - - omega_ey[0] = omega[1]*ey[2] - omega[2]*ey[1]; - omega_ey[1] = omega[2]*ey[0] - omega[0]*ey[2]; - omega_ey[2] = omega[0]*ey[1] - omega[1]*ey[0]; - - omega_ez[0] = omega[1]*ez[2] - omega[2]*ez[1]; - omega_ez[1] = omega[2]*ez[0] - omega[0]*ez[2]; - omega_ez[2] = omega[0]*ez[1] - omega[1]*ez[0]; + MathExtra::cross3(omega,ex,omega_ex); + MathExtra::cross3(omega,ey,omega_ey); + MathExtra::cross3(omega,ez,omega_ez); ax = vs_vb[0]*omega_ex[0] + vs_vb[1]*omega_ex[1] + vs_vb[2]*omega_ex[2]; bx = -(vs_vb[0]*ex[0] + vs_vb[1]*ex[1] + vs_vb[2]*ex[2]); @@ -1574,7 +1894,7 @@ double FixSRD::collision_ellipsoid_exact(double *xs, double *xb, c = cx*cx*big->aradsqinv + cy*cy*big->bradsqinv + cz*cz*big->cradsqinv - 1.0; - dt = (-b + sqrt(b*b - 4.0*a*c)) / (2.0*a); + double dt = (-b + sqrt(b*b - 4.0*a*c)) / (2.0*a); xscoll[0] = xs[0] - dt*vs[0]; xscoll[1] = xs[1] - dt*vs[1]; @@ -1590,37 +1910,27 @@ double FixSRD::collision_ellipsoid_exact(double *xs, double *xb, // norm = normal in space frame // only worry about normalizing final norm vector - excoll[0] = ex[0] - dt * (omega[1]*ex[2] - omega[2]*ex[1]); - excoll[1] = ex[1] - dt * (omega[2]*ex[0] - omega[0]*ex[2]); - excoll[2] = ex[2] - dt * (omega[0]*ex[1] - omega[1]*ex[0]); + excoll[0] = ex[0] - dt*(omega[1]*ex[2] - omega[2]*ex[1]); + excoll[1] = ex[1] - dt*(omega[2]*ex[0] - omega[0]*ex[2]); + excoll[2] = ex[2] - dt*(omega[0]*ex[1] - omega[1]*ex[0]); - eycoll[0] = ey[0] - dt * (omega[1]*ey[2] - omega[2]*ey[1]); - eycoll[1] = ey[1] - dt * (omega[2]*ey[0] - omega[0]*ey[2]); - eycoll[2] = ey[2] - dt * (omega[0]*ey[1] - omega[1]*ey[0]); + eycoll[0] = ey[0] - dt*(omega[1]*ey[2] - omega[2]*ey[1]); + eycoll[1] = ey[1] - dt*(omega[2]*ey[0] - omega[0]*ey[2]); + eycoll[2] = ey[2] - dt*(omega[0]*ey[1] - omega[1]*ey[0]); - ezcoll[0] = ez[0] - dt * (omega[1]*ez[2] - omega[2]*ez[1]); - ezcoll[1] = ez[1] - dt * (omega[2]*ez[0] - omega[0]*ez[2]); - ezcoll[2] = ez[2] - dt * (omega[0]*ez[1] - omega[1]*ez[0]); + ezcoll[0] = ez[0] - dt*(omega[1]*ez[2] - omega[2]*ez[1]); + ezcoll[1] = ez[1] - dt*(omega[2]*ez[0] - omega[0]*ez[2]); + ezcoll[2] = ez[2] - dt*(omega[0]*ez[1] - omega[1]*ez[0]); - delta[0] = xscoll[0] - xbcoll[0]; - delta[1] = xscoll[1] - xbcoll[1]; - delta[2] = xscoll[2] - xbcoll[2]; - - xbody[0] = delta[0]*excoll[0] + delta[1]*excoll[1] + delta[2]*excoll[2]; - xbody[1] = delta[0]*eycoll[0] + delta[1]*eycoll[1] + delta[2]*eycoll[2]; - xbody[2] = delta[0]*ezcoll[0] + delta[1]*ezcoll[1] + delta[2]*ezcoll[2]; + MathExtra::sub3(xscoll,xbcoll,delta); + MathExtra::transpose_matvec(excoll,eycoll,ezcoll,delta,xbody); nbody[0] = xbody[0]*big->aradsqinv; nbody[1] = xbody[1]*big->bradsqinv; nbody[2] = xbody[2]*big->cradsqinv; - norm[0] = excoll[0]*nbody[0] + eycoll[0]*nbody[1] + ezcoll[0]*nbody[2]; - norm[1] = excoll[1]*nbody[0] + eycoll[1]*nbody[1] + ezcoll[1]*nbody[2]; - norm[2] = excoll[2]*nbody[0] + eycoll[2]*nbody[1] + ezcoll[2]*nbody[2]; - scale = 1.0/sqrt(norm[0]*norm[0] + norm[1]*norm[1] + norm[2]*norm[2]); - norm[0] *= scale; - norm[1] *= scale; - norm[2] *= scale; + MathExtra::matvec(excoll,eycoll,ezcoll,nbody,norm); + MathExtra::norm3(norm); return dt; } @@ -1628,6 +1938,10 @@ double FixSRD::collision_ellipsoid_exact(double *xs, double *xb, /* ---------------------------------------------------------------------- collision of SRD particle S with surface of ellipsoidal big particle B inexact because just push SRD to surface of big particle at end of step + time of collision = end of step + xscoll = collision pt = position of SRD at time of collision + xbcoll = xb = position of big particle at time of collision + norm = surface normal of collision pt at time of collision ------------------------------------------------------------------------- */ void FixSRD::collision_ellipsoid_inexact(double *xs, double *xb, @@ -1636,22 +1950,18 @@ void FixSRD::collision_ellipsoid_inexact(double *xs, double *xb, double *norm) { double xs_xb[3],delta[3],xbody[3],nbody[3]; - double x,y,z,scale; double *ex = big->ex; double *ey = big->ey; double *ez = big->ez; - xs_xb[0] = xs[0] - xb[0]; - xs_xb[1] = xs[1] - xb[1]; - xs_xb[2] = xs[2] - xb[2]; + MathExtra::sub3(xs,xb,xs_xb); + double x = MathExtra::dot3(xs_xb,ex); + double y = MathExtra::dot3(xs_xb,ey); + double z = MathExtra::dot3(xs_xb,ez); - x = xs_xb[0]*ex[0] + xs_xb[1]*ex[1] + xs_xb[2]*ex[2]; - y = xs_xb[0]*ey[0] + xs_xb[1]*ey[1] + xs_xb[2]*ey[2]; - z = xs_xb[0]*ez[0] + xs_xb[1]*ez[1] + xs_xb[2]*ez[2]; - - scale = 1.0/sqrt(x*x*big->aradsqinv + y*y*big->bradsqinv + - z*z*big->cradsqinv); + double scale = 1.0/sqrt(x*x*big->aradsqinv + y*y*big->bradsqinv + + z*z*big->cradsqinv); x *= scale; y *= scale; z *= scale; @@ -1669,25 +1979,73 @@ void FixSRD::collision_ellipsoid_inexact(double *xs, double *xb, // norm = normal in space frame // only worry about normalizing final norm vector - delta[0] = xscoll[0] - xbcoll[0]; - delta[1] = xscoll[1] - xbcoll[1]; - delta[2] = xscoll[2] - xbcoll[2]; - - xbody[0] = delta[0]*ex[0] + delta[1]*ex[1] + delta[2]*ex[2]; - xbody[1] = delta[0]*ey[0] + delta[1]*ey[1] + delta[2]*ey[2]; - xbody[2] = delta[0]*ez[0] + delta[1]*ez[1] + delta[2]*ez[2]; + MathExtra::sub3(xscoll,xbcoll,delta); + MathExtra::transpose_matvec(ex,ey,ez,delta,xbody); nbody[0] = xbody[0]*big->aradsqinv; nbody[1] = xbody[1]*big->bradsqinv; nbody[2] = xbody[2]*big->cradsqinv; - norm[0] = ex[0]*nbody[0] + ey[0]*nbody[1] + ez[0]*nbody[2]; - norm[1] = ex[1]*nbody[0] + ey[1]*nbody[1] + ez[1]*nbody[2]; - norm[2] = ex[2]*nbody[0] + ey[2]*nbody[1] + ez[2]*nbody[2]; - scale = 1.0/sqrt(norm[0]*norm[0] + norm[1]*norm[1] + norm[2]*norm[2]); - norm[0] *= scale; - norm[1] *= scale; - norm[2] *= scale; + MathExtra::matvec(ex,ey,ez,nbody,norm); + MathExtra::norm3(norm); +} + +/* ---------------------------------------------------------------------- + collision of SRD particle S with surface of line big particle B + exact because compute time of collision + dt = time previous to now at which collision occurs + xscoll = collision pt = position of SRD at time of collision + xbcoll = position of big particle at time of collision + norm = surface normal of collision pt at time of collision +------------------------------------------------------------------------- */ + +double FixSRD::collision_line_exact(double *xs, double *xb, + double *vs, double *vb, Big *big, + double dt_step, + double *xscoll, double *xbcoll, + double *norm) +{ + xscoll[0] = xsc[0]; + xscoll[1] = xsc[1]; + xscoll[2] = 0.0; + xbcoll[0] = xbc[0]; + xbcoll[1] = xbc[1]; + xbcoll[2] = 0.0; + + norm[0] = nbc[0]; + norm[1] = nbc[1]; + norm[2] = 0.0; + + return (1.0-tfraction)*dt_step; +} + +/* ---------------------------------------------------------------------- + collision of SRD particle S with surface of triangle big particle B + exact because compute time of collision + dt = time previous to now at which collision occurs + xscoll = collision pt = position of SRD at time of collision + xbcoll = position of big particle at time of collision + norm = surface normal of collision pt at time of collision +------------------------------------------------------------------------- */ + +double FixSRD::collision_tri_exact(double *xs, double *xb, + double *vs, double *vb, Big *big, + double dt_step, + double *xscoll, double *xbcoll, + double *norm) +{ + xscoll[0] = xsc[0]; + xscoll[1] = xsc[1]; + xscoll[2] = xsc[2]; + xbcoll[0] = xbc[0]; + xbcoll[1] = xbc[1]; + xbcoll[2] = xbc[2]; + + norm[0] = nbc[0]; + norm[1] = nbc[1]; + norm[2] = nbc[2]; + + return (1.0-tfraction)*dt_step; } /* ---------------------------------------------------------------------- @@ -1695,6 +2053,7 @@ void FixSRD::collision_ellipsoid_inexact(double *xs, double *xb, exact because compute time of collision dt = time previous to now at which collision occurs xscoll = collision pt = position of SRD at time of collision + xbcoll = position of wall at time of collision norm = surface normal of collision pt at time of collision ------------------------------------------------------------------------- */ @@ -1725,6 +2084,7 @@ double FixSRD::collision_wall_exact(double *xs, int iwall, double *vs, inexact because just push SRD to surface of wall at end of step time of collision = end of step xscoll = collision pt = position of SRD at time of collision + xbcoll = position of wall at time of collision norm = surface normal of collision pt at time of collision ------------------------------------------------------------------------- */ @@ -1748,54 +2108,18 @@ void FixSRD::collision_wall_inexact(double *xs, int iwall, double *xscoll, } /* ---------------------------------------------------------------------- - SLIP collision with sphere - vs = velocity of SRD, vb = velocity of BIG - norm = unit normal from surface of BIG at collision pt - v of BIG particle in direction of surf normal is added to v of SRD - return vsnew of SRD -------------------------------------------------------------------------- */ - -void FixSRD::slip_sphere(double *vs, double *vb, double *norm, double *vsnew) -{ - double r1,r2,vnmag,vs_dot_n,vsurf_dot_n; - double tangent[3]; - - while (1) { - r1 = sigma * random->gaussian(); - r2 = sigma * random->gaussian(); - vnmag = sqrt(r1*r1 + r2*r2); - if (vnmag*vnmag <= vmaxsq) break; - } - - vs_dot_n = vs[0]*norm[0] + vs[1]*norm[1] + vs[2]*norm[2]; - - tangent[0] = vs[0] - vs_dot_n*norm[0]; - tangent[1] = vs[1] - vs_dot_n*norm[1]; - tangent[2] = vs[2] - vs_dot_n*norm[2]; - - // vsurf = velocity of collision pt = translation/rotation of BIG particle - // for sphere, only vb (translation) can contribute in normal direction - - vsurf_dot_n = vb[0]*norm[0] + vb[1]*norm[1] + vb[2]*norm[2]; - - vsnew[0] = (vnmag+vsurf_dot_n)*norm[0] + tangent[0]; - vsnew[1] = (vnmag+vsurf_dot_n)*norm[1] + tangent[1]; - vsnew[2] = (vnmag+vsurf_dot_n)*norm[2] + tangent[2]; -} - -/* ---------------------------------------------------------------------- - SLIP collision with ellipsoid + SLIP collision with BIG particle with omega vs = velocity of SRD, vb = velocity of BIG xb = position of BIG, omega = rotation of BIG xsurf = collision pt on surf of BIG norm = unit normal from surface of BIG at collision pt v of BIG particle in direction of surf normal is added to v of SRD - includes component due to rotation of ellipsoid + includes component due to rotation of BIG return vsnew of SRD ------------------------------------------------------------------------- */ -void FixSRD::slip_ellipsoid(double *vs, double *vb, double *xb, Big *big, - double *xsurf, double *norm, double *vsnew) +void FixSRD::slip(double *vs, double *vb, double *xb, Big *big, + double *xsurf, double *norm, double *vsnew) { double r1,r2,vnmag,vs_dot_n,vsurf_dot_n; double tangent[3],vsurf[3]; @@ -1815,6 +2139,8 @@ void FixSRD::slip_ellipsoid(double *vs, double *vb, double *xb, Big *big, tangent[2] = vs[2] - vs_dot_n*norm[2]; // vsurf = velocity of collision pt = translation/rotation of BIG particle + // NOTE: for sphere could just use vsurf = vb, since w x (xsurf-xb) + // is orthogonal to norm and thus doesn't contribute to vsurf_dot_n vsurf[0] = vb[0] + omega[1]*(xsurf[2]-xb[2]) - omega[2]*(xsurf[1]-xb[1]); vsurf[1] = vb[1] + omega[2]*(xsurf[0]-xb[0]) - omega[0]*(xsurf[2]-xb[2]); @@ -1875,7 +2201,7 @@ void FixSRD::slip_wall(double *vs, int iwall, double *norm, double *vsnew) } /* ---------------------------------------------------------------------- - NO-SLIP collision with sphere or ellipsoid + NO-SLIP collision with BIG particle including WALL vs = velocity of SRD, vb = velocity of BIG xb = position of BIG, omega = rotation of BIG xsurf = collision pt on surf of BIG @@ -1885,12 +2211,11 @@ void FixSRD::slip_wall(double *vs, int iwall, double *norm, double *vsnew) return vsnew of SRD ------------------------------------------------------------------------- */ -void FixSRD::noslip(double *vs, double *vb, double *xb, Big *big, +void FixSRD::noslip(double *vs, double *vb, double *xb, Big *big, int iwall, double *xsurf, double *norm, double *vsnew) { double vs_dot_n,scale,r1,r2,vnmag,vtmag1,vtmag2; double tangent1[3],tangent2[3]; - double *omega = big->omega; vs_dot_n = vs[0]*norm[0] + vs[1]*norm[1] + vs[2]*norm[2]; @@ -1920,60 +2245,20 @@ void FixSRD::noslip(double *vs, double *vb, double *xb, Big *big, vsnew[1] = vnmag*norm[1] + vtmag1*tangent1[1] + vtmag2*tangent2[1]; vsnew[2] = vnmag*norm[2] + vtmag1*tangent1[2] + vtmag2*tangent2[2]; - // add in velocity of collision pt = translation/rotation of BIG particle + // add in velocity of collision pt + // for WALL: velocity of wall in one dim + // else: translation/rotation of BIG particle - vsnew[0] += vb[0] + omega[1]*(xsurf[2]-xb[2]) - omega[2]*(xsurf[1]-xb[1]); - vsnew[1] += vb[1] + omega[2]*(xsurf[0]-xb[0]) - omega[0]*(xsurf[2]-xb[2]); - vsnew[2] += vb[2] + omega[0]*(xsurf[1]-xb[1]) - omega[1]*(xsurf[0]-xb[0]); -} + if (big->type == WALL) { + int dim = wallwhich[iwall] / 2; + vsnew[dim] += vwall[iwall]; -/* ---------------------------------------------------------------------- - NO-SLIP collision with wall IWALL - vs = velocity of SRD - xsurf = collision pt on surf of WALL - norm = unit normal from WALL at collision pt - v of collision pt is added to v of SRD - return vsnew of SRD -------------------------------------------------------------------------- */ - -void FixSRD::noslip_wall(double *vs, int iwall, - double *xsurf, double *norm, double *vsnew) -{ - double vs_dot_n,scale,r1,r2,vnmag,vtmag1,vtmag2; - double tangent1[3],tangent2[3]; - - vs_dot_n = vs[0]*norm[0] + vs[1]*norm[1] + vs[2]*norm[2]; - - tangent1[0] = vs[0] - vs_dot_n*norm[0]; - tangent1[1] = vs[1] - vs_dot_n*norm[1]; - tangent1[2] = vs[2] - vs_dot_n*norm[2]; - scale = 1.0/sqrt(tangent1[0]*tangent1[0] + tangent1[1]*tangent1[1] + - tangent1[2]*tangent1[2]); - tangent1[0] *= scale; - tangent1[1] *= scale; - tangent1[2] *= scale; - - tangent2[0] = norm[1]*tangent1[2] - norm[2]*tangent1[1]; - tangent2[1] = norm[2]*tangent1[0] - norm[0]*tangent1[2]; - tangent2[2] = norm[0]*tangent1[1] - norm[1]*tangent1[0]; - - while (1) { - r1 = sigma * random->gaussian(); - r2 = sigma * random->gaussian(); - vnmag = sqrt(r1*r1 + r2*r2); - vtmag1 = sigma * random->gaussian(); - vtmag2 = sigma * random->gaussian(); - if (vnmag*vnmag + vtmag1*vtmag1 + vtmag2*vtmag2 <= vmaxsq) break; + } else { + double *omega = big->omega; + vsnew[0] += vb[0] + omega[1]*(xsurf[2]-xb[2]) - omega[2]*(xsurf[1]-xb[1]); + vsnew[1] += vb[1] + omega[2]*(xsurf[0]-xb[0]) - omega[0]*(xsurf[2]-xb[2]); + vsnew[2] += vb[2] + omega[0]*(xsurf[1]-xb[1]) - omega[1]*(xsurf[0]-xb[0]); } - - vsnew[0] = vnmag*norm[0] + vtmag1*tangent1[0] + vtmag2*tangent2[0]; - vsnew[1] = vnmag*norm[1] + vtmag1*tangent1[1] + vtmag2*tangent2[1]; - vsnew[2] = vnmag*norm[2] + vtmag1*tangent1[2] + vtmag2*tangent2[2]; - - // add in velocity of collision pt = velocity of wall - - int dim = wallwhich[iwall] / 2; - vsnew[dim] += vwall[iwall]; } /* ---------------------------------------------------------------------- @@ -2015,6 +2300,7 @@ void FixSRD::force_torque(double *vsold, double *vsnew, ------------------------------------------------------------------------- */ void FixSRD::force_wall(double *vsold, double *vsnew, int iwall) + { double dpdt[3]; @@ -2053,7 +2339,7 @@ int FixSRD::update_srd(int i, double dt, double *xscoll, double *vsnew, xs[1] < srdlo[1] || xs[1] > srdhi[1] || xs[2] < srdlo[2] || xs[2] > srdhi[2]) { if (screen) { - error->warning("Fix srd particle moved outside valid domain"); + error->warning(FLERR,"Fix srd particle moved outside valid domain"); fprintf(screen," particle %d on proc %d at timestep " BIGINT_FORMAT, atom->tag[i],me,update->ntimestep); fprintf(screen," xnew %g %g %g\n",xs[0],xs[1],xs[2]); @@ -2077,8 +2363,6 @@ int FixSRD::update_srd(int i, double dt, double *xscoll, double *vsnew, void FixSRD::parameterize() { - double PI = 4.0*atan(1.0); - // timesteps dt_big = update->dt; @@ -2090,12 +2374,20 @@ void FixSRD::parameterize() AtomVecEllipsoid::Bonus *ebonus; if (avec_ellipsoid) ebonus = avec_ellipsoid->bonus; + AtomVecLine::Bonus *lbonus; + if (avec_line) lbonus = avec_line->bonus; + AtomVecTri::Bonus *tbonus; + if (avec_tri) tbonus = avec_tri->bonus; double *radius = atom->radius; int *ellipsoid = atom->ellipsoid; + int *line = atom->line; + int *tri = atom->tri; int *mask = atom->mask; int nlocal = atom->nlocal; - any_ellipsoids = 0; + int any_ellipsoids = 0; + int any_lines = 0; + int any_tris = 0; maxbigdiam = 0.0; minbigdiam = BIG; @@ -2113,8 +2405,22 @@ void FixSRD::parameterize() minbigdiam = MIN(minbigdiam,2.0*shape[0]); minbigdiam = MIN(minbigdiam,2.0*shape[1]); minbigdiam = MIN(minbigdiam,2.0*shape[2]); + } else if (line && line[i] >= 0) { + any_lines = 1; + double length = lbonus[line[i]].length; + maxbigdiam = MAX(maxbigdiam,length); + minbigdiam = MIN(minbigdiam,length); + } else if (tri && tri[i] >= 0) { + any_tris = 1; + double length1 = MathExtra::len3(tbonus[tri[i]].c1); + double length2 = MathExtra::len3(tbonus[tri[i]].c2); + double length3 = MathExtra::len3(tbonus[tri[i]].c3); + double length = MAX(length1,length2); + length = MAX(length,length3); + maxbigdiam = MAX(maxbigdiam,length); + minbigdiam = MIN(minbigdiam,length); } else - error->one("Big particle in fix srd cannot be point particle"); + error->one(FLERR,"Big particle in fix srd cannot be point particle"); } double tmp = maxbigdiam; @@ -2127,10 +2433,20 @@ void FixSRD::parameterize() int itmp = any_ellipsoids; MPI_Allreduce(&itmp,&any_ellipsoids,1,MPI_INT,MPI_MAX,world); + itmp = any_lines; + MPI_Allreduce(&itmp,&any_lines,1,MPI_INT,MPI_MAX,world); + itmp = any_tris; + MPI_Allreduce(&itmp,&any_tris,1,MPI_INT,MPI_MAX,world); - // big particles are only torqued if are ellipsoids or NOSLIP collisions + if (any_lines && overlap == 0) + error->all(FLERR,"Cannot use lines with fix srd unless overlap is set"); + if (any_tris && overlap == 0) + error->all(FLERR,"Cannot use tris with fix srd unless overlap is set"); - if (any_ellipsoids == 0 && collidestyle == SLIP) torqueflag = 0; + // big particles are only torqued if ellipsoids/lines/tris or NOSLIP + + if (any_ellipsoids == 0 && any_lines == 0 && any_tris == 0 && + collidestyle == SLIP) torqueflag = 0; else torqueflag = 1; // mass of SRD particles, require monodispersity @@ -2145,10 +2461,8 @@ void FixSRD::parameterize() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { if (rmass) { - if (mass_srd == 0.0) { - mass_srd = rmass[i]; - printf("MASS SRD %g\n",rmass[i]); - } else if (rmass[i] != mass_srd) flag = 1; + if (mass_srd == 0.0) mass_srd = rmass[i]; + else if (rmass[i] != mass_srd) flag = 1; } else { if (mass_srd == 0.0) mass_srd = mass[type[i]]; else if (mass[type[i]] != mass_srd) flag = 1; @@ -2158,7 +2472,7 @@ void FixSRD::parameterize() int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_MAX,world); if (flagall) - error->all("Fix srd requires SRD particles all have same mass"); + error->all(FLERR,"Fix srd requires SRD particles all have same mass"); // set temperature and lamda of SRD particles from each other // lamda = dt_srd * sqrt(boltz * temperature_srd / mass_srd); @@ -2178,28 +2492,46 @@ void FixSRD::parameterize() vmaxsq = vmax*vmax; // volbig = total volume of all big particles + // LINE/TRI particles have no volume + // incorrect if part of rigid particles, so add fudge factor with WIDTH // apply radfactor to reduce final volume double volbig = 0.0; + double WIDTH = 1.0; if (dimension == 3) { for (int i = 0; i < nlocal; i++) if (mask[i] & biggroupbit) { - if (radius && radius[i] > 0.0) - volbig += 4.0/3.0*PI*radius[i]*radius[i]*radius[i]; - else if (ellipsoid && ellipsoid[i] >= 0) { + if (radius && radius[i] > 0.0) { + double r = radfactor * radius[i]; + volbig += 4.0/3.0*MY_PI * r*r*r;; + } else if (ellipsoid && ellipsoid[i] >= 0) { double *shape = ebonus[ellipsoid[i]].shape; - volbig += 4.0/3.0*PI * shape[0]*shape[1]*shape[2]; + volbig += 4.0/3.0*MY_PI * shape[0]*shape[1]*shape[2] * + radfactor*radfactor*radfactor; + } else if (tri && tri[i] >= 0) { + double *c1 = tbonus[tri[i]].c1; + double *c2 = tbonus[tri[i]].c2; + double *c3 = tbonus[tri[i]].c3; + double c2mc1[3],c3mc1[3],cross[3]; + MathExtra::sub3(c2,c1,c2mc1); + MathExtra::sub3(c3,c1,c3mc1); + MathExtra::cross3(c2mc1,c3mc1,cross); + volbig += 0.5 * MathExtra::len3(cross); } } } else { for (int i = 0; i < nlocal; i++) if (mask[i] & biggroupbit) { - if (radius && radius[i] > 0.0) - volbig += PI*radius[i]*radius[i]; - else if (ellipsoid && ellipsoid[i] >= 0) { + if (radius && radius[i] > 0.0) { + double r = radfactor * radius[i]; + volbig += MY_PI * r*r; + } else if (ellipsoid && ellipsoid[i] >= 0) { double *shape = ebonus[ellipsoid[i]].shape; - volbig += PI*shape[0]*shape[1]; + volbig += MY_PI * shape[0]*shape[1] * radfactor*radfactor; + } else if (line && line[i] >= 0) { + double length = lbonus[line[i]].length; + volbig += length * WIDTH; } } } @@ -2207,9 +2539,6 @@ void FixSRD::parameterize() tmp = volbig; MPI_Allreduce(&tmp,&volbig,1,MPI_DOUBLE,MPI_SUM,world); - if (dimension == 3) volbig *= radfactor*radfactor*radfactor; - else volbig *= radfactor*radfactor; - // particle counts bigint mbig = 0; @@ -2220,7 +2549,10 @@ void FixSRD::parameterize() mass_big = 0.0; for (int i = 0; i < nlocal; i++) - if (mask[i] & biggroupbit) mass_big += rmass[i]; + if (mask[i] & biggroupbit) { + if (rmass) mass_big += rmass[i]; + else mass_big += mass[type[i]]; + } tmp = mass_big; MPI_Allreduce(&tmp,&mass_big,1,MPI_DOUBLE,MPI_SUM,world); @@ -2328,7 +2660,7 @@ void FixSRD::parameterize() if (nbin1x < comm->procgrid[0] || nbin1y < comm->procgrid[1] || nbin1z < comm->procgrid[2]) - error->all("Fewer SRD bins than processors in some dimension"); + error->all(FLERR,"Fewer SRD bins than processors in some dimension"); // check if SRD bins are within tolerance for shape and size @@ -2342,9 +2674,9 @@ void FixSRD::parameterize() if (tolflag) { if (cubicflag == CUBIC_ERROR) - error->all("SRD bins for fix srd are not cubic enough"); + error->all(FLERR,"SRD bins for fix srd are not cubic enough"); if (me == 0) - error->warning("SRD bins for fix srd are not cubic enough"); + error->warning(FLERR,"SRD bins for fix srd are not cubic enough"); } tolflag = 0; @@ -2359,9 +2691,10 @@ void FixSRD::parameterize() if (tolflag) { if (cubicflag == CUBIC_ERROR) - error->all("SRD bin size for fix srd differs from user request"); + error->all(FLERR,"SRD bin size for fix srd differs from user request"); if (me == 0) - error->warning("SRD bin size for fix srd differs from user request"); + error->warning(FLERR, + "SRD bin size for fix srd differs from user request"); } // error if lamda < 0.6 of SRD grid size and no shifting allowed @@ -2372,52 +2705,66 @@ void FixSRD::parameterize() shiftflag = 0; if (lamda < 0.6*maxgridsrd && shiftuser == SHIFT_NO) - error->all("Fix srd lamda must be >= 0.6 of SRD grid size"); + error->all(FLERR,"Fix srd lamda must be >= 0.6 of SRD grid size"); else if (lamda < 0.6*maxgridsrd && shiftuser == SHIFT_POSSIBLE) { shiftflag = 1; if (me == 0) - error->warning("SRD bin shifting turned on due to small lamda"); + error->warning(FLERR,"SRD bin shifting turned on due to small lamda"); } else if (shiftuser == SHIFT_YES) shiftflag = 1; // warnings if (bigexist && maxgridsrd > 0.25 * minbigdiam && me == 0) - error->warning("Fix srd grid size > 1/4 of big particle diameter"); + error->warning(FLERR,"Fix srd grid size > 1/4 of big particle diameter"); if (viscosity < 0.0 && me == 0) - error->warning("Fix srd viscosity < 0.0 due to low SRD density"); + error->warning(FLERR,"Fix srd viscosity < 0.0 due to low SRD density"); if (bigexist && dt_big*vmax > minbigdiam && me == 0) - error->warning("Fix srd particles may move > big particle diameter"); - if (wallexist && collidestyle == NOSLIP && shiftflag == 1) - error->warning("Fix srd no-slip wall collisions with bin shifting"); + error->warning(FLERR,"Fix srd particles may move > big particle diameter"); } /* ---------------------------------------------------------------------- set static parameters of each big particle, owned and ghost called each reneighboring - use radfactor in distance parameters + use radfactor in distance parameters as appropriate ------------------------------------------------------------------------- */ void FixSRD::big_static() { int i; - double rad,arad,brad,crad; - double *shape; + double rad,arad,brad,crad,length,length1,length2,length3; + double *shape,*c1,*c2,*c3; + double c2mc1[3],c3mc1[3]; AtomVecEllipsoid::Bonus *ebonus; if (avec_ellipsoid) ebonus = avec_ellipsoid->bonus; + AtomVecLine::Bonus *lbonus; + if (avec_line) lbonus = avec_line->bonus; + AtomVecTri::Bonus *tbonus; + if (avec_tri) tbonus = avec_tri->bonus; double *radius = atom->radius; int *ellipsoid = atom->ellipsoid; + int *line = atom->line; + int *tri = atom->tri; + int *type = atom->type; double skinhalf = 0.5 * neighbor->skin; for (int k = 0; k < nbig; k++) { i = biglist[k].index; + + // sphere + // set radius and radsq and cutoff based on radius + if (radius && radius[i] > 0.0) { biglist[k].type = SPHERE; rad = radfactor*radius[i]; biglist[k].radius = rad; biglist[k].radsq = rad*rad; biglist[k].cutbinsq = (rad+skinhalf) * (rad+skinhalf); + + // ellipsoid + // set abc radsqinv and cutoff based on max radius + } else if (ellipsoid && ellipsoid[i] >= 0) { shape = ebonus[ellipsoid[i]].shape; biglist[k].type = ELLIPSOID; @@ -2430,33 +2777,67 @@ void FixSRD::big_static() rad = MAX(arad,brad); rad = MAX(rad,crad); biglist[k].cutbinsq = (rad+skinhalf) * (rad+skinhalf); + + // line + // set length and cutoff based on 1/2 length + + } else if (line && line[i] >= 0) { + length = lbonus[line[i]].length; + biglist[k].type = LINE; + biglist[k].length = length; + rad = 0.5*length; + biglist[k].cutbinsq = (rad+skinhalf) * (rad+skinhalf); + + // tri + // set normbody based on c1,c2,c3 + // set cutoff based on point furthest from centroid + + } else if (tri && tri[i] >= 0) { + biglist[k].type = TRIANGLE; + c1 = tbonus[tri[i]].c1; + c2 = tbonus[tri[i]].c2; + c3 = tbonus[tri[i]].c3; + MathExtra::sub3(c2,c1,c2mc1); + MathExtra::sub3(c3,c1,c3mc1); + MathExtra::cross3(c2mc1,c3mc1,biglist[k].normbody); + length1 = MathExtra::len3(c1); + length2 = MathExtra::len3(c2); + length3 = MathExtra::len3(c3); + rad = MAX(length1,length2); + rad = MAX(rad,length3); + biglist[k].cutbinsq = (rad+skinhalf) * (rad+skinhalf); } } } /* ---------------------------------------------------------------------- - set dynamics parameters of each big particle, owned and ghost - for ELLIPSOID, need current omega and ex,ey,ez - for SPHERE, need current omega from atom->omega or atom->angmom + set dynamic parameters of each big particle, owned and ghost called each timestep ------------------------------------------------------------------------- */ void FixSRD::big_dynamic() { int i; - double *shape,*quat; + double *shape,*quat,*inertia; + double inertiaone[3]; AtomVecEllipsoid::Bonus *ebonus; if (avec_ellipsoid) ebonus = avec_ellipsoid->bonus; + AtomVecLine::Bonus *lbonus; + if (avec_line) lbonus = avec_line->bonus; + AtomVecTri::Bonus *tbonus; + if (avec_tri) tbonus = avec_tri->bonus; double **omega = atom->omega; double **angmom = atom->angmom; double *rmass = atom->rmass; int *ellipsoid = atom->ellipsoid; + int *line = atom->line; + int *tri = atom->tri; for (int k = 0; k < nbig; k++) { i = biglist[k].index; - // sphere with omega + // sphere // set omega from atom->omega directly if (biglist[k].type == SPHERE) { @@ -2464,15 +2845,45 @@ void FixSRD::big_dynamic() biglist[k].omega[1] = omega[i][1]; biglist[k].omega[2] = omega[i][2]; - // ellipsoid with angmom - // calculate ex,ey,ez and omega from quaternion and angmom + // ellipsoid + // set ex,ey,ez from quaternion + // set omega from angmom & ex,ey,ez } else if (biglist[k].type == ELLIPSOID) { - shape = ebonus[ellipsoid[i]].shape; quat = ebonus[ellipsoid[i]].quat; - exyz_from_q(quat,biglist[k].ex,biglist[k].ey,biglist[k].ez); - omega_from_mq(angmom[i],biglist[k].ex,biglist[k].ey,biglist[k].ez, - rmass[i],shape,biglist[k].omega); + MathExtra::q_to_exyz(quat,biglist[k].ex,biglist[k].ey,biglist[k].ez); + shape = ebonus[ellipsoid[i]].shape; + inertiaone[0] = EINERTIA*rmass[i] * (shape[1]*shape[1]+shape[2]*shape[2]); + inertiaone[1] = EINERTIA*rmass[i] * (shape[0]*shape[0]+shape[2]*shape[2]); + inertiaone[2] = EINERTIA*rmass[i] * (shape[0]*shape[0]+shape[1]*shape[1]); + MathExtra::angmom_to_omega(angmom[i], + biglist[k].ex,biglist[k].ey,biglist[k].ez, + inertiaone,biglist[k].omega); + + // line + // set omega from atom->omega directly + + } else if (biglist[k].type == LINE) { + biglist[k].theta = lbonus[line[i]].theta; + biglist[k].omega[0] = omega[i][0]; + biglist[k].omega[1] = omega[i][1]; + biglist[k].omega[2] = omega[i][2]; + + // tri + // set ex,ey,ez from quaternion + // set omega from angmom & ex,ey,ez + // set unit space-frame norm from body-frame norm + + } else if (biglist[k].type == TRIANGLE) { + quat = tbonus[tri[i]].quat; + MathExtra::q_to_exyz(quat,biglist[k].ex,biglist[k].ey,biglist[k].ez); + inertia = tbonus[tri[i]].inertia; + MathExtra::angmom_to_omega(angmom[i], + biglist[k].ex,biglist[k].ey,biglist[k].ez, + inertia,biglist[k].omega); + MathExtra::matvec(biglist[k].ex,biglist[k].ey,biglist[k].ez, + biglist[k].normbody,biglist[k].norm); + MathExtra::norm3(biglist[k].norm); } } } @@ -2812,9 +3223,11 @@ void FixSRD::setup_velocity_shift(int ishift, int dynamic) first->nsend = second->nrecv = 0; if ((myloc[0]+1)*nbin1x % procgrid[0] == 0) second->nsend = first->nrecv = 0; - } else if (dynamic == 0 && domain->xperiodic == 0) { - if (myloc[0] == 0) first->nsend = second->nrecv = 0; - if (myloc[0] == procgrid[0]-1) second->nsend = first->nrecv = 0; + } else { + if (domain->xperiodic == 0) { + if (myloc[0] == 0) first->nsend = second->nrecv = 0; + if (myloc[0] == procgrid[0]-1) second->nsend = first->nrecv = 0; + } } if (reallocflag) { @@ -2854,9 +3267,11 @@ void FixSRD::setup_velocity_shift(int ishift, int dynamic) first->nsend = second->nrecv = 0; if ((myloc[1]+1)*nbin1y % procgrid[1] == 0) second->nsend = first->nrecv = 0; - } else if (dynamic == 0 && domain->yperiodic == 0) { - if (myloc[1] == 0) first->nsend = second->nrecv = 0; - if (myloc[1] == procgrid[1]-1) second->nsend = first->nrecv = 0; + } else { + if (domain->yperiodic == 0) { + if (myloc[1] == 0) first->nsend = second->nrecv = 0; + if (myloc[1] == procgrid[1]-1) second->nsend = first->nrecv = 0; + } } if (reallocflag) { @@ -2897,9 +3312,11 @@ void FixSRD::setup_velocity_shift(int ishift, int dynamic) first->nsend = second->nrecv = 0; if ((myloc[2]+1)*nbin1z % procgrid[2] == 0) second->nsend = first->nrecv = 0; - } else if (dynamic == 0 && domain->zperiodic == 0) { - if (myloc[2] == 0) first->nsend = second->nrecv = 0; - if (myloc[2] == procgrid[2]-1) second->nsend = first->nrecv = 0; + } else { + if (domain->zperiodic == 0) { + if (myloc[2] == 0) first->nsend = second->nrecv = 0; + if (myloc[2] == procgrid[2]-1) second->nsend = first->nrecv = 0; + } } if (reallocflag) { @@ -2955,10 +3372,10 @@ void FixSRD::setup_velocity_shift(int ishift, int dynamic) for (m = 0; m < nsend; m++) vbin[sendlist[m]].owner = 0; } - // if triclinic and streamflag: - // set xctr (in lamda units) for all nbins so can compute bin vstream + // if tstat and deformflag: + // set xctr for all nbins in lamda units so can later compute vstream of bin - if (triclinic && streamflag) { + if (tstat && deformflag) { m = 0; for (k = 0; k < nbinz; k++) for (j = 0; j < nbiny; j++) @@ -3170,55 +3587,6 @@ double FixSRD::bin_bin_distance(int i, int j, int k) return (delx*delx + dely*dely + delz*delz); } -/* ---------------------------------------------------------------------- - compute space-frame ex,ey,ez from current quaternion q - ex,ey,ez = space-frame coords of 1st,2nd,3rd principal axis - operation is ex = q' d q = Q d, where d is (1,0,0) = 1st axis in body frame -------------------------------------------------------------------------- */ - -void FixSRD::exyz_from_q(double *q, double *ex, double *ey, double *ez) -{ - ex[0] = q[0]*q[0] + q[1]*q[1] - q[2]*q[2] - q[3]*q[3]; - ex[1] = 2.0 * (q[1]*q[2] + q[0]*q[3]); - ex[2] = 2.0 * (q[1]*q[3] - q[0]*q[2]); - - ey[0] = 2.0 * (q[1]*q[2] - q[0]*q[3]); - ey[1] = q[0]*q[0] - q[1]*q[1] + q[2]*q[2] - q[3]*q[3]; - ey[2] = 2.0 * (q[2]*q[3] + q[0]*q[1]); - - ez[0] = 2.0 * (q[1]*q[3] + q[0]*q[2]); - ez[1] = 2.0 * (q[2]*q[3] - q[0]*q[1]); - ez[2] = q[0]*q[0] - q[1]*q[1] - q[2]*q[2] + q[3]*q[3]; -} - -/* ---------------------------------------------------------------------- - compute omega from angular momentum - w = omega = angular velocity in space frame - wbody = angular velocity in body frame - set wbody component to 0.0 if inertia component is 0.0 - otherwise body can spin easily around that axis - project space-frame angular momentum onto body axes - and divide by principal moments -------------------------------------------------------------------------- */ - -void FixSRD::omega_from_mq(double *m, double *ex, double *ey, double *ez, - double mass, double *shape, double *w) -{ - double inertia[3],wbody[3]; - - inertia[0] = 0.2*mass * (shape[1]*shape[1]+shape[2]*shape[2]); - inertia[1] = 0.2*mass * (shape[0]*shape[0]+shape[2]*shape[2]); - inertia[2] = 0.2*mass * (shape[0]*shape[0]+shape[1]*shape[1]); - - wbody[0] = (m[0]*ex[0] + m[1]*ex[1] + m[2]*ex[2]) / inertia[0]; - wbody[1] = (m[0]*ey[0] + m[1]*ey[1] + m[2]*ey[2]) / inertia[1]; - wbody[2] = (m[0]*ez[0] + m[1]*ez[1] + m[2]*ez[2]) / inertia[2]; - - w[0] = wbody[0]*ex[0] + wbody[1]*ey[0] + wbody[2]*ez[0]; - w[1] = wbody[0]*ex[1] + wbody[1]*ey[1] + wbody[2]*ez[1]; - w[2] = wbody[0]*ex[2] + wbody[1]*ey[2] + wbody[2]*ez[2]; -} - /* ---------------------------------------------------------------------- */ int FixSRD::pack_reverse_comm(int n, int first, double *buf) @@ -3353,6 +3721,90 @@ void FixSRD::velocity_stats(int groupnum) /* ---------------------------------------------------------------------- */ +double FixSRD::newton_raphson(double t1, double t2) +{ + double f1,f2,df,tlo,thi; + lineside(t1,f1,df); + if (f1 < 0.0) { + tlo = t1; + thi = t2; + } else { + thi = t1; + tlo = t2; + } + + double f; + double t = 0.5*(t1+t2); + double dtold = fabs(t2-t1); + double dt = dtold; + lineside(t,f,df); + + double temp; + for (int i = 0; i < MAXITER; i++) { + if ((((t-thi)*df - f)*((t-tlo)*df - f) > 0.0) || + (fabs(2.0*f) > fabs(dtold*df))) { + dtold = dt; + dt = 0.5 * (thi-tlo); + t = tlo + dt; + if (tlo == t) return t; + } else { + dtold = dt; + dt = f / df; + temp = t; + t -= dt; + if (temp == t) return t; + } + if (fabs(dt) < TOLERANCE) return t; + lineside(t,f,df); + if (f < 0.0) tlo = t; + else thi = t; + } + + return t; +} + +/* ---------------------------------------------------------------------- */ + +void FixSRD::lineside(double t, double &f, double &df) +{ + double p[2],c[2]; + + p[0] = xs0[0] + (xs1[0]-xs0[0])*t; + p[1] = xs0[1] + (xs1[1]-xs0[1])*t; + c[0] = xb0[0] + (xb1[0]-xb0[0])*t; + c[1] = xb0[1] + (xb1[1]-xb0[1])*t; + double dtheta = theta1 - theta0; + double theta = theta0 + dtheta*t; + double cosT = cos(theta); + double sinT = sin(theta); + + f = (p[1]-c[1]) * cosT - (p[0]-c[0]) * sinT; + df = ((xs1[1]-xs0[1]) - (xb1[1]-xb0[1]))*cosT - (p[1]-c[1])*sinT*dtheta - + ((xs1[0]-xs0[0]) - (xb1[0]-xb0[0]))*sinT - (p[0]-c[0])*cosT*dtheta; +} + +/* ---------------------------------------------------------------------- */ + +void FixSRD::triside(double t, double &f, double &df) +{ + double p[2],c[2]; + + p[0] = xs0[0] + (xs1[0]-xs0[0])*t; + p[1] = xs0[1] + (xs1[1]-xs0[1])*t; + c[0] = xb0[0] + (xb1[0]-xb0[0])*t; + c[1] = xb0[1] + (xb1[1]-xb0[1])*t; + double dtheta = theta1 - theta0; + double theta = theta0 + dtheta*t; + double cosT = cos(theta); + double sinT = sin(theta); + + f = (p[1]-c[1]) * cosT - (p[0]-c[0]) * sinT; + df = ((xs1[1]-xs0[1]) - (xb1[1]-xb0[1]))*cosT - (p[1]-c[1])*sinT*dtheta - + ((xs1[0]-xs0[0]) - (xb1[0]-xb0[0]))*sinT - (p[0]-c[0])*cosT*dtheta; +} + +/* ---------------------------------------------------------------------- */ + double FixSRD::memory_usage() { double bytes = 0.0; diff --git a/src/SRD/fix_srd.h b/src/SRD/fix_srd.h index 8552078e6d..43d9f7c2e3 100644 --- a/src/SRD/fix_srd.h +++ b/src/SRD/fix_srd.h @@ -43,9 +43,9 @@ class FixSRD : public Fix { int me,nprocs; int bigexist,biggroup,biggroupbit; int collidestyle,lamdaflag,overlap,insideflag,exactflag,maxbounceallow; - int cubicflag,shiftuser,shiftseed,shiftflag,streamflag; + int cubicflag,shiftuser,shiftseed,shiftflag,tstat; double gridsrd,gridsearch,lamda,radfactor,cubictol; - int triclinic,change_size,change_shape; + int triclinic,change_size,change_shape,deformflag; double dt_big,dt_srd; double mass_big,mass_srd; @@ -64,6 +64,8 @@ class FixSRD : public Fix { double walltrigger; class AtomVecEllipsoid *avec_ellipsoid; + class AtomVecLine *avec_line; + class AtomVecTri *avec_tri; // for orthogonal box, these are in box units // for triclinic box, these are in lamda units @@ -92,18 +94,21 @@ class FixSRD : public Fix { struct Big { int index; // local index of particle/wall - int type; // SPHERE or ELLIPSOID or WALL + int type; // SPHERE or ELLIPSOID or LINE or TRI or WALL double radius,radsq; // radius of sphere double aradsqinv; // 3 ellipsoid radii double bradsqinv; double cradsqinv; + double length; // length of line segment + double normbody[3]; // normal of tri in body-frame double cutbinsq; // add big to bin if within this distance - double omega[3]; // current omega for sphere or ellipsoid - double ex[3],ey[3],ez[3]; // current orientation vecs for ellipsoid + double omega[3]; // current omega for sphere/ellipsoid/tri/line + double ex[3],ey[3],ez[3]; // current orientation vecs for ellipsoid/tri + double norm[3]; // current unit normal of tri in space-frame + double theta; // current orientation of line }; Big *biglist; // list of info for each owned & ghost big and wall - int any_ellipsoids; // 1 if any big particles are ellipsoids int torqueflag; // 1 if any big particle is torqued // current size of particle-based arrays @@ -123,7 +128,7 @@ class FixSRD : public Fix { int owner; // 1 if I am owner of this bin, 0 if not int n; // # of SRD particles in bin double xctr[3]; // center point of bin, only used for triclinic - double vave[3]; // sum of v components for SRD particles in bin + double vsum[3]; // sum of v components for SRD particles in bin double random; // random value if I am owner }; @@ -167,6 +172,17 @@ class FixSRD : public Fix { int maxstencil; // max # of bins stencil array can hold int **stencil; // list of 3d bin offsets a big particle can overlap + // persistent data for line/tri collision calculations + + double tfraction,theta0,theta1; + double xs0[3],xs1[3],xsc[3]; + double xb0[3],xb1[3],xbc[3]; + double nbc[3]; + + // shared data for triangle collision calculations + + // private functions + void reset_velocities(); void vbin_comm(int); void vbin_pack(BinAve *, int, int *, double *); @@ -177,6 +193,8 @@ class FixSRD : public Fix { int inside_sphere(double *, double *, Big *); int inside_ellipsoid(double *, double *, Big *); + int inside_line(double *, double *, double *, double *, Big *, double); + int inside_tri(double *, double *, double *, double *, Big *, double); int inside_wall(double *, int); double collision_sphere_exact(double *, double *, double *, double *, @@ -187,18 +205,19 @@ class FixSRD : public Fix { Big *, double *, double *, double *); void collision_ellipsoid_inexact(double *, double *, Big *, double *, double *, double *); + double collision_line_exact(double *, double *, double *, double *, + Big *, double, double *, double *, double *); + double collision_tri_exact(double *, double *, double *, double *, + Big *, double, double *, double *, double *); double collision_wall_exact(double *, int, double *, double *, double *, double *); void collision_wall_inexact(double *, int, double *, double *, double *); - void slip_sphere(double *, double *, double *, double *); - void slip_ellipsoid(double *, double *, double *, Big *, - double *, double *, double *); + void slip(double *, double *, double *, Big *, + double *, double *, double *); void slip_wall(double *, int, double *, double *); - - void noslip(double *, double *, double *, Big *, + void noslip(double *, double *, double *, Big *, int, double *, double *, double *); - void noslip_wall(double *, int, double *, double *, double *); void force_torque(double *, double *, double *, double *, double *, double *); @@ -217,11 +236,12 @@ class FixSRD : public Fix { double point_bin_distance(double *, int, int, int); double bin_bin_distance(int, int, int); - void exyz_from_q(double *, double *, double *, double *); - void omega_from_mq(double *, double *, double *, double *, - double, double *, double *); void velocity_stats(int); + double newton_raphson(double, double); + void lineside(double, double &, double &); + void triside(double, double &, double &); + double distance(int, int); void print_collision(int, int, int, double, double, double *, double *, double *, int); diff --git a/src/SRD/fix_wall_srd.cpp b/src/SRD/fix_wall_srd.cpp index 2f18d28837..fe38da8b4e 100644 --- a/src/SRD/fix_wall_srd.cpp +++ b/src/SRD/fix_wall_srd.cpp @@ -36,7 +36,7 @@ enum{NONE,EDGE,CONSTANT,VARIABLE}; FixWallSRD::FixWallSRD(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 4) error->all("Illegal fix wall/srd command"); + if (narg < 4) error->all(FLERR,"Illegal fix wall/srd command"); // parse args @@ -48,7 +48,7 @@ FixWallSRD::FixWallSRD(LAMMPS *lmp, int narg, char **arg) : if ((strcmp(arg[iarg],"xlo") == 0) || (strcmp(arg[iarg],"xhi") == 0) || (strcmp(arg[iarg],"ylo") == 0) || (strcmp(arg[iarg],"yhi") == 0) || (strcmp(arg[iarg],"zlo") == 0) || (strcmp(arg[iarg],"zhi") == 0)) { - if (iarg+2 > narg) error->all("Illegal fix wall/srd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix wall/srd command"); int newwall; if (strcmp(arg[iarg],"xlo") == 0) newwall = XLO; @@ -60,7 +60,7 @@ FixWallSRD::FixWallSRD(LAMMPS *lmp, int narg, char **arg) : for (int m = 0; m < nwall; m++) if (newwall == wallwhich[m]) - error->all("Wall defined twice in fix wall/srd command"); + error->all(FLERR,"Wall defined twice in fix wall/srd command"); wallwhich[nwall] = newwall; if (strcmp(arg[iarg+1],"EDGE") == 0) { @@ -83,30 +83,30 @@ FixWallSRD::FixWallSRD(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal wall/srd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal wall/srd command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal fix wall/srd command"); + else error->all(FLERR,"Illegal fix wall/srd command"); iarg += 2; - } else error->all("Illegal fix wall/srd command"); + } else error->all(FLERR,"Illegal fix wall/srd command"); } // error check - if (nwall == 0) error->all("Illegal fix wall command"); + if (nwall == 0) error->all(FLERR,"Illegal fix wall command"); for (int m = 0; m < nwall; m++) { if ((wallwhich[m] == XLO || wallwhich[m] == XHI) && domain->xperiodic) - error->all("Cannot use fix wall/srd in periodic dimension"); + error->all(FLERR,"Cannot use fix wall/srd in periodic dimension"); if ((wallwhich[m] == YLO || wallwhich[m] == YHI) && domain->yperiodic) - error->all("Cannot use fix wall/srd in periodic dimension"); + error->all(FLERR,"Cannot use fix wall/srd in periodic dimension"); if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->zperiodic) - error->all("Cannot use fix wall/srd in periodic dimension"); + error->all(FLERR,"Cannot use fix wall/srd in periodic dimension"); } for (int m = 0; m < nwall; m++) if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->dimension == 2) - error->all("Cannot use fix wall/srd zlo/zhi for a 2d simulation"); + error->all(FLERR,"Cannot use fix wall/srd zlo/zhi for a 2d simulation"); // setup wall force array @@ -127,7 +127,7 @@ FixWallSRD::FixWallSRD(LAMMPS *lmp, int narg, char **arg) : if (flag) { if (scaleflag && domain->lattice == NULL) - error->all("Use of fix wall with undefined lattice"); + error->all(FLERR,"Use of fix wall with undefined lattice"); double xscale,yscale,zscale; if (scaleflag) { @@ -188,15 +188,15 @@ void FixWallSRD::init() int flag = 0; for (int m = 0; m < modify->nfix; m++) if (strcmp(modify->fix[m]->style,"srd") == 0) flag = 1; - if (!flag) error->all("Cannot use fix wall/srd without fix srd"); + if (!flag) error->all(FLERR,"Cannot use fix wall/srd without fix srd"); for (int m = 0; m < nwall; m++) { if (wallstyle[m] != VARIABLE) continue; varindex[m] = input->variable->find(varstr[m]); if (varindex[m] < 0) - error->all("Variable name for fix wall/srd does not exist"); + error->all(FLERR,"Variable name for fix wall/srd does not exist"); if (!input->variable->equalstyle(varindex[m])) - error->all("Variable for fix wall/srd is invalid style"); + error->all(FLERR,"Variable for fix wall/srd is invalid style"); } dt = update->dt; diff --git a/src/USER-ATC/Install.sh b/src/USER-ATC/Install.sh index 244435effe..738ebedd48 100755 --- a/src/USER-ATC/Install.sh +++ b/src/USER-ATC/Install.sh @@ -35,4 +35,3 @@ elif (test $1 = 0) then rm -f ../fix_atc.cpp fi - diff --git a/src/USER-ATC/README b/src/USER-ATC/README index 3e84669048..85e2c1a570 100644 --- a/src/USER-ATC/README +++ b/src/USER-ATC/README @@ -1,15 +1,20 @@ -The files in this directory are a user-contributed package for LAMMPS. - -The primary people who created these files are Reese Jones -(rjones@sandia.gov), Jeremy Templeton (jatemple@sandia.gov) and Jon -Zimmerman (jzimmer@sandia.gov). Contact them directly if you have -questions. - This package implements a "fix atc" command which can be used in a LAMMPS input script. This fix can be employed to either do concurrent coupling of MD with FE-based physics surrogates or on-the-fly -post-processing of atomic information to continuum fields. See the -doc page for the fix atc command to get started. +post-processing of atomic information to continuum fields. -There are example scripts for using this package with LAMMPS in -examples/USER/atc. +See the doc page for the fix atc command to get started. At the +bottom of the doc page are many links to additional documentation +contained in the doc/USER/atc directory. + +There are example scripts for using this package in examples/USER/atc. + +This package uses an external library in lib/atc which must be +compiled before making LAMMPS. See the lib/atc/README file and the +LAMMPS manual for information on building LAMMPS with external +libraries. + +The primary people who created this package are Reese Jones +(rjones at sandia.gov), Jeremy Templeton (jatempl at sandia.gov) and Jon +Zimmerman (jzimmer at sandia.gov) at Sandia. Contact them directly if +you have questions. diff --git a/src/USER-ATC/fix_atc.cpp b/src/USER-ATC/fix_atc.cpp index 976b053679..dde062dc40 100644 --- a/src/USER-ATC/fix_atc.cpp +++ b/src/USER-ATC/fix_atc.cpp @@ -47,7 +47,7 @@ FixATC::FixATC(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { // ID GROUP atc PHYSICSTYPE [PARAMETERFILE] // can have either 4 or 5 args, only arg[3] and arg[4] are used by this class - if (narg > 5 || narg < 4) lmp->error->all("Illegal fix atc command"); + if (narg > 5 || narg < 4) lmp->error->all(FLERR,"Illegal fix atc command"); // Set LAMMPS pointer on LammpsInterface ATC::LammpsInterface::instance()->set_lammps(lmp); @@ -240,7 +240,7 @@ FixATC::FixATC(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) } else { - lmp->error->all("Unknown physics type in ATC"); + lmp->error->all(FLERR,"Unknown physics type in ATC"); } } catch (ATC::ATC_Error& atcError) { diff --git a/src/USER-AWPMD/README b/src/USER-AWPMD/README index 66378cd459..4dd16fca46 100644 --- a/src/USER-AWPMD/README +++ b/src/USER-AWPMD/README @@ -1,22 +1,21 @@ -The files in this directory are a user-contributed package for LAMMPS. +This package contains a LAMMPS implementation of the Antisymmetrized +Wave Packet Molecular Dynamics (AWPMD) method. -The person who created these files is Ilya Valuev -(valuev@physik.hu-berlin.de). Contact him directly if you have -questions. +See the doc page for the pair_style awpmd/cut command to get started. -PACKAGE DESCRIPTION: +There are example scripts for using this package in +examples/USER/awpmd. -Contains a LAMMPS implementation of the Antisymmetrized Wave Packet -Molecular Dynamics (AWPMD) method. +This package uses an external library in lib/awpmd which must be +compiled before making LAMMPS. See the lib/awpmd/README file and the +LAMMPS manual for information on building LAMMPS with external +libraries. -INSTALLATION: - -- compile the awpmd library in lib/awpmd -- follow a normal LAMMPS package installation: make yes-user-awpmd - -OTHERS FILES INCLUDED: - -User examples are under examples/USER/awpmd +The person who created this package is Ilya Valuev at the JIHT in +Russia (valuev at physik.hu-berlin.de). Contact him directly if you +have questions. + +---------------------- ACKNOWLEDGMENTS: diff --git a/src/USER-AWPMD/atom_vec_wavepacket.cpp b/src/USER-AWPMD/atom_vec_wavepacket.cpp index 8af7049746..16cda89c52 100644 --- a/src/USER-AWPMD/atom_vec_wavepacket.cpp +++ b/src/USER-AWPMD/atom_vec_wavepacket.cpp @@ -78,13 +78,13 @@ void AtomVecWavepacket::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); q = memory->grow(atom->q,nmax,"atom:q"); spin = memory->grow(atom->spin,nmax,"atom:spin"); eradius = memory->grow(atom->eradius,nmax,"atom:eradius"); ervel = memory->grow(atom->ervel,nmax,"atom:ervel"); - erforce = memory->grow(atom->erforce,nmax,"atom:erforce"); + erforce = memory->grow(atom->erforce,nmax*comm->nthreads,"atom:erforce"); cs = memory->grow(atom->cs,2*nmax,"atom:cs"); csforce = memory->grow(atom->csforce,2*nmax,"atom:csforce"); @@ -896,17 +896,17 @@ void AtomVecWavepacket::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file (ID tag must be >0)"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file (ID tag must be >0)"); type[nlocal] = atoi(values[1]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); q[nlocal] = atof(values[2]); spin[nlocal] = atoi(values[3]); eradius[nlocal] = atof(values[4]); if (eradius[nlocal] < 0.0) - error->one("Invalid eradius in Atoms section of data file"); + error->one(FLERR,"Invalid eradius in Atoms section of data file"); etag[nlocal] = atoi(values[5]); @@ -940,7 +940,7 @@ int AtomVecWavepacket::data_atom_hybrid(int nlocal, char **values) spin[nlocal] = atoi(values[1]); eradius[nlocal] = atof(values[2]); if (eradius[nlocal] < 0.0) - error->one("Invalid eradius in Atoms section of data file"); + error->one(FLERR,"Invalid eradius in Atoms section of data file"); etag[nlocal] = atoi(values[3]); cs[2*nlocal] = atoi(values[4]); @@ -991,13 +991,13 @@ bigint AtomVecWavepacket::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("q")) bytes += memory->usage(q,nmax); if (atom->memcheck("spin")) bytes += memory->usage(spin,nmax); if (atom->memcheck("eradius")) bytes += memory->usage(eradius,nmax); if (atom->memcheck("ervel")) bytes += memory->usage(ervel,nmax); - if (atom->memcheck("erforce")) bytes += memory->usage(erforce,nmax); + if (atom->memcheck("erforce")) bytes += memory->usage(erforce,nmax*comm->nthreads); if (atom->memcheck("ervelforce")) bytes += memory->usage(ervelforce,nmax); if (atom->memcheck("cs")) bytes += memory->usage(cs,2*nmax); diff --git a/src/USER-AWPMD/fix_nve_awpmd.cpp b/src/USER-AWPMD/fix_nve_awpmd.cpp index 418b942ecd..5aee8958ae 100644 --- a/src/USER-AWPMD/fix_nve_awpmd.cpp +++ b/src/USER-AWPMD/fix_nve_awpmd.cpp @@ -36,9 +36,9 @@ FixNVEAwpmd::FixNVEAwpmd(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (!atom->wavepacket_flag) - error->all("Fix nve/awpmd requires atom style wavepacket"); + error->all(FLERR,"Fix nve/awpmd requires atom style wavepacket"); //if (!atom->mass_type != 1) - // error->all("Fix nve/awpmd requires per type mass"); + // error->all(FLERR,"Fix nve/awpmd requires per type mass"); time_integrate = 1; } diff --git a/src/USER-AWPMD/pair_awpmd_cut.cpp b/src/USER-AWPMD/pair_awpmd_cut.cpp index ae276334bb..4644f1a2ce 100644 --- a/src/USER-AWPMD/pair_awpmd_cut.cpp +++ b/src/USER-AWPMD/pair_awpmd_cut.cpp @@ -36,9 +36,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairAWPMDCut::PairAWPMDCut(LAMMPS *lmp) : Pair(lmp) @@ -241,7 +238,7 @@ void PairAWPMDCut::compute(int eflag, int vflag) etmap[etag[i]].push_back(i); } else - error->all(fmt("Invalid spin value (%d) for particle %d !",spin[i],i)); + error->all(FLERR,fmt("Invalid spin value (%d) for particle %d !",spin[i],i)); } // ion force vector Vector_3 *fi=NULL; @@ -258,7 +255,7 @@ void PairAWPMDCut::compute(int eflag, int vflag) for(size_t k=0;kall(fmt("WP splits for one electron should have the same spin (at particles %d, %d)!",el[0],i)); + error->all(FLERR,fmt("WP splits for one electron should have the same spin (at particles %d, %d)!",el[0],i)); double m= atom->mass ? atom->mass[type[i]] : force->e_mass; Vector_3 xx=Vector_3(x[i][0],x[i][1],x[i][2]); Vector_3 rv=m*Vector_3(v[i][0],v[i][1],v[i][2]); @@ -411,7 +408,7 @@ void PairAWPMDCut::allocate() // -1 for length means default setting (L/2 for cutoff and L for width PBC) void PairAWPMDCut::settings(int narg, char **arg){ - if (narg < 1) error->all("Illegal pair_style command"); + if (narg < 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -432,21 +429,21 @@ void PairAWPMDCut::settings(int narg, char **arg){ wpmd->constraint=AWPMD::FIX; i++; if(i>=narg) - error->all("Setting 'fix' should be followed by a number in awpmd/cut"); + error->all(FLERR,"Setting 'fix' should be followed by a number in awpmd/cut"); wpmd->w0=force->numeric(arg[i]); } else if(!strcmp(arg[i],"harm")){ wpmd->constraint=AWPMD::HARM; i++; if(i>=narg) - error->all("Setting 'harm' should be followed by a number in awpmd/cut"); + error->all(FLERR,"Setting 'harm' should be followed by a number in awpmd/cut"); wpmd->w0=force->numeric(arg[i]); wpmd->set_harm_constr(wpmd->w0); } else if(!strcmp(arg[i],"pbc")){ i++; if(i>=narg) - error->all("Setting 'pbc' should be followed by a number in awpmd/cut"); + error->all(FLERR,"Setting 'pbc' should be followed by a number in awpmd/cut"); width_pbc=force->numeric(arg[i]); } else if(!strcmp(arg[i],"relax")) @@ -454,7 +451,7 @@ void PairAWPMDCut::settings(int narg, char **arg){ else if(!strcmp(arg[i],"ermscale")){ i++; if(i>=narg) - error->all("Setting 'ermscale' should be followed by a number in awpmd/cut"); + error->all(FLERR,"Setting 'ermscale' should be followed by a number in awpmd/cut"); ermscale=force->numeric(arg[i]); } else if(!strcmp(arg[i],"flex_press")) @@ -478,7 +475,7 @@ void PairAWPMDCut::settings(int narg, char **arg){ // pair settings are as usual void PairAWPMDCut::coeff(int narg, char **arg) { - if (narg < 2 || narg > 3) error->all("Incorrect args for pair coefficients"); + if (narg < 2 || narg > 3) error->all(FLERR,"Incorrect args for pair coefficients"); /*if(domain->xperiodic == 1 || domain->yperiodic == 1 || domain->zperiodic == 1) {*/ @@ -515,7 +512,7 @@ void PairAWPMDCut::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -528,13 +525,13 @@ void PairAWPMDCut::init_style() if (!atom->q_flag || !atom->spin_flag || !atom->eradius_flag || !atom->erforce_flag ) // TO DO: adjust this to match approximation used - error->all("Pair awpmd/cut requires atom attributes " + error->all(FLERR,"Pair awpmd/cut requires atom attributes " "q, spin, eradius, erforce"); /* if(vflag_atom){ // can't compute virial per atom //warning-> - error->all("Pair style awpmd can't compute per atom virials"); + error->all(FLERR,"Pair style awpmd can't compute per atom virials"); }*/ // add hook to minimizer for eradius and erforce @@ -546,7 +543,7 @@ void PairAWPMDCut::init_style() /*if (update->whichflag == 1) { if (force->qqr2e == 332.06371 && update->dt == 1.0) - error->all("You must lower the default real units timestep for pEFF "); + error->all(FLERR,"You must lower the default real units timestep for pEFF "); }*/ // need a half neigh list and optionally a granular history neigh list @@ -554,19 +551,19 @@ void PairAWPMDCut::init_style() //int irequest = neighbor->request(this); //if (atom->tag_enable == 0) - // error->all("Pair style reax requires atom IDs"); + // error->all(FLERR,"Pair style reax requires atom IDs"); //if (force->newton_pair == 0) - //error->all("Pair style awpmd requires newton pair on"); + //error->all(FLERR,"Pair style awpmd requires newton pair on"); //if (strcmp(update->unit_style,"real") != 0 && comm->me == 0) - //error->warning("Not using real units with pair reax"); + //error->warning(FLERR,"Not using real units with pair reax"); int irequest = neighbor->request(this); neighbor->requests[irequest]->newton = 2; if(force->e_mass==0. || force->hhmrr2e==0. || force->mvh2r==0.) - error->all("Pair style awpmd requires e_mass and conversions hhmrr2e, mvh2r to be properly set for unit system"); + error->all(FLERR,"Pair style awpmd requires e_mass and conversions hhmrr2e, mvh2r to be properly set for unit system"); wpmd->me=force->e_mass; wpmd->h2_me=force->hhmrr2e/force->e_mass; diff --git a/src/USER-CG-CMM/README b/src/USER-CG-CMM/README index a7ff592f05..e93e739b12 100644 --- a/src/USER-CG-CMM/README +++ b/src/USER-CG-CMM/README @@ -1,31 +1,31 @@ -The files in this directory are a user-contributed package for LAMMPS. - -The person who created these files is Axel Kohlmeyer -(akohlmey@gmail.com). Contact him directly if you have questions. - -The current version of this package should be considered beta -quality. The CG potentials work correctly and well, but there will be -optimizations, cleanups and additional tools to aid in setting up and -analyzing simulations with this package added in the next months. - This package implements 4 commands which can be used in a LAMMPS input script: pair_style cg/cmm pair_style cg/cmm/coul/cut pair_style cg/cmm/coul/long -and angle_style cg/cmm. - -See the documentation files for these commands for details. - -There are example scripts for using this package with LAMMPS in -examples/USER/cg-cmm. +angle_style cg/cmm :ul These styles allow coarse grained MD simulations with the parametrization of Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007) (cg/cmm), with extensions to simulate ionic liquids, electrolytes, lipids and charged amino acids (to be published soon). +See the doc pages for these commands for details. + +There are example scripts for using this package in +examples/USER/cg-cmm. + +The current version of this package should be considered beta +quality. The CG potentials work correctly and well, but there will be +optimizations, cleanups and additional tools to aid in setting up and +analyzing simulations with this package added in the next months. + +The person who created this package is Axel Kohlmeyer at Temple U +(akohlmey at gmail.com). Contact him directly if you have questions. + +--------------------------------- + Thanks for contributions, support and testing goes to Wataru Shinoda (AIST, Tsukuba) diff --git a/src/USER-CG-CMM/angle_cg_cmm.cpp b/src/USER-CG-CMM/angle_cg_cmm.cpp index a818b061f1..070d65c5b8 100644 --- a/src/USER-CG-CMM/angle_cg_cmm.cpp +++ b/src/USER-CG-CMM/angle_cg_cmm.cpp @@ -24,10 +24,12 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define SMALL 0.001 @@ -297,7 +299,7 @@ void AngleCGCMM::allocate() void AngleCGCMM::coeff(int narg, char **arg) { - if (narg != 6) error->all("Incorrect args for angle coefficients"); + if (narg != 6) error->all(FLERR,"Incorrect args for angle coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -307,7 +309,7 @@ void AngleCGCMM::coeff(int narg, char **arg) double theta0_one = atof(arg[2]); int cg_type_one=find_cg_type(arg[3]); - if (cg_type_one == CG_NOT_SET) error->all("Error reading CG type flag."); + if (cg_type_one == CG_NOT_SET) error->all(FLERR,"Error reading CG type flag."); double epsilon_one = atof(arg[4]); double sigma_one = atof(arg[5]); @@ -323,7 +325,7 @@ void AngleCGCMM::coeff(int narg, char **arg) for (int i = ilo; i <= ihi; i++) { k[i] = k_one; // convert theta0 from degrees to radians - theta0[i] = theta0_one/180.0 * PI; + theta0[i] = theta0_one/180.0 * MY_PI; epsilon[i] = epsilon_one; sigma[i] = sigma_one; rcut[i] = rcut_one; @@ -332,7 +334,7 @@ void AngleCGCMM::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for angle coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients"); } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-CG-CMM/pair_cg_cmm_coul_cut.cpp b/src/USER-CG-CMM/pair_cg_cmm_coul_cut.cpp index 7b270b351c..10cee8919b 100644 --- a/src/USER-CG-CMM/pair_cg_cmm_coul_cut.cpp +++ b/src/USER-CG-CMM/pair_cg_cmm_coul_cut.cpp @@ -16,17 +16,12 @@ Contributing author: Axel Kohlmeyer ------------------------------------------------------------------------- */ +#include "string.h" #include "pair_cg_cmm_coul_cut.h" #include "memory.h" #include "atom.h" -#include "string.h" - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) - using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ PairCGCMMCoulCut::PairCGCMMCoulCut(LAMMPS *lmp) : PairCMMCommon(lmp) { @@ -67,7 +62,7 @@ void PairCGCMMCoulCut::allocate() void PairCGCMMCoulCut::init_style() { if (!atom->q_flag) - error->all("Pair style cg/cut/coul/cut requires atom attribute q"); + error->all(FLERR,"Pair style cg/cut/coul/cut requires atom attribute q"); PairCMMCommon::init_style(); @@ -88,7 +83,7 @@ double PairCGCMMCoulCut::init_one(int i, int j) // check interior rRESPA cutoff if (cut_respa && MIN(cut_lj[i][j],cut_coul[i][j]) < cut_respa[3]) - error->all("Pair cutoff < Respa interior cutoff"); + error->all(FLERR,"Pair cutoff < Respa interior cutoff"); return mycut; } diff --git a/src/USER-CG-CMM/pair_cg_cmm_coul_long.cpp b/src/USER-CG-CMM/pair_cg_cmm_coul_long.cpp index 2947b3ce64..fa7769927a 100644 --- a/src/USER-CG-CMM/pair_cg_cmm_coul_long.cpp +++ b/src/USER-CG-CMM/pair_cg_cmm_coul_long.cpp @@ -16,19 +16,17 @@ Contributing author: Axel Kohlmeyer ------------------------------------------------------------------------- */ +#include "string.h" #include "pair_cg_cmm_coul_long.h" #include "memory.h" #include "atom.h" #include "force.h" #include "kspace.h" -#include "string.h" - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define EWALD_F 1.12837917 - using namespace LAMMPS_NS; +#define EWALD_F 1.12837917 + /* ---------------------------------------------------------------------- */ PairCGCMMCoulLong::PairCGCMMCoulLong(LAMMPS *lmp) : PairCMMCommon(lmp) @@ -91,7 +89,7 @@ void PairCGCMMCoulLong::free_tables() void PairCGCMMCoulLong::init_style() { if (!atom->q_flag) - error->all("Pair style cg/cut/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style cg/cut/coul/long requires atom attribute q"); PairCMMCommon::init_style(); @@ -105,7 +103,7 @@ void PairCGCMMCoulLong::init_style() // ensure use of KSpace long-range solver, set g_ewald if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables @@ -122,7 +120,7 @@ double PairCGCMMCoulLong::init_one(int i, int j) // check interior rRESPA cutoff if (cut_respa && MIN(cut_lj[i][j],cut_coul_global) < cut_respa[3]) - error->all("Pair cutoff < Respa interior cutoff"); + error->all(FLERR,"Pair cutoff < Respa interior cutoff"); return mycut; } diff --git a/src/USER-CG-CMM/pair_cmm_common.cpp b/src/USER-CG-CMM/pair_cmm_common.cpp index 043716e9f0..4e1606d587 100644 --- a/src/USER-CG-CMM/pair_cmm_common.cpp +++ b/src/USER-CG-CMM/pair_cmm_common.cpp @@ -23,10 +23,11 @@ #include "string.h" #include "ctype.h" #include "math.h" +#include "math_const.h" using namespace LAMMPS_NS; +using namespace MathConst; -#define MAX(a,b) ((a) > (b) ? (a) : (b)) #define SMALL 1.0e-6 /* ---------------------------------------------------------------------- */ @@ -102,7 +103,7 @@ void PairCMMCommon::allocate() // args = cutoff (cutoff2 (kappa)) void PairCMMCommon::settings(int narg, char **arg) { - if ((narg < 1) || (narg > 3)) error->all("Illegal pair_style command"); + if ((narg < 1) || (narg > 3)) error->all(FLERR,"Illegal pair_style command"); cut_lj_global = force->numeric(arg[0]); if (narg == 1) cut_coul_global = cut_lj_global; @@ -137,7 +138,7 @@ void PairCMMCommon::settings(int narg, char **arg) void PairCMMCommon::coeff(int narg, char **arg) { - if (narg < 5 || narg > 7) error->all("Incorrect args for pair coefficients"); + if (narg < 5 || narg > 7) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -145,7 +146,7 @@ void PairCMMCommon::coeff(int narg, char **arg) force->bounds(arg[1],atom->ntypes,jlo,jhi); int cg_type_one=find_cg_type(arg[2]); - if (cg_type_one == CG_NOT_SET) error->all("Error reading CG type flag."); + if (cg_type_one == CG_NOT_SET) error->all(FLERR,"Error reading CG type flag."); double epsilon_one = force->numeric(arg[3]); double sigma_one = force->numeric(arg[4]); @@ -174,7 +175,7 @@ void PairCMMCommon::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -240,13 +241,13 @@ void PairCMMCommon::init_list(int id, NeighList *ptr) double PairCMMCommon::init_one(int i, int j) { if (setflag[i][j] == 0) { - error->all("for CG styles, epsilon and sigma need to be set explicitly for all pairs."); + error->all(FLERR,"for CG styles, epsilon and sigma need to be set explicitly for all pairs."); } const int cgt = cg_type[i][j]; if (cgt == CG_NOT_SET) - error->all("unrecognized LJ parameter flag"); + error->all(FLERR,"unrecognized LJ parameter flag"); lj1[i][j] = cg_prefact[cgt] * cg_pow1[cgt] * epsilon[i][j] * pow(sigma[i][j],cg_pow1[cgt]); lj2[i][j] = cg_prefact[cgt] * cg_pow2[cgt] * epsilon[i][j] * pow(sigma[i][j],cg_pow2[cgt]); @@ -290,7 +291,7 @@ double PairCMMCommon::init_one(int i, int j) // count total # of atoms of type I and J via Allreduce if (tail_flag) { #if 1 - error->all("tail correction not (yet) supported by CG potentials."); + error->all(FLERR,"tail correction not (yet) supported by CG potentials."); #else int *type = atom->type; int nlocal = atom->nlocal; @@ -303,15 +304,14 @@ double PairCMMCommon::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double sig2 = sigma[i][j]*sigma[i][j]; double sig6 = sig2*sig2*sig2; double rc3 = cut[i][j]*cut[i][j]*cut[i][j]; double rc6 = rc3*rc3; double rc9 = rc3*rc6; - etail_ij = 8.0*PI*all[0]*all[1]*epsilon[i][j] * + etail_ij = 8.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig6 - 3.0*rc6) / (9.0*rc9); - ptail_ij = 16.0*PI*all[0]*all[1]*epsilon[i][j] * + ptail_ij = 16.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (2.0*sig6 - 3.0*rc6) / (9.0*rc9); #endif } @@ -456,18 +456,18 @@ double PairCMMCommon::eval_single(int coul_type, int i, int j, int itype, int jt if (rsq < cut_coul[itype][jtype]) { if(coul_type == CG_COUL_LONG) { - error->all("single energy computation with long-range coulomb not supported by CG potentials."); + error->all(FLERR,"single energy computation with long-range coulomb not supported by CG potentials."); } else if ((coul_type == CG_COUL_CUT) || (coul_type == CG_COUL_DEBYE)) { const double r2inv = 1.0/rsq; const double rinv = sqrt(r2inv); const double qscreen=exp(-kappa*sqrt(rsq)); coul_force = force->qqrd2e * atom->q[i]*atom->q[j]*rinv * qscreen * (kappa + rinv); coul_erg = force->qqrd2e * atom->q[i]*atom->q[j]*rinv * qscreen; - // error->all("single energy computation with coulomb not supported by CG potentials."); + // error->all(FLERR,"single energy computation with coulomb not supported by CG potentials."); } else if (coul_type == CG_COUL_NONE) { ; // do nothing } else { - error->all("unknown coulomb type with CG potentials."); + error->all(FLERR,"unknown coulomb type with CG potentials."); } } diff --git a/src/USER-CUDA/Install.sh b/src/USER-CUDA/Install.sh index 2994d3cdca..56f0dc80b9 100755 --- a/src/USER-CUDA/Install.sh +++ b/src/USER-CUDA/Install.sh @@ -15,7 +15,7 @@ if (test $1 = 1) then sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(user-cuda_SYSPATH) |' ../Makefile.package fi - if (test -e ../Makefile.package.include) then + if (test -e ../Makefile.package.settings) then sed -i -e '/^include.*cuda.*$/d' ../Makefile.package.settings sed -i '4 i include ..\/..\/lib\/cuda\/Makefile.lammps' ../Makefile.package.settings fi @@ -82,6 +82,12 @@ if (test $1 = 1) then cp pair_eam_alloy_cuda.h .. cp pair_eam_cuda.h .. cp pair_eam_fs_cuda.h .. + cp pair_sw_cuda.h .. + cp pair_sw_cuda.cpp .. + cp pair_tersoff_cuda.h .. + cp pair_tersoff_cuda.cpp .. + cp pair_tersoff_zbl_cuda.h .. + cp pair_tersoff_zbl_cuda.cpp .. fi if (test -e ../pair_gran_hooke.cpp) then @@ -148,7 +154,6 @@ if (test $1 = 1) then cp pair_lj_gromacs_cuda.cpp .. cp pair_lj_smooth_cuda.cpp .. cp pair_morse_cuda.cpp .. - cp pppm_cuda.cpp .. cp verlet_cuda.cpp .. cp cuda.cpp .. @@ -194,12 +199,9 @@ if (test $1 = 1) then cp verlet_cuda.h .. cp cuda.h .. - cp cuda_common.h .. cp cuda_data.h .. cp cuda_modify_flags.h .. cp cuda_neigh_list.h .. - cp cuda_precision.h .. - cp cuda_shared.h .. elif (test $1 = 0) then @@ -342,12 +344,15 @@ elif (test $1 = 0) then rm -f ../pppm_cuda.h rm -f ../verlet_cuda.h + rm -f ../pair_sw_cuda.h + rm -f ../pair_sw_cuda.cpp + rm -f ../pair_tersoff_cuda.h + rm -f ../pair_tersoff_cuda.cpp + rm -f ../pair_tersoff_zbl_cuda.h + rm -f ../pair_tersoff_zbl_cuda.cpp + rm -f ../cuda.h - rm -f ../cuda_common.h rm -f ../cuda_data.h rm -f ../cuda_modify_flags.h rm -f ../cuda_neigh_list.h - rm -f ../cuda_precision.h - rm -f ../cuda_shared.h - fi diff --git a/src/USER-CUDA/README b/src/USER-CUDA/README index c98ef03271..74e5ad60c0 100644 --- a/src/USER-CUDA/README +++ b/src/USER-CUDA/README @@ -1,16 +1,19 @@ -The files in this directory are a user-contributed package for LAMMPS. +This package provides acceleration of various LAMMPS pair styles, fix +styles, compute styles, and long-range Coulombics via PPPM for NVIDIA +GPUs. + +See this section of the manual to get started: -The person who created these files is Christian Trott at the -University of Technology Ilmenau, Germany -(christian.trott@tu-ilmenau.de). Contact him directly if you have -questions. +doc/Section_accelerate.html, sub-section 5.4 -The USER-CUDA package provides acceleration of various LAMMPS pair -styles, fix styles, compute styles, and long-range Coulombics via PPPM -on NVIDIA GPUs. +There are example scripts for using this package in +examples/USER/cuda. -It's use is documented in this file: -lammps/doc/Section_accelerate.html +This package uses an external library in lib/cuda which must be +compiled before making LAMMPS. See the lib/cuda/README file and the +LAMMPS manual for information on building LAMMPS with external +libraries. -Examples input scripts that use the USER-CUDA package are provided in -lammps/examples/USER/cuda. +The person who created this package is Christian Trott at the +University of Technology Ilmenau, Germany (christian.trott at +tu-ilmenau.de). Contact him directly if you have questions. diff --git a/src/USER-CUDA/atom_vec_angle_cuda.cpp b/src/USER-CUDA/atom_vec_angle_cuda.cpp index 323a1bedf6..b816b690b1 100644 --- a/src/USER-CUDA/atom_vec_angle_cuda.cpp +++ b/src/USER-CUDA/atom_vec_angle_cuda.cpp @@ -65,7 +65,7 @@ AtomVecAngleCuda::AtomVecAngleCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); maxsend=0; cudable=true; diff --git a/src/USER-CUDA/atom_vec_atomic_cuda.cpp b/src/USER-CUDA/atom_vec_atomic_cuda.cpp index c57e0654f6..f6b2d76b85 100644 --- a/src/USER-CUDA/atom_vec_atomic_cuda.cpp +++ b/src/USER-CUDA/atom_vec_atomic_cuda.cpp @@ -65,7 +65,7 @@ AtomVecAtomicCuda::AtomVecAtomicCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); maxsend=0; cudable=true; @@ -286,14 +286,14 @@ int AtomVecAtomicCuda::pack_exchange(int dim, double *buf) } if(max_nsend==0) grow_copylist(200); - + int nsend_atoms = Cuda_AtomVecAtomicCuda_PackExchangeList(&cuda->shared_data,*maxsend,dim,*buf_pointer); if(nsend_atoms>max_nsend) {grow_copylist(nsend_atoms+100);} if(nsend_atoms*NCUDAEXCHANGE>*maxsend) { grow_send((int) (nsend_atoms+100)*NCUDAEXCHANGE,buf_pointer,0); - Cuda_AtomVecAtomicCuda_PackExchangeList(&cuda->shared_data,*maxsend,dim,*buf_pointer); + Cuda_AtomVecAtomicCuda_PackExchangeList(&cuda->shared_data,*maxsend,dim,*buf_pointer); } int nlocal=atom->nlocal-nsend_atoms; @@ -395,6 +395,7 @@ int AtomVecAtomicCuda::unpack_exchange(double *buf) } } cuda->shared_data.atom.nlocal=nlocal; + if(atom->nlocal!=nlocal) cuda->shared_data.atom.update_nlocal=2; atom->nlocal=nlocal; mfirst+=m; diff --git a/src/USER-CUDA/atom_vec_charge_cuda.cpp b/src/USER-CUDA/atom_vec_charge_cuda.cpp index e057253604..a15836c45b 100644 --- a/src/USER-CUDA/atom_vec_charge_cuda.cpp +++ b/src/USER-CUDA/atom_vec_charge_cuda.cpp @@ -64,7 +64,7 @@ AtomVecChargeCuda::AtomVecChargeCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); maxsend=0; cudable=true; diff --git a/src/USER-CUDA/atom_vec_full_cuda.cpp b/src/USER-CUDA/atom_vec_full_cuda.cpp index f010181ced..9e656ed58d 100644 --- a/src/USER-CUDA/atom_vec_full_cuda.cpp +++ b/src/USER-CUDA/atom_vec_full_cuda.cpp @@ -65,7 +65,7 @@ AtomVecFullCuda::AtomVecFullCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); maxsend=0; cudable=true; diff --git a/src/USER-CUDA/comm_cuda.cpp b/src/USER-CUDA/comm_cuda.cpp index 4a7a822ae0..ea4a4ee6a6 100644 --- a/src/USER-CUDA/comm_cuda.cpp +++ b/src/USER-CUDA/comm_cuda.cpp @@ -42,8 +42,8 @@ using namespace LAMMPS_NS; #define BUFMIN 1000 #define BUFEXTRA 1000 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) + + #define BIG 1.0e20 enum{SINGLE,MULTI}; @@ -56,7 +56,7 @@ CommCuda::CommCuda(LAMMPS *lmp):Comm(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); cu_pbc=NULL; cu_slablo=NULL; @@ -140,6 +140,7 @@ void CommCuda::init() void CommCuda::setup() { + if(cuda->shared_data.pair.neighall) cutghostuser = MAX(2.0*neighbor->cutneighmax,cutghostuser); Comm::setup(); //upload changed geometry to device @@ -279,7 +280,7 @@ cuda->shared_data.cuda_timings.comm_forward_mpi_lower+= if (sendnum[iswap]) { n = Cuda_CommCuda_PackComm_Self(&cuda->shared_data,sendnum[iswap],iswap,firstrecv[iswap],pbc[iswap],pbc_flag[iswap]); - if(n<0) error->all(" # CUDA ERRROR on PackComm_Self"); + if(n<0) error->all(FLERR," # CUDA ERRROR on PackComm_Self"); if((sizeof(X_FLOAT)!=sizeof(double)) && n) n=(n+1)*sizeof(X_FLOAT)/sizeof(double); } @@ -382,7 +383,7 @@ clock_gettime(CLOCK_REALTIME,&time2); if (sendnum[iswap]) { n = Cuda_CommCuda_PackComm_Self(&cuda->shared_data,sendnum[iswap],iswap,firstrecv[iswap],pbc[iswap],pbc_flag[iswap]); - if(n<0) error->all(" # CUDA ERRROR on PackComm_Self"); + if(n<0) error->all(FLERR," # CUDA ERRROR on PackComm_Self"); if((sizeof(X_FLOAT)!=sizeof(double)) && n) n=(n+1)*sizeof(X_FLOAT)/sizeof(double); } diff --git a/src/USER-CUDA/compute_pressure_cuda.cpp b/src/USER-CUDA/compute_pressure_cuda.cpp index aceb06a36d..27de7e5850 100644 --- a/src/USER-CUDA/compute_pressure_cuda.cpp +++ b/src/USER-CUDA/compute_pressure_cuda.cpp @@ -64,7 +64,7 @@ ComputePressureCuda::ComputePressureCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); cudable = 1; // store temperature ID used by pressure computation @@ -78,7 +78,7 @@ ComputePressureCuda::ComputePressureCuda(LAMMPS *lmp, int narg, char **arg) : delete [] id_temp; if (modify->compute[icompute]->cudable == 0) { - error->warning("Compute pressure/cuda temperature ID is not cudable! Try a temp/cuda style."); + error->warning(FLERR,"Compute pressure/cuda temperature ID is not cudable! Try a temp/cuda style."); cudable = 0; } @@ -87,7 +87,7 @@ ComputePressureCuda::ComputePressureCuda(LAMMPS *lmp, int narg, char **arg) : double ComputePressureCuda::compute_scalar() { if(not temperature->cudable && cuda->finished_setup) cuda->downloadAll(); - ComputePressure::compute_scalar(); + return ComputePressure::compute_scalar(); } void ComputePressureCuda::compute_vector() diff --git a/src/USER-CUDA/compute_temp_cuda.cpp b/src/USER-CUDA/compute_temp_cuda.cpp index 0e13f67c14..0b560f5366 100644 --- a/src/USER-CUDA/compute_temp_cuda.cpp +++ b/src/USER-CUDA/compute_temp_cuda.cpp @@ -59,9 +59,9 @@ ComputeTempCuda::ComputeTempCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg != 3) error->all("Illegal compute temp/cuda command"); + if (narg != 3) error->all(FLERR,"Illegal compute temp/cuda command"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -158,7 +158,7 @@ double ComputeTempCuda::compute_scalar() for(int i=0;inlocal;i++) if((v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2])>1e5) printf("%i %i // %lf %lf %lf // %lf %lf %lf\n",atom->tag[i],atom->type[i],x[i][0], x[i][1], x[i][2],v[i][0], v[i][1], v[i][2]); - error->all("Temperature out of range. Simulations will be abortet.\n"); + error->all(FLERR,"Temperature out of range. Simulations will be abortet.\n"); } return scalar; } diff --git a/src/USER-CUDA/compute_temp_partial_cuda.cpp b/src/USER-CUDA/compute_temp_partial_cuda.cpp index c9a126a18d..e39484c835 100644 --- a/src/USER-CUDA/compute_temp_partial_cuda.cpp +++ b/src/USER-CUDA/compute_temp_partial_cuda.cpp @@ -60,9 +60,9 @@ ComputeTempPartialCuda::ComputeTempPartialCuda(LAMMPS *lmp, int narg, char **arg { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg != 6) error->all("Illegal compute temp/partial command"); + if (narg != 6) error->all(FLERR,"Illegal compute temp/partial command"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -75,7 +75,7 @@ ComputeTempPartialCuda::ComputeTempPartialCuda(LAMMPS *lmp, int narg, char **arg yflag = atoi(arg[4]); zflag = atoi(arg[5]); if (zflag && domain->dimension == 2) - error->all("Compute temp/partial cannot use vz for 2d systemx"); + error->all(FLERR,"Compute temp/partial cannot use vz for 2d systemx"); maxbias = 0; vbiasall = NULL; @@ -181,7 +181,7 @@ double ComputeTempPartialCuda::compute_scalar() for(int i=0;inlocal;i++) if((v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2])>1e5) printf("%i %i // %lf %lf %lf // %lf %lf %lf\n",atom->tag[i],atom->type[i],x[i][0], x[i][1], x[i][2],v[i][0], v[i][1], v[i][2]); - error->all("Temperature out of range. Simulations will be abortet.\n"); + error->all(FLERR,"Temperature out of range. Simulations will be abortet.\n"); } return scalar; } diff --git a/src/USER-CUDA/cuda.cpp b/src/USER-CUDA/cuda.cpp index 66273775e7..438312ee81 100644 --- a/src/USER-CUDA/cuda.cpp +++ b/src/USER-CUDA/cuda.cpp @@ -46,7 +46,7 @@ using namespace LAMMPS_NS; -#define MAX(a,b) ((a) > (b) ? (a) : (b)) + Cuda::Cuda(LAMMPS *lmp) : Pointers(lmp) { @@ -130,11 +130,11 @@ Cuda::Cuda(LAMMPS *lmp) : Pointers(lmp) downloadtime=0; dotiming=false; - dotestatom = false; - testatom = 0; + dotestatom = false; + testatom = 0; oncpu = true; - self_comm = 0; + self_comm = 0; MYDBG( printf("# CUDA: Cuda::Cuda Done...\n");) //cCudaData } @@ -198,15 +198,15 @@ void Cuda::accelerator(int narg, char** arg) if(strcmp(arg[i],"gpu/node")==0) { if(++i==narg) - error->all("Invalid Options for 'accelerator' command. Expecting a number or keyword 'special' after 'gpu/node' option."); + error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a number or keyword 'special' after 'gpu/node' option."); if(strcmp(arg[i],"special")==0) { if(++i==narg) - error->all("Invalid Options for 'accelerator' command. Expecting number of GPUs to be used per node after keyword 'gpu/node special'."); + error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting number of GPUs to be used per node after keyword 'gpu/node special'."); pppn=atoi(arg[i]); - if(pppn<1) error->all("Invalid Options for 'accelerator' command. Expecting number of GPUs to be used per node after keyword 'gpu/node special'."); + if(pppn<1) error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting number of GPUs to be used per node after keyword 'gpu/node special'."); if(i+pppn==narg) - error->all("Invalid Options for 'accelerator' command. Expecting list of device ids after keyword 'gpu/node special'."); + error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting list of device ids after keyword 'gpu/node special'."); devicelist=new int[pppn]; for(int k=0;kall("Invalid Options for 'accelerator' command. Expecting a number after 'pinned' option."); + error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a number after 'pinned' option."); pinned=atoi(arg[i])==0?false:true; if((pinned==false)&&(universe->me==0)) printf(" #CUDA: Pinned memory is not used for communication\n"); } @@ -229,7 +229,7 @@ void Cuda::accelerator(int narg, char** arg) if(strcmp(arg[i],"suffix")==0) { if(++i==narg) - error->all("Invalid Options for 'accelerator' command. Expecting a string after 'suffix' option."); + error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a string after 'suffix' option."); strcpy(lmp->suffix,arg[i]); } if(strcmp(arg[i],"overlap_comm")==0) @@ -239,14 +239,14 @@ void Cuda::accelerator(int narg, char** arg) if(strcmp(arg[i],"dotest")==0) { if(++i==narg) - error->all("Invalid Options for 'accelerator' command. Expecting a number after 'dotest' option."); + error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a number after 'dotest' option."); testatom=atof(arg[i]); dotestatom=true; } if(strcmp(arg[i],"override_bpa")==0) { if(++i==narg) - error->all("Invalid Options for 'accelerator' command. Expecting a number after 'override_bpa' option."); + error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a number after 'override_bpa' option."); shared_data.pair.override_block_per_atom = atoi(arg[i]); } } @@ -267,10 +267,10 @@ void Cuda::accelerator(int narg, char** arg) cu_virial = 0; cu_eatom = 0; cu_vatom = 0; - cu_radius = 0; + cu_radius = 0; cu_density = 0; - cu_omega = 0; - cu_torque = 0; + cu_omega = 0; + cu_torque = 0; cu_special = 0; cu_nspecial = 0; @@ -299,8 +299,11 @@ void Cuda::setSharedDataZero() shared_data.atom.q_flag = 0; shared_data.atom.need_eatom = 0; shared_data.atom.need_vatom = 0; + shared_data.atom.update_nmax = 1; + shared_data.atom.update_nlocal = 1; + shared_data.atom.update_neigh = 1; - shared_data.pair.cudable_force = 0; + shared_data.pair.cudable_force = 0; shared_data.pair.collect_forces_later = 0; shared_data.pair.use_block_per_atom = 0; shared_data.pair.override_block_per_atom = -1; @@ -311,6 +314,7 @@ void Cuda::setSharedDataZero() shared_data.pair.special_lj = 0; shared_data.pair.special_coul = 0; + shared_data.pair.neighall = false; shared_data.pppm.cudable_force = 0; @@ -428,14 +432,6 @@ void Cuda::checkResize() if(cu_atom->q_flag) {delete cu_q; cu_q = new cCudaData ((double*)atom->q, & cu_atom->q , atom->nmax );}// cu_q->set_buffer(&(copy_buffer),&(copy_buffersize),true);} -/* - if(force->pair) - if(force->pair->eatom) - {delete cu_eatom; cu_eatom = new cCudaData (force->pair->eatom, & cu_atom->eatom , atom->nmax );}// cu_eatom->set_buffer(&(copy_buffer),&(copy_buffersize),true);} - if(force->pair) - if(force->pair->vatom) - {delete cu_vatom; cu_vatom = new cCudaData ((double*)force->pair->vatom, & cu_atom->vatom , atom->nmax,6 );}// cu_vatom->set_buffer(&(copy_buffer),&(copy_buffersize),true);} -*/ if(atom->radius) { delete cu_radius; cu_radius = new cCudaData (atom->radius , & cu_atom->radius , atom->nmax ); @@ -443,11 +439,6 @@ void Cuda::checkResize() delete cu_omega_rmass; cu_omega_rmass = new cCudaData (omega_rmass , & cu_atom->omega_rmass , atom->nmax*4); } - /* - if(atom->density) - {delete cu_density; cu_density = new cCudaData (atom->density , & cu_atom->density , atom->nmax );} - */ - if(atom->omega) {delete cu_omega; cu_omega = new cCudaData (((double*) atom->omega) , & cu_atom->omega , atom->nmax,3 );} @@ -463,12 +454,10 @@ void Cuda::checkResize() shared_data.atom.special_flag = neighbor->special_flag; shared_data.atom.molecular = atom->molecular; - cu_atom->update_nmax = 2; - cu_atom->nmax = atom->nmax; + cu_atom->update_nmax = 2; + cu_atom->nmax = atom->nmax; - //delete [] x_type; x_type = new X_FLOAT4[atom->nmax]; delete cu_x_type; cu_x_type = new cCudaData (x_type , & cu_atom->x_type , atom->nmax*4); - // shared_data.buffer_new = 2; } if(((cu_xhold==NULL)||(cu_xhold->get_dim()[0]maxhold))&&neighbor->xhold) @@ -487,6 +476,12 @@ void Cuda::checkResize() { cu_map_array = new cCudaData (atom->get_map_array() , & cu_atom->map_array , atom->get_map_size() ); } + else + if(cu_map_array->dev_size()/sizeof(int)get_map_size()) + { + delete cu_map_array; + cu_map_array = new cCudaData (atom->get_map_array() , & cu_atom->map_array , atom->get_map_size() ); + } } @@ -511,11 +506,6 @@ void Cuda::checkResize() if(atom->radius) if(cu_radius->get_host_data() != atom->radius) cu_radius->set_host_data((double*) (atom->radius)); - /* - if(atom->density) - if(cu_density->get_host_data() != atom->density) cu_density->set_host_data((double*) (atom->density)); - */ - if(atom->omega) if(cu_omega->get_host_data() != atom->omega) cu_omega->set_host_data((double*) (atom->omega)); @@ -557,7 +547,7 @@ void Cuda::evsetup_eatom_vatom(int eflag_atom,int vflag_atom) if(not cu_vatom) cu_vatom = new cCudaData ((double*)force->pair->vatom, & (shared_data.atom.vatom) , atom->nmax ,6 );// cu_vatom->set_buffer(&(copy_buffer),&(copy_buffersize),true);} cu_vatom->set_host_data((double*)force->pair->vatom); - cu_vatom->memset_device(0); + cu_vatom->memset_device(0); } } @@ -578,16 +568,9 @@ void Cuda::uploadAll() cu_image->upload(); if(shared_data.atom.q_flag) cu_q ->upload(); - //printf("A3\n"); - //if(shared_data.atom.need_eatom) cu_eatom->upload(); - //printf("A4\n"); - //if(shared_data.atom.need_vatom) cu_vatom->upload(); - //printf("A5\n"); - if(atom->rmass) cu_rmass->upload(); if(atom->radius) cu_radius->upload(); - // if(atom->density) cu_density->upload(); if(atom->omega) cu_omega->upload(); if(atom->torque) cu_torque->upload(); if(atom->special) cu_special->upload(); @@ -630,7 +613,6 @@ void Cuda::downloadAll() if(atom->rmass) cu_rmass->download(); if(atom->radius) cu_radius->download(); - // if(atom->density) cu_density->download(); if(atom->omega) cu_omega->download(); if(atom->torque) cu_torque->download(); if(atom->special) cu_special->download(); @@ -746,13 +728,13 @@ void Cuda::setTimingsZero() shared_data.cuda_timings.neigh_special = 0; //PPPM - shared_data.cuda_timings.pppm_particle_map; - shared_data.cuda_timings.pppm_make_rho; - shared_data.cuda_timings.pppm_brick2fft; - shared_data.cuda_timings.pppm_poisson; - shared_data.cuda_timings.pppm_fillbrick; - shared_data.cuda_timings.pppm_fieldforce; - shared_data.cuda_timings.pppm_compute; + shared_data.cuda_timings.pppm_particle_map = 0; + shared_data.cuda_timings.pppm_make_rho = 0; + shared_data.cuda_timings.pppm_brick2fft = 0; + shared_data.cuda_timings.pppm_poisson = 0; + shared_data.cuda_timings.pppm_fillbrick = 0; + shared_data.cuda_timings.pppm_fieldforce = 0; + shared_data.cuda_timings.pppm_compute = 0; CudaWrapper_CheckUploadTime(true); CudaWrapper_CheckDownloadTime(true); @@ -788,8 +770,8 @@ void Cuda::print_timings() printf(" Exchange MPI \t %lf \n",shared_data.cuda_timings.comm_exchange_mpi); printf(" Exchange Kernel Pack \t %lf \n",shared_data.cuda_timings.comm_exchange_kernel_pack); printf(" Exchange Kernel Unpack \t %lf \n",shared_data.cuda_timings.comm_exchange_kernel_unpack); - printf(" Exchange Kernel Fill \t %lf \n",shared_data.cuda_timings.comm_exchange_kernel_fill); - printf(" Exchange CPU Pack \t %lf \n",shared_data.cuda_timings.comm_exchange_cpu_pack); + printf(" Exchange Kernel Fill \t %lf \n",shared_data.cuda_timings.comm_exchange_kernel_fill); + printf(" Exchange CPU Pack \t %lf \n",shared_data.cuda_timings.comm_exchange_cpu_pack); printf(" Exchange Upload \t %lf \n",shared_data.cuda_timings.comm_exchange_upload); printf(" Exchange Download \t %lf \n",shared_data.cuda_timings.comm_exchange_download); printf("\n"); diff --git a/src/USER-CUDA/cuda_neigh_list.cpp b/src/USER-CUDA/cuda_neigh_list.cpp index 9a88797e87..01f8e0c6a8 100644 --- a/src/USER-CUDA/cuda_neigh_list.cpp +++ b/src/USER-CUDA/cuda_neigh_list.cpp @@ -37,7 +37,7 @@ CudaNeighList::CudaNeighList(LAMMPS *lmp, class NeighList* neigh_list) : Pointer { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); MYDBG(printf("# CUDA: CudaNeighList::cudaNeighList() ... start\n");) this->neigh_list = neigh_list; @@ -111,6 +111,7 @@ void CudaNeighList::dev_alloc() neighbors_inner = new int[sneighlist.maxlocal*sneighlist.maxneighbors]; cu_neighbors_inner = new cCudaData (neighbors_inner , & sneighlist.neighbors_inner , sneighlist.maxlocal*sneighlist.maxneighbors ); } + cuda->shared_data.atom.update_neigh=2; MYDBG( printf("# CUDA: CudaNeighList::dev_alloc() ... end\n"); ) } diff --git a/src/USER-CUDA/cuda_precision.h b/src/USER-CUDA/cuda_precision.h deleted file mode 100644 index 5b7d6a6843..0000000000 --- a/src/USER-CUDA/cuda_precision.h +++ /dev/null @@ -1,269 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - - Original Version: - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - See the README file in the top-level LAMMPS directory. - - ----------------------------------------------------------------------- - - USER-CUDA Package and associated modifications: - https://sourceforge.net/projects/lammpscuda/ - - Christian Trott, christian.trott@tu-ilmenau.de - Lars Winterfeld, lars.winterfeld@tu-ilmenau.de - Theoretical Physics II, University of Technology Ilmenau, Germany - - See the README file in the USER-CUDA directory. - - This software is distributed under the GNU General Public License. -------------------------------------------------------------------------- */ - -#ifndef CUDA_PRECISION_H_ -#define CUDA_PRECISION_H_ -/* This File gives Type definitions for mixed precision calculation in the cuda part of LAMMPS-CUDA. - * Predefined behaviour is given by global CUDA_PRECISION (can be overwritten during compilation). - * ***_FLOAT: type definition of given property - * ***_F: constant extension in code (1.0 is interpreted as double while 1.0f is interpreted as float, now use: 1.0CUDA_F) - */ - -#ifdef CUDA_USE_BINNING -#define CUDA_IF_BINNING(a) a -#else -#define CUDA_IF_BINNING(a) -#endif - -//GLOBAL - -#ifdef CUDA_PRECISION - #if CUDA_PRECISION == 1 - #define CUDA_FLOAT float - #define CUDA_F(x) x##f - #endif - #if CUDA_PRECISION == 2 - #define CUDA_FLOAT double - #define CUDA_F(x) x - #endif -#endif - -#ifndef CUDA_PRECISION - #define CUDA_FLOAT double - #define CUDA_F(x) x - #define CUDA_PRECISION 2 -#endif -//-------------------------------- -//-----------FFT----------------- -//-------------------------------- - -#ifdef FFT_PRECISION_CU - #if FFT_PRECISION_CU == 1 - #define FFT_FLOAT float - #define FFT_F(x) x##f - #endif - #if FFT_PRECISION_CU == 2 - #define FFT_FLOAT double - #define FFT_F(x) x - #endif -#endif - -#ifndef FFT_PRECISION_CU - #define FFT_FLOAT CUDA_FLOAT - #define FFT_F(x) CUDA_F(x) - #define FFT_PRECISION_CU CUDA_PRECISION -#endif - -//-------------------------------- -//-----------PPPM----------------- -//-------------------------------- - -#ifdef PPPM_PRECISION - #if PPPM_PRECISION == 1 - #define PPPM_FLOAT float - #define PPPM_F(x) x##f - #endif - #if PPPM_PRECISION == 2 - #define PPPM_FLOAT double - #define PPPM_F(x) x - #endif -#endif - -#ifndef PPPM_PRECISION - #define PPPM_FLOAT CUDA_FLOAT - #define PPPM_F(x) CUDA_F(x) - #define PPPM_PRECISION CUDA_PRECISION -#endif - -//-------------------------------- -//-----------FORCE----------------- -//-------------------------------- - - -#ifdef F_PRECISION - #if F_PRECISION == 1 - #define F_FLOAT float - #define F_F(x) x##f - #endif - #if F_PRECISION == 2 - #define F_FLOAT double - #define F_F(x) x - #endif -#endif - -#ifndef F_PRECISION - #define F_FLOAT CUDA_FLOAT - #define F_F(x) CUDA_F(x) - #define F_PRECISION CUDA_PRECISION -#endif - -#if F_PRECISION == 1 -#define _SQRT_ sqrtf -#define _RSQRT_ rsqrtf -#define _EXP_ expf -#else -#define _SQRT_ sqrt -#define _RSQRT_ rsqrt -#define _EXP_ exp -#endif - -#if F_PRECISION == 2 -struct F_FLOAT2 -{ - F_FLOAT x; - F_FLOAT y; -}; -struct F_FLOAT3 -{ - F_FLOAT x; - F_FLOAT y; - F_FLOAT z; -}; -struct F_FLOAT4 -{ - F_FLOAT x; - F_FLOAT y; - F_FLOAT z; - F_FLOAT w; -}; -#else -#define F_FLOAT2 float2 -#define F_FLOAT3 float3 -#define F_FLOAT4 float4 -#endif -//-------------------------------- -//-----------ENERGY----------------- -//-------------------------------- - -#ifndef ENERGY_PRECISION - #define ENERGY_FLOAT CUDA_FLOAT - #define ENERGY_F(x) CUDA_F(x) -#endif - -#ifdef ENERGY_PRECISION - #if ENERGY_PRECISION == 1 - #define ENERGY_FLOAT float - #define ENERGY_F(x) x##f - #endif - #if ENERGY_PRECISION == 2 - #define ENERGY_FLOAT double - #define ENERGY_F(x) x - #endif -#endif - -#ifndef ENERGY_PRECISION - #define ENERGY_FLOAT CUDA_FLOAT - #define ENERGY_F(x) CUDA_F(x) - #define ENERGY_PRECISION CUDA_PRECISION -#endif - -//-------------------------------- -//-----------POSITIONS------------ -//-------------------------------- - -#ifdef X_PRECISION - #if X_PRECISION == 1 - #define X_FLOAT float - #define X_F(x) x##f - #endif - #if X_PRECISION == 2 - #define X_FLOAT double - #define X_F(x) x - #endif -#endif - -#ifndef X_PRECISION - #define X_FLOAT CUDA_FLOAT - #define X_F(x) CUDA_F(x) - #define X_PRECISION CUDA_PRECISION -#endif - -#if X_PRECISION == 2 -struct X_FLOAT2 -{ - X_FLOAT x; - X_FLOAT y; -}; -struct X_FLOAT3 -{ - X_FLOAT x; - X_FLOAT y; - X_FLOAT z; -}; -struct X_FLOAT4 -{ - X_FLOAT x; - X_FLOAT y; - X_FLOAT z; - X_FLOAT w; -}; -#else -#define X_FLOAT2 float2 -#define X_FLOAT3 float3 -#define X_FLOAT4 float4 -#endif - -//-------------------------------- -//-----------velocities----------- -//-------------------------------- - -#ifdef V_PRECISION - #if V_PRECISION == 1 - #define V_FLOAT float - #define V_F(x) x##f - #endif - #if V_PRECISION == 2 - #define V_FLOAT double - #define V_F(x) x - #endif -#endif - -#ifndef V_PRECISION - #define V_FLOAT CUDA_FLOAT - #define V_F(x) CUDA_F(x) - #define V_PRECISION CUDA_PRECISION -#endif - -#if V_PRECISION == 2 -struct V_FLOAT4 -{ - V_FLOAT x; - V_FLOAT y; - V_FLOAT z; - V_FLOAT w; -}; -#else -#define V_FLOAT4 float4 -#endif - -#ifdef NO_PREC_TIMING -struct timespec_2 -{ - unsigned int tv_sec; - unsigned int tv_nsec; -}; - -#define timespec timespec_2 -#define clock_gettime(a,b) -#endif -#endif /*CUDA_PRECISION_H_*/ diff --git a/src/USER-CUDA/cuda_shared.h b/src/USER-CUDA/cuda_shared.h deleted file mode 100644 index f7983fff05..0000000000 --- a/src/USER-CUDA/cuda_shared.h +++ /dev/null @@ -1,378 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - - Original Version: - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - See the README file in the top-level LAMMPS directory. - - ----------------------------------------------------------------------- - - USER-CUDA Package and associated modifications: - https://sourceforge.net/projects/lammpscuda/ - - Christian Trott, christian.trott@tu-ilmenau.de - Lars Winterfeld, lars.winterfeld@tu-ilmenau.de - Theoretical Physics II, University of Technology Ilmenau, Germany - - See the README file in the USER-CUDA directory. - - This software is distributed under the GNU General Public License. -------------------------------------------------------------------------- */ - -#ifndef _CUDA_SHARED_H_ -#define _CUDA_SHARED_H_ -#include "cuda_precision.h" - -#define CUDA_MAX_DEBUG_SIZE 1000 //size of debugdata array (allows for so many doubles or twice as many int) - -struct dev_array -{ - void* dev_data; // pointer to memory address on cuda device - unsigned dim[3]; // array dimensions -}; - -struct cuda_shared_atom // relevent data from atom class -{ - dev_array dx; // cumulated distance for binning settings - dev_array x; // position - dev_array v; // velocity - dev_array f; // force - dev_array tag; - dev_array type; // global ID number, there are ghosttype = ntypes (ntypescuda=ntypes+1) - dev_array mask; - dev_array image; - dev_array q; // charges - dev_array mass; // per-type masses - dev_array rmass; // per-atom masses - dev_array radius; // per-atom radius - dev_array density; - dev_array omega; - dev_array torque; - dev_array molecule; - - dev_array special; - int maxspecial; - dev_array nspecial; - int* special_flag; - int molecular; - - dev_array eatom; // per-atom energy - dev_array vatom; // per-atom virial - int need_eatom; - int need_vatom; - - dev_array x_type; // position + type in X_FLOAT4 struct - dev_array v_radius; // velociyt + radius in V_FLOAT4 struct currently only used for granular atom_style - dev_array omega_rmass; // velociyt + radius in V_FLOAT4 struct currently only used for granular atom_style - - double* mass_host; // remember per-type host pointer to masses - //int natoms; // total # of atoms in system, could be 0 - int nghost; // and ghost atoms on this proc - int nlocal; // # of owned - int nall; // total # of atoms in this proc - int nmax; // max # of owned+ghost in arrays on this proc - int ntypes; - int q_flag; // do we have charges? - int rmass_flag; // do we have per-atom masses? - int firstgroup; - int nfirst; - - int update_nlocal; - int update_nmax; - - dev_array xhold; // position at last neighboring - X_FLOAT triggerneighsq; // maximum square movement before reneighboring - int reneigh_flag; // is reneighboring necessary - int maxhold; // size of xhold - int dist_check; //perform distance check for reneighboring - dev_array binned_id; //id of each binned atom (not tag!!) - dev_array binned_idnew; //new id of each binned atom for sorting basically setting atom[binned_id[k]] at atom[binned_newid[k]] - float bin_extraspace; - int bin_dim[3]; - int bin_nmax; - dev_array map_array; -}; - -struct cuda_shared_pair // relevent data from pair class -{ - char cudable_force; // check for (cudable_force!=0) - X_FLOAT cut_global; - X_FLOAT cut_inner_global; - X_FLOAT cut_coul_global; - double** cut; // type-type cutoff - double** cutsq; // type-type cutoff - double** cut_inner; // type-type cutoff for coul - double** cut_coul; // type-type cutoff for coul - double** coeff1; // tpye-type pair parameters - double** coeff2; - double** coeff3; - double** coeff4; - double** coeff5; - double** coeff6; - double** coeff7; - double** coeff8; - double** coeff9; - double** coeff10; - double** offset; - double* special_lj; - double* special_coul; - dev_array virial; // ENERGY_FLOAT - dev_array eng_vdwl; // ENERGY_FLOAT - dev_array eng_coul; // ENERGY_FLOAT - X_FLOAT cut_coulsq_global; - F_FLOAT g_ewald,kappa; - int freeze_group_bit; - - dev_array coeff1_gm; - dev_array coeff2_gm; - dev_array coeff3_gm; - dev_array coeff4_gm; - dev_array coeff5_gm; - dev_array coeff6_gm; - dev_array coeff7_gm; - dev_array coeff8_gm; - dev_array coeff9_gm; - dev_array coeff10_gm; - - int lastgridsize; - int n_energy_virial; - int collect_forces_later; - int use_block_per_atom; - int override_block_per_atom; - -}; - -struct cuda_shared_domain // relevent data from domain class -{ - X_FLOAT sublo[3]; // orthogonal box -> sub-box bounds on this proc - X_FLOAT subhi[3]; - X_FLOAT boxlo[3]; - X_FLOAT boxhi[3]; - X_FLOAT prd[3]; - int periodicity[3]; // xyz periodicity as array - - int triclinic; - X_FLOAT xy; - X_FLOAT xz; - X_FLOAT yz; - X_FLOAT boxlo_lamda[3]; - X_FLOAT boxhi_lamda[3]; - X_FLOAT prd_lamda[3]; - X_FLOAT h[6]; - X_FLOAT h_inv[6]; - V_FLOAT h_rate[6]; - int update; -}; - -struct cuda_shared_pppm -{ - char cudable_force; -#ifdef FFT_CUFFT - FFT_FLOAT* work1; - FFT_FLOAT* work2; - FFT_FLOAT* work3; - PPPM_FLOAT* greensfn; - PPPM_FLOAT* fkx; - PPPM_FLOAT* fky; - PPPM_FLOAT* fkz; - PPPM_FLOAT* vg; -#endif - int* part2grid; - PPPM_FLOAT* density_brick; - int* density_brick_int; - PPPM_FLOAT density_intScale; - PPPM_FLOAT* vdx_brick; - PPPM_FLOAT* vdy_brick; - PPPM_FLOAT* vdz_brick; - PPPM_FLOAT* density_fft; - ENERGY_FLOAT* energy; - ENERGY_FLOAT* virial; - int nxlo_in; - int nxhi_in; - int nxlo_out; - int nxhi_out; - int nylo_in; - int nyhi_in; - int nylo_out; - int nyhi_out; - int nzlo_in; - int nzhi_in; - int nzlo_out; - int nzhi_out; - int nx_pppm; - int ny_pppm; - int nz_pppm; - PPPM_FLOAT qqrd2e; - int order; - // float3 sublo; - PPPM_FLOAT* rho_coeff; - int nmax; - int nlocal; - PPPM_FLOAT* debugdata; - PPPM_FLOAT delxinv; - PPPM_FLOAT delyinv; - PPPM_FLOAT delzinv; - int nlower; - int nupper; - PPPM_FLOAT shiftone; - -}; - -struct cuda_shared_comm -{ - int maxswap; - int maxlistlength; - dev_array pbc; - dev_array slablo; - dev_array slabhi; - dev_array multilo; - dev_array multihi; - dev_array sendlist; - int grow_flag; - int comm_phase; - - int nsend; - int* nsend_swap; - int* send_size; - int* recv_size; - double** buf_send; - void** buf_send_dev; - double** buf_recv; - void** buf_recv_dev; - void* buffer; - int buffer_size; - double overlap_split_ratio; -}; - -struct cuda_shared_neighlist // member of CudaNeighList, has no instance in cuda_shared_data -{ - int maxlocal; - int inum; // # of I atoms neighbors are stored for local indices of I atoms - int inum_border2; - dev_array inum_border; // # of atoms which interact with border atoms - dev_array ilist; - dev_array ilist_border; - dev_array numneigh; - dev_array numneigh_inner; - dev_array numneigh_border; - dev_array firstneigh; - dev_array neighbors; - dev_array neighbors_border; - dev_array neighbors_inner; - int maxpage; - dev_array page_pointers; - dev_array* pages; - int maxneighbors; - int neigh_lists_per_page; - double** cutneighsq; - CUDA_FLOAT* cu_cutneighsq; - int* binned_id; - int* bin_dim; - int bin_nmax; - float bin_extraspace; - double maxcut; - dev_array ex_type; - int nex_type; - dev_array ex1_bit; - dev_array ex2_bit; - int nex_group; - dev_array ex_mol_bit; - int nex_mol; - -}; - -struct cuda_compile_settings // this is used to compare compile settings (i.e. precision) of the cu files, and the cpp files -{ - int prec_glob; - int prec_x; - int prec_v; - int prec_f; - int prec_pppm; - int prec_fft; - int cufft; - int arch; -}; - -struct cuda_timings_struct -{ - //Debug: - double test1; - double test2; - //transfers - double transfer_upload_tmp_constr; - double transfer_download_tmp_deconstr; - - //communication - double comm_forward_total; - double comm_forward_mpi_upper; - double comm_forward_mpi_lower; - double comm_forward_kernel_pack; - double comm_forward_kernel_unpack; - double comm_forward_kernel_self; - double comm_forward_upload; - double comm_forward_download; - - double comm_exchange_total; - double comm_exchange_mpi; - double comm_exchange_kernel_pack; - double comm_exchange_kernel_unpack; - double comm_exchange_kernel_fill; - double comm_exchange_cpu_pack; - double comm_exchange_upload; - double comm_exchange_download; - - double comm_border_total; - double comm_border_mpi; - double comm_border_kernel_pack; - double comm_border_kernel_unpack; - double comm_border_kernel_self; - double comm_border_kernel_buildlist; - double comm_border_upload; - double comm_border_download; - - //pair forces - double pair_xtype_conversion; - double pair_kernel; - double pair_virial; - double pair_force_collection; - - //neighbor - double neigh_bin; - double neigh_build; - double neigh_special; - - //PPPM - double pppm_particle_map; - double pppm_make_rho; - double pppm_brick2fft; - double pppm_poisson; - double pppm_fillbrick; - double pppm_fieldforce; - double pppm_compute; - -}; - -struct cuda_shared_data // holds space for all relevent data from the different classes -{ - void* buffer; //holds temporary GPU data [data used in subroutines, which has not to be consistend outside of that routine] - int buffersize; //maxsize of buffer - int buffer_new; //should be 1 if the pointer to buffer has changed - void* flag; - void* debugdata; //array for easily collecting debugdata from device class cuda contains the corresponding cu_debugdata and host array - cuda_shared_atom atom; - cuda_shared_pair pair; - cuda_shared_domain domain; - cuda_shared_pppm pppm; - cuda_shared_comm comm; - cuda_compile_settings compile_settings; - cuda_timings_struct cuda_timings; - int exchange_dim; - int me; //mpi rank - unsigned int datamask; - int overlap_comm; -}; - - -#endif // #ifndef _CUDA_SHARED_H_ diff --git a/src/USER-CUDA/domain_cuda.cpp b/src/USER-CUDA/domain_cuda.cpp index 37aa38c198..b241b16a29 100644 --- a/src/USER-CUDA/domain_cuda.cpp +++ b/src/USER-CUDA/domain_cuda.cpp @@ -42,8 +42,6 @@ using namespace LAMMPS_NS; #define BIG 1.0e20 #define SMALL 1.0e-4 #define DELTA 1 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) enum{NO_REMAP,X_REMAP,V_REMAP}; // same as fix_deform.cpp @@ -55,7 +53,7 @@ DomainCuda::DomainCuda(LAMMPS *lmp) : Domain(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); } /* ---------------------------------------------------------------------- */ @@ -180,21 +178,21 @@ void DomainCuda::reset_box() else if (boundary[0][0] == 3) boxlo[0] = MIN(-all[0][0]-SMALL,minxlo); if (boundary[0][1] == 2) boxhi[0] = all[0][1] + SMALL; else if (boundary[0][1] == 3) boxhi[0] = MAX(all[0][1]+SMALL,minxhi); - if (boxlo[0] > boxhi[0]) error->all("Illegal simulation box"); + if (boxlo[0] > boxhi[0]) error->all(FLERR,"Illegal simulation box"); } if (yperiodic == 0) { if (boundary[1][0] == 2) boxlo[1] = -all[1][0] - SMALL; else if (boundary[1][0] == 3) boxlo[1] = MIN(-all[1][0]-SMALL,minylo); if (boundary[1][1] == 2) boxhi[1] = all[1][1] + SMALL; else if (boundary[1][1] == 3) boxhi[1] = MAX(all[1][1]+SMALL,minyhi); - if (boxlo[1] > boxhi[1]) error->all("Illegal simulation box"); + if (boxlo[1] > boxhi[1]) error->all(FLERR,"Illegal simulation box"); } if (zperiodic == 0) { if (boundary[2][0] == 2) boxlo[2] = -all[2][0] - SMALL; else if (boundary[2][0] == 3) boxlo[2] = MIN(-all[2][0]-SMALL,minzlo); if (boundary[2][1] == 2) boxhi[2] = all[2][1] + SMALL; else if (boundary[2][1] == 3) boxhi[2] = MAX(all[2][1]+SMALL,minzhi); - if (boxlo[2] > boxhi[2]) error->all("Illegal simulation box"); + if (boxlo[2] > boxhi[2]) error->all(FLERR,"Illegal simulation box"); } } diff --git a/src/USER-CUDA/fft3d_cuda.cpp b/src/USER-CUDA/fft3d_cuda.cpp index bb1278bb75..c6882f4597 100644 --- a/src/USER-CUDA/fft3d_cuda.cpp +++ b/src/USER-CUDA/fft3d_cuda.cpp @@ -50,6 +50,7 @@ #ifdef FFT_CUFFT #endif + #define MIN(A,B) ((A) < (B)) ? (A) : (B) #define MAX(A,B) ((A) > (B)) ? (A) : (B) @@ -182,7 +183,7 @@ struct fft_plan_3d *fft_3d_create_plan_cuda( MPI_Comm_size(comm,&nprocs); #ifndef FFT_CUFFT - error->all("ERROR: Trying to use cuda fft without FFT_CUFFT set. Recompile with make option 'cufft=1'."); + error->all(FLERR,"ERROR: Trying to use cuda fft without FFT_CUFFT set. Recompile with make option 'cufft=1'."); #endif // compute division of procs in 2 dimensions not on-processor bifactor_cuda(nprocs,&np1,&np2); diff --git a/src/USER-CUDA/fft3d_wrap_cuda.cpp b/src/USER-CUDA/fft3d_wrap_cuda.cpp index 5fa45bd85c..eab2f82e79 100644 --- a/src/USER-CUDA/fft3d_wrap_cuda.cpp +++ b/src/USER-CUDA/fft3d_wrap_cuda.cpp @@ -61,7 +61,7 @@ FFT3dCuda::FFT3dCuda(LAMMPS *lmp, MPI_Comm comm, int nfast, int nmid, int nslow, out_ilo,out_ihi,out_jlo,out_jhi,out_klo,out_khi, scaled,permute,nbuf); #endif - if (plan == NULL) error->one("Could not create 3d FFT plan"); + if (plan == NULL) error->one(FLERR,"Could not create 3d FFT plan"); } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-CUDA/fix_addforce_cuda.cpp b/src/USER-CUDA/fix_addforce_cuda.cpp index acf4d6d7ec..218110acf7 100644 --- a/src/USER-CUDA/fix_addforce_cuda.cpp +++ b/src/USER-CUDA/fix_addforce_cuda.cpp @@ -45,9 +45,9 @@ FixAddForceCuda::FixAddForceCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg < 6) error->all("Illegal fix addforce/cuda command"); + if (narg < 6) error->all(FLERR,"Illegal fix addforce/cuda command"); scalar_flag = 1; vector_flag = 1; @@ -67,14 +67,14 @@ FixAddForceCuda::FixAddForceCuda(LAMMPS *lmp, int narg, char **arg) : int iarg = 6; while (iarg < narg) { if (strcmp(arg[iarg],"region") == 0) { - if (iarg+2 > narg) error->all("Illegal fix addforce/cuda command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix addforce/cuda command"); iregion = domain->find_region(arg[iarg+1]); - if (iregion == -1) error->all("Fix addforce/cuda region ID does not exist"); + if (iregion == -1) error->all(FLERR,"Fix addforce/cuda region ID does not exist"); iarg += 2; - } else error->all("Illegal fix addforce/cuda command"); + } else error->all(FLERR,"Illegal fix addforce/cuda command"); } - if(iregion!=-1) error->all("Error: fix addforce/cuda does not currently support 'region' option"); + if(iregion!=-1) error->all(FLERR,"Error: fix addforce/cuda does not currently support 'region' option"); force_flag = 0; foriginal[0] = foriginal[1] = foriginal[2] = foriginal[3] = 0.0; diff --git a/src/USER-CUDA/fix_aveforce_cuda.cpp b/src/USER-CUDA/fix_aveforce_cuda.cpp index 10b4555e86..3a80fc1b3c 100644 --- a/src/USER-CUDA/fix_aveforce_cuda.cpp +++ b/src/USER-CUDA/fix_aveforce_cuda.cpp @@ -44,9 +44,9 @@ FixAveForceCuda::FixAveForceCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg != 6) error->all("Illegal fix aveforce command"); + if (narg != 6) error->all(FLERR,"Illegal fix aveforce command"); vector_flag = 1; size_vector = 3; @@ -68,15 +68,15 @@ FixAveForceCuda::FixAveForceCuda(LAMMPS *lmp, int narg, char **arg) : int iarg = 6; while (iarg < narg) { if (strcmp(arg[iarg],"region") == 0) { - if (iarg+2 > narg) error->all("Illegal fix aveforce command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix aveforce command"); iregion = domain->find_region(arg[iarg+1]); - if (iregion == -1) error->all("Fix aveforce region ID does not exist"); + if (iregion == -1) error->all(FLERR,"Fix aveforce region ID does not exist"); iarg += 2; - } else error->all("Illegal fix aveforce command"); + } else error->all(FLERR,"Illegal fix aveforce command"); } - if(iregion!=-1) error->all("Error: fix aveforce/cuda does not currently support 'region' option"); + if(iregion!=-1) error->all(FLERR,"Error: fix aveforce/cuda does not currently support 'region' option"); foriginal_all[0] = foriginal_all[1] = foriginal_all[2] = foriginal_all[3] = 0.0; foriginal[0] = foriginal[1] = foriginal[2] = foriginal[3] = 0.0; diff --git a/src/USER-CUDA/fix_enforce2d_cuda.cpp b/src/USER-CUDA/fix_enforce2d_cuda.cpp index 91a1661c08..d660814f2d 100644 --- a/src/USER-CUDA/fix_enforce2d_cuda.cpp +++ b/src/USER-CUDA/fix_enforce2d_cuda.cpp @@ -54,9 +54,9 @@ FixEnforce2DCuda::FixEnforce2DCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg != 3) error->all("Illegal fix enforce2d command"); + if (narg != 3) error->all(FLERR,"Illegal fix enforce2d command"); } /* ---------------------------------------------------------------------- */ @@ -75,15 +75,15 @@ int FixEnforce2DCuda::setmask() void FixEnforce2DCuda::init() { if (domain->dimension == 3) - error->all("Cannot use fix enforce2d/cuda with 3d simulation"); + error->all(FLERR,"Cannot use fix enforce2d/cuda with 3d simulation"); if (atom->omega_flag) - error->warning("Enforce2d/cuda does not support omega_flag on gpu yet. Will be handled on cpu."); + error->warning(FLERR,"Enforce2d/cuda does not support omega_flag on gpu yet. Will be handled on cpu."); if (atom->angmom_flag) - error->warning("Enforce2d/cuda does not support angmom_flag (angular momentum) on gpu yet. Will be handled on cpu."); + error->warning(FLERR,"Enforce2d/cuda does not support angmom_flag (angular momentum) on gpu yet. Will be handled on cpu."); if (atom->torque_flag) - error->warning("Enforce2d/cuda does not support torque_flag on gpu yet. Will be handled on cpu."); + error->warning(FLERR,"Enforce2d/cuda does not support torque_flag on gpu yet. Will be handled on cpu."); } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-CUDA/fix_freeze_cuda.cpp b/src/USER-CUDA/fix_freeze_cuda.cpp index d52642280e..9e8f81c5f5 100644 --- a/src/USER-CUDA/fix_freeze_cuda.cpp +++ b/src/USER-CUDA/fix_freeze_cuda.cpp @@ -43,12 +43,12 @@ FixFreezeCuda::FixFreezeCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg != 3) error->all("Illegal fix freeze command"); + if (narg != 3) error->all(FLERR,"Illegal fix freeze command"); if (!atom->torque_flag) - error->all("Fix freeze requires atom attribute torque"); + error->all(FLERR,"Fix freeze requires atom attribute torque"); vector_flag = 1; size_vector = 3; @@ -81,7 +81,7 @@ void FixFreezeCuda::init() int count = 0; for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"freeze") == 0) count++; - if (count > 1) error->all("More than one fix freeze"); + if (count > 1) error->all(FLERR,"More than one fix freeze"); } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-CUDA/fix_gravity_cuda.cpp b/src/USER-CUDA/fix_gravity_cuda.cpp index 0c69dffcc1..36d7022fa3 100644 --- a/src/USER-CUDA/fix_gravity_cuda.cpp +++ b/src/USER-CUDA/fix_gravity_cuda.cpp @@ -30,12 +30,13 @@ #include "update.h" #include "domain.h" #include "respa.h" -#include "error.h" #include "cuda.h" #include "cuda_modify_flags.h" - +#include "math_const.h" +#include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; enum{CHUTE,SPHERICAL,GRADIENT,VECTOR}; @@ -46,41 +47,40 @@ FixGravityCuda::FixGravityCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg < 5) error->all("Illegal fix gravity command"); + if (narg < 5) error->all(FLERR,"Illegal fix gravity command"); time_depend = 1; magnitude = atof(arg[3]); if (strcmp(arg[4],"chute") == 0) { - if (narg != 6) error->all("Illegal fix gravity command"); + if (narg != 6) error->all(FLERR,"Illegal fix gravity command"); style = CHUTE; phi = 0.0; theta = 180.0 - atof(arg[5]); } else if (strcmp(arg[4],"spherical") == 0) { - if (narg != 7) error->all("Illegal fix gravity command"); + if (narg != 7) error->all(FLERR,"Illegal fix gravity command"); style = SPHERICAL; phi = atof(arg[5]); theta = atof(arg[6]); } else if (strcmp(arg[4],"gradient") == 0) { - if (narg != 9) error->all("Illegal fix gravity command"); + if (narg != 9) error->all(FLERR,"Illegal fix gravity command"); style = GRADIENT; phi = atof(arg[5]); theta = atof(arg[6]); phigrad = atof(arg[7]); thetagrad = atof(arg[8]); } else if (strcmp(arg[4],"vector") == 0) { - if (narg != 8) error->all("Illegal fix gravity command"); + if (narg != 8) error->all(FLERR,"Illegal fix gravity command"); style = VECTOR; xdir = atof(arg[5]); ydir = atof(arg[6]); zdir = atof(arg[7]); - } else error->all("Illegal fix gravity command"); + } else error->all(FLERR,"Illegal fix gravity command"); - double PI = 4.0*atan(1.0); - degree2rad = PI/180.0; + degree2rad = MY_PI/180.0; if (style == CHUTE || style == SPHERICAL || style == GRADIENT) { if (domain->dimension == 3) { diff --git a/src/USER-CUDA/fix_nh_cuda.cpp b/src/USER-CUDA/fix_nh_cuda.cpp index 281ffaf0f6..cfbd3f7888 100644 --- a/src/USER-CUDA/fix_nh_cuda.cpp +++ b/src/USER-CUDA/fix_nh_cuda.cpp @@ -38,9 +38,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - enum{NOBIAS,BIAS}; enum{NONE,XYZ,XY,YZ,XZ}; enum{ISO,ANISO,TRICLINIC}; @@ -53,9 +50,9 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg < 4) error->all("Illegal fix nvt/npt/nph command"); + if (narg < 4) error->all(FLERR,"Illegal fix nvt/npt/nph command"); restart_global = 1; time_integrate = 1; @@ -98,17 +95,17 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) while (iarg < narg) { if (strcmp(arg[iarg],"temp") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); tstat_flag = 1; t_start = atof(arg[iarg+1]); t_stop = atof(arg[iarg+2]); t_period = atof(arg[iarg+3]); if (t_start < 0.0 || t_stop <= 0.0) - error->all("Target T for fix nvt/npt/nph cannot be 0.0"); + error->all(FLERR,"Target T for fix nvt/npt/nph cannot be 0.0"); iarg += 4; } else if (strcmp(arg[iarg],"iso") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); pcouple = XYZ; p_start[0] = p_start[1] = p_start[2] = atof(arg[iarg+1]); p_stop[0] = p_stop[1] = p_stop[2] = atof(arg[iarg+2]); @@ -120,7 +117,7 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) } iarg += 4; } else if (strcmp(arg[iarg],"aniso") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); pcouple = NONE; p_start[0] = p_start[1] = p_start[2] = atof(arg[iarg+1]); p_stop[0] = p_stop[1] = p_stop[2] = atof(arg[iarg+2]); @@ -132,7 +129,7 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) } iarg += 4; } else if (strcmp(arg[iarg],"tri") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); pcouple = NONE; p_start[0] = p_start[1] = p_start[2] = atof(arg[iarg+1]); p_stop[0] = p_stop[1] = p_stop[2] = atof(arg[iarg+2]); @@ -153,7 +150,7 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) iarg += 4; } else if (strcmp(arg[iarg],"x") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[0] = atof(arg[iarg+1]); p_stop[0] = atof(arg[iarg+2]); p_period[0] = atof(arg[iarg+3]); @@ -161,7 +158,7 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) deviatoric_flag = 1; iarg += 4; } else if (strcmp(arg[iarg],"y") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[1] = atof(arg[iarg+1]); p_stop[1] = atof(arg[iarg+2]); p_period[1] = atof(arg[iarg+3]); @@ -169,7 +166,7 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) deviatoric_flag = 1; iarg += 4; } else if (strcmp(arg[iarg],"z") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[2] = atof(arg[iarg+1]); p_stop[2] = atof(arg[iarg+2]); p_period[2] = atof(arg[iarg+3]); @@ -177,10 +174,10 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) deviatoric_flag = 1; iarg += 4; if (dimension == 2) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); } else if (strcmp(arg[iarg],"yz") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[3] = atof(arg[iarg+1]); p_stop[3] = atof(arg[iarg+2]); p_period[3] = atof(arg[iarg+3]); @@ -188,9 +185,9 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) deviatoric_flag = 1; iarg += 4; if (dimension == 2) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); } else if (strcmp(arg[iarg],"xz") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[4] = atof(arg[iarg+1]); p_stop[4] = atof(arg[iarg+2]); p_period[4] = atof(arg[iarg+3]); @@ -198,9 +195,9 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) deviatoric_flag = 1; iarg += 4; if (dimension == 2) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); } else if (strcmp(arg[iarg],"xy") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[5] = atof(arg[iarg+1]); p_stop[5] = atof(arg[iarg+2]); p_period[5] = atof(arg[iarg+3]); @@ -209,116 +206,116 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) iarg += 4; } else if (strcmp(arg[iarg],"couple") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"xyz") == 0) pcouple = XYZ; else if (strcmp(arg[iarg+1],"xy") == 0) pcouple = XY; else if (strcmp(arg[iarg+1],"yz") == 0) pcouple = YZ; else if (strcmp(arg[iarg+1],"xz") == 0) pcouple = XZ; else if (strcmp(arg[iarg+1],"none") == 0) pcouple = NONE; - else error->all("Illegal fix nvt/npt/nph command"); + else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"drag") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); drag = atof(arg[iarg+1]); - if (drag < 0.0) error->all("Illegal fix nvt/npt/nph command"); + if (drag < 0.0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"dilate") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"all") == 0) allremap = 1; else if (strcmp(arg[iarg+1],"partial") == 0) allremap = 0; - else error->all("Illegal fix nvt/npt/nph command"); + else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"tchain") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); mtchain = atoi(arg[iarg+1]); - if (mtchain < 1) error->all("Illegal fix nvt/npt/nph command"); + if (mtchain < 1) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"pchain") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); mpchain = atoi(arg[iarg+1]); - if (mpchain < 0) error->all("Illegal fix nvt/npt/nph command"); + if (mpchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"mtk") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"yes") == 0) mtk_flag = 1; else if (strcmp(arg[iarg+1],"no") == 0) mtk_flag = 0; - else error->all("Illegal fix nvt/npt/nph command"); + else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"tloop") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); nc_tchain = atoi(arg[iarg+1]); - if (nc_tchain < 0) error->all("Illegal fix nvt/npt/nph command"); + if (nc_tchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"ploop") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); nc_pchain = atoi(arg[iarg+1]); - if (nc_pchain < 0) error->all("Illegal fix nvt/npt/nph command"); + if (nc_pchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"nreset") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); nreset_h0 = atoi(arg[iarg+1]); - if (nreset_h0 < 0) error->all("Illegal fix nvt/npt/nph command"); + if (nreset_h0 < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; - } else error->all("Illegal fix nvt/npt/nph command"); + } else error->all(FLERR,"Illegal fix nvt/npt/nph command"); } // error checks if (dimension == 2 && (p_flag[2] || p_flag[3] || p_flag[4])) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); if (dimension == 2 && (pcouple == YZ || pcouple == XZ)) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); if (pcouple == XYZ && (p_flag[0] == 0 || p_flag[1] == 0)) - error->all("Invalid fix nvt/npt/nph command pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == XYZ && dimension == 3 && p_flag[2] == 0) - error->all("Invalid fix nvt/npt/nph command pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == XY && (p_flag[0] == 0 || p_flag[1] == 0)) - error->all("Invalid fix nvt/npt/nph command pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == YZ && (p_flag[1] == 0 || p_flag[2] == 0)) - error->all("Invalid fix nvt/npt/nph command pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == XZ && (p_flag[0] == 0 || p_flag[2] == 0)) - error->all("Invalid fix nvt/npt/nph command pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (p_flag[0] && domain->xperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension"); if (p_flag[1] && domain->yperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension"); if (p_flag[2] && domain->zperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension"); if (p_flag[3] && domain->zperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); if (p_flag[4] && domain->zperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); if (p_flag[5] && domain->yperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); if (!domain->triclinic && (p_flag[3] || p_flag[4] || p_flag[5])) - error->all("Can not specify Pxy/Pxz/Pyz in " + error->all(FLERR,"Can not specify Pxy/Pxz/Pyz in " "fix nvt/npt/nph with non-triclinic box"); if (pcouple == XYZ && dimension == 3 && (p_start[0] != p_start[1] || p_start[0] != p_start[2] || p_stop[0] != p_stop[1] || p_stop[0] != p_stop[2] || p_period[0] != p_period[1] || p_period[0] != p_period[2])) - error->all("Invalid fix nvt/npt/nph pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == XYZ && dimension == 2 && (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || p_period[0] != p_period[1])) - error->all("Invalid fix nvt/npt/nph pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == XY && (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || p_period[0] != p_period[1])) - error->all("Invalid fix nvt/npt/nph pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == YZ && (p_start[1] != p_start[2] || p_stop[1] != p_stop[2] || p_period[1] != p_period[2])) - error->all("Invalid fix nvt/npt/nph pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == XZ && (p_start[0] != p_start[2] || p_stop[0] != p_stop[2] || p_period[0] != p_period[2])) - error->all("Invalid fix nvt/npt/nph pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if ((tstat_flag && t_period <= 0.0) || (p_flag[0] && p_period[0] <= 0.0) || @@ -327,7 +324,7 @@ FixNHCuda::FixNHCuda(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) (p_flag[3] && p_period[3] <= 0.0) || (p_flag[4] && p_period[4] <= 0.0) || (p_flag[5] && p_period[5] <= 0.0)) - error->all("Fix nvt/npt/nph damping parameters must be > 0.0"); + error->all(FLERR,"Fix nvt/npt/nph damping parameters must be > 0.0"); // set pstat_flag and box change variables @@ -480,7 +477,7 @@ void FixNHCuda::init() if ((p_flag[0] && dimflag[0]) || (p_flag[1] && dimflag[1]) || (p_flag[2] && dimflag[2]) || (p_flag[3] && dimflag[3]) || (p_flag[4] && dimflag[4]) || (p_flag[5] && dimflag[5])) - error->all("Cannot use fix npt and fix deform on " + error->all(FLERR,"Cannot use fix npt and fix deform on " "same component of stress tensor"); } @@ -488,7 +485,7 @@ void FixNHCuda::init() int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix nvt/nph/npt does not exist"); + error->all(FLERR,"Temperature ID for fix nvt/nph/npt does not exist"); temperature = modify->compute[icompute]; if (temperature->tempbias) which = BIAS; @@ -496,7 +493,7 @@ void FixNHCuda::init() if (pstat_flag) { icompute = modify->find_compute(id_press); - if (icompute < 0) error->all("Pressure ID for fix npt/nph does not exist"); + if (icompute < 0) error->all(FLERR,"Pressure ID for fix npt/nph does not exist"); pressure = modify->compute[icompute]; } @@ -1098,7 +1095,7 @@ void FixNHCuda::remap() if (domain->yz < -0.5*domain->yprd || domain->yz > 0.5*domain->yprd || domain->xz < -0.5*domain->xprd || domain->xz > 0.5*domain->xprd || domain->xy < -0.5*domain->xprd || domain->xy > 0.5*domain->xprd) - error->all("Fix npt/nph has tilted box too far - " + error->all(FLERR,"Fix npt/nph has tilted box too far - " "box flips are not yet implemented"); } @@ -1247,7 +1244,7 @@ void FixNHCuda::restart(char *buf) int FixNHCuda::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -1258,28 +1255,28 @@ int FixNHCuda::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(arg[1]); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != 0 && comm->me == 0) - error->warning("Temperature for fix modify is not for group all"); + error->warning(FLERR,"Temperature for fix modify is not for group all"); // reset id_temp of pressure to new temperature ID if (pstat_flag) { icompute = modify->find_compute(id_press); if (icompute < 0) - error->all("Pressure ID for fix modify does not exist"); + error->all(FLERR,"Pressure ID for fix modify does not exist"); modify->compute[icompute]->reset_extra_compute_fix(id_temp); } return 2; } else if (strcmp(arg[0],"press") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); - if (!pstat_flag) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); + if (!pstat_flag) error->all(FLERR,"Illegal fix_modify command"); if (pflag) { modify->delete_compute(id_press); pflag = 0; @@ -1290,11 +1287,11 @@ int FixNHCuda::modify_param(int narg, char **arg) strcpy(id_press,arg[1]); int icompute = modify->find_compute(arg[1]); - if (icompute < 0) error->all("Could not find fix_modify pressure ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify pressure ID"); pressure = modify->compute[icompute]; if (pressure->pressflag == 0) - error->all("Fix_modify pressure ID does not compute pressure"); + error->all(FLERR,"Fix_modify pressure ID does not compute pressure"); return 2; } diff --git a/src/USER-CUDA/fix_npt_cuda.cpp b/src/USER-CUDA/fix_npt_cuda.cpp index 3ad0d74efb..dbd395cbcf 100644 --- a/src/USER-CUDA/fix_npt_cuda.cpp +++ b/src/USER-CUDA/fix_npt_cuda.cpp @@ -25,12 +25,12 @@ FixNPTCuda::FixNPTCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); if (!tstat_flag) - error->all("Temperature control must be used with fix npt"); + error->all(FLERR,"Temperature control must be used with fix npt"); if (!pstat_flag) - error->all("Pressure control must be used with fix npt"); + error->all(FLERR,"Pressure control must be used with fix npt"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/USER-CUDA/fix_nve_cuda.cpp b/src/USER-CUDA/fix_nve_cuda.cpp index 88ef34dbfe..f498169c3e 100644 --- a/src/USER-CUDA/fix_nve_cuda.cpp +++ b/src/USER-CUDA/fix_nve_cuda.cpp @@ -56,10 +56,10 @@ FixNVECuda::FixNVECuda(LAMMPS *lmp, int narg, char **arg) : cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); if (strcmp(style,"nve/sphere") != 0 && narg < 3) - error->all("Illegal fix nve command"); + error->all(FLERR,"Illegal fix nve command"); time_integrate = 1; } diff --git a/src/USER-CUDA/fix_nvt_cuda.cpp b/src/USER-CUDA/fix_nvt_cuda.cpp index 49a3c63013..3d66a67e4b 100644 --- a/src/USER-CUDA/fix_nvt_cuda.cpp +++ b/src/USER-CUDA/fix_nvt_cuda.cpp @@ -25,9 +25,9 @@ FixNVTCuda::FixNVTCuda(LAMMPS *lmp, int narg, char **arg) : FixNHCuda(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix nvt"); + error->all(FLERR,"Temperature control must be used with fix nvt"); if (pstat_flag) - error->all("Pressure control can not be used with fix nvt"); + error->all(FLERR,"Pressure control can not be used with fix nvt"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/USER-CUDA/fix_set_force_cuda.cpp b/src/USER-CUDA/fix_set_force_cuda.cpp index bd9665c8cc..e54f64d22d 100644 --- a/src/USER-CUDA/fix_set_force_cuda.cpp +++ b/src/USER-CUDA/fix_set_force_cuda.cpp @@ -42,9 +42,9 @@ FixSetForceCuda::FixSetForceCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg != 6) error->all("Illegal fix setforce/cuda command"); + if (narg != 6) error->all(FLERR,"Illegal fix setforce/cuda command"); vector_flag = 1; size_vector = 3; diff --git a/src/USER-CUDA/fix_shake_cuda.cpp b/src/USER-CUDA/fix_shake_cuda.cpp index 20883889cf..cbcb9acaef 100644 --- a/src/USER-CUDA/fix_shake_cuda.cpp +++ b/src/USER-CUDA/fix_shake_cuda.cpp @@ -34,13 +34,13 @@ #include "error.h" #include "cuda.h" #include "cuda_modify_flags.h" +#include "math_const.h" using namespace LAMMPS_NS; +using namespace MathConst; #define BIG 1.0e20 #define MASSDELTA 0.1 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) /* ---------------------------------------------------------------------- */ @@ -49,13 +49,12 @@ FixShakeCuda::FixShakeCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); cuda->accelerator(0,NULL); MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); neighbor_step=true; - PI = 4.0*atan(1.0); virial_flag = 1; create_attribute = 1; @@ -63,7 +62,7 @@ FixShakeCuda::FixShakeCuda(LAMMPS *lmp, int narg, char **arg) : // error check if (atom->molecular == 0) - error->all("Cannot use fix shake with non-molecular system"); + error->all(FLERR,"Cannot use fix shake with non-molecular system"); // perform initial allocation of atom-based arrays // register with Atom class @@ -88,7 +87,7 @@ FixShakeCuda::FixShakeCuda(LAMMPS *lmp, int narg, char **arg) : // parse SHAKE args - if (narg < 8) error->all("Illegal fix shake command"); + if (narg < 8) error->all(FLERR,"Illegal fix shake command"); tolerance = atof(arg[3]); max_iter = atoi(arg[4]); @@ -123,28 +122,28 @@ FixShakeCuda::FixShakeCuda(LAMMPS *lmp, int narg, char **arg) : } else if (mode == 'b') { int i = atoi(arg[next]); if (i < 1 || i > atom->nbondtypes) - error->all("Invalid bond type index for fix shake"); + error->all(FLERR,"Invalid bond type index for fix shake"); bond_flag[i] = 1; } else if (mode == 'a') { int i = atoi(arg[next]); if (i < 1 || i > atom->nangletypes) - error->all("Invalid angle type index for fix shake"); + error->all(FLERR,"Invalid angle type index for fix shake"); angle_flag[i] = 1; } else if (mode == 't') { int i = atoi(arg[next]); if (i < 1 || i > atom->ntypes) - error->all("Invalid atom type index for fix shake"); + error->all(FLERR,"Invalid atom type index for fix shake"); type_flag[i] = 1; } else if (mode == 'm') { double massone = atof(arg[next]); - if (massone == 0.0) error->all("Invalid atom mass for fix shake"); - if (nmass == atom->ntypes) error->all("Too many masses for fix shake"); + if (massone == 0.0) error->all(FLERR,"Invalid atom mass for fix shake"); + if (nmass == atom->ntypes) error->all(FLERR,"Too many masses for fix shake"); mass_list[nmass++] = massone; - } else error->all("Illegal fix shake command"); + } else error->all(FLERR,"Illegal fix shake command"); next++; } @@ -312,13 +311,13 @@ void FixShakeCuda::init() int count = 0; for (i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"shake") == 0) count++; - if (count > 1) error->all("More than one fix shake"); + if (count > 1) error->all(FLERR,"More than one fix shake"); // cannot use with minimization since SHAKE turns off bonds // that should contribute to potential energy if (update->whichflag == 2) - error->all("Fix shake cannot be used with minimization"); + error->all(FLERR,"Fix shake cannot be used with minimization"); // error if npt,nph fix comes before shake fix @@ -329,7 +328,7 @@ void FixShakeCuda::init() if (i < modify->nfix) { for (int j = i; j < modify->nfix; j++) if (strcmp(modify->fix[j]->style,"shake") == 0) - error->all("Shake fix must come before NPT/NPH fix"); + error->all(FLERR,"Shake fix must come before NPT/NPH fix"); } // if rRESPA, find associated fix that must exist @@ -347,7 +346,7 @@ void FixShakeCuda::init() // set equilibrium bond distances if (force->bond == NULL) - error->all("Bond potential must be defined for SHAKE"); + error->all(FLERR,"Bond potential must be defined for SHAKE"); for (i = 1; i <= atom->nbondtypes; i++) bond_distance[i] = force->bond->equilibrium_distance(i); @@ -358,7 +357,7 @@ void FixShakeCuda::init() for (i = 1; i <= atom->nangletypes; i++) { if (angle_flag[i] == 0) continue; if (force->angle == NULL) - error->all("Angle potential must be defined for SHAKE"); + error->all(FLERR,"Angle potential must be defined for SHAKE"); // scan all atoms for a SHAKE angle cluster // extract bond types for the 2 bonds in the cluster @@ -385,7 +384,7 @@ void FixShakeCuda::init() // error check for any bond types that are not the same MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_MAX,world); - if (flag_all) error->all("Shake angles have different bond types"); + if (flag_all) error->all(FLERR,"Shake angles have different bond types"); // insure all procs have bond types @@ -500,7 +499,7 @@ void FixShakeCuda::pre_neighbor() sprintf(str, "Shake atoms %d %d missing on proc %d at step " BIGINT_FORMAT, shake_atom[i][0],shake_atom[i][1],me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (i <= atom1 && i <= atom2) list[nlist++] = i; } else if (shake_flag[i] % 2 == 1) { @@ -514,7 +513,7 @@ void FixShakeCuda::pre_neighbor() BIGINT_FORMAT, shake_atom[i][0],shake_atom[i][1],shake_atom[i][2], me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (i <= atom1 && i <= atom2 && i <= atom3) list[nlist++] = i; } else { @@ -530,7 +529,7 @@ void FixShakeCuda::pre_neighbor() shake_atom[i][0],shake_atom[i][1], shake_atom[i][2],shake_atom[i][3], me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (i <= atom1 && i <= atom2 && i <= atom3 && i <= atom4) list[nlist++] = i; @@ -906,7 +905,7 @@ void FixShakeCuda::find_clusters() } MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); - if (flag_all) error->all("Did not find fix shake partner info"); + if (flag_all) error->all(FLERR,"Did not find fix shake partner info"); // ----------------------------------------------------- // identify SHAKEable bonds @@ -1040,7 +1039,7 @@ void FixShakeCuda::find_clusters() flag = 0; for (i = 0; i < nlocal; i++) if (nshake[i] > 3) flag = 1; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); - if (flag_all) error->all("Shake cluster of more than 4 atoms"); + if (flag_all) error->all(FLERR,"Shake cluster of more than 4 atoms"); flag = 0; for (i = 0; i < nlocal; i++) { @@ -1049,7 +1048,7 @@ void FixShakeCuda::find_clusters() if (partner_shake[i][j] && partner_nshake[i][j] > 1) flag = 1; } MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); - if (flag_all) error->all("Shake clusters are connected"); + if (flag_all) error->all(FLERR,"Shake clusters are connected"); // ----------------------------------------------------- // set SHAKE arrays that are stored with atoms & add angle constraints @@ -1418,7 +1417,7 @@ void FixShakeCuda::shake2(int m) double determ = b*b - 4.0*a*c; if (determ < 0.0) { - error->warning("Shake determinant < 0.0"); + error->warning(FLERR,"Shake determinant < 0.0"); determ = 0.0; } @@ -1537,7 +1536,7 @@ void FixShakeCuda::shake3(int m) // inverse of matrix double determ = a11*a22 - a12*a21; - if (determ == 0.0) error->one("Shake determinant = 0.0"); + if (determ == 0.0) error->one(FLERR,"Shake determinant = 0.0"); double determinv = 1.0/determ; double a11inv = a22*determinv; @@ -1731,7 +1730,7 @@ void FixShakeCuda::shake4(int m) double determ = a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - a11*a23*a32 - a12*a21*a33 - a13*a22*a31; - if (determ == 0.0) error->one("Shake determinant = 0.0"); + if (determ == 0.0) error->one(FLERR,"Shake determinant = 0.0"); double determinv = 1.0/determ; double a11inv = determinv * (a22*a33 - a23*a32); @@ -1972,7 +1971,7 @@ void FixShakeCuda::shake3angle(int m) double determ = a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - a11*a23*a32 - a12*a21*a33 - a13*a22*a31; - if (determ == 0.0) error->one("Shake determinant = 0.0"); + if (determ == 0.0) error->one(FLERR,"Shake determinant = 0.0"); double determinv = 1.0/determ; double a11inv = determinv * (a22*a33 - a23*a32); @@ -2185,7 +2184,7 @@ void FixShakeCuda::stats() r3 = sqrt(delx*delx + dely*dely + delz*delz); angle = acos((r1*r1 + r2*r2 - r3*r3) / (2.0*r1*r2)); - angle *= 180.0/PI; + angle *= 180.0/MY_PI; m = shake_type[i][2]; a_count[m]++; a_ave[m] += angle; diff --git a/src/USER-CUDA/fix_shake_cuda.h b/src/USER-CUDA/fix_shake_cuda.h index 18ea64f983..b0ebe584d7 100644 --- a/src/USER-CUDA/fix_shake_cuda.h +++ b/src/USER-CUDA/fix_shake_cuda.h @@ -53,7 +53,6 @@ class FixShakeCuda : public Fix { private: class Cuda *cuda; int me,nprocs; - double PI; double tolerance; // SHAKE tolerance int max_iter; // max # of SHAKE iterations int output_every; // SHAKE stat output every so often diff --git a/src/USER-CUDA/fix_temp_berendsen_cuda.cpp b/src/USER-CUDA/fix_temp_berendsen_cuda.cpp index 5fe9b0544a..697ddbefd1 100644 --- a/src/USER-CUDA/fix_temp_berendsen_cuda.cpp +++ b/src/USER-CUDA/fix_temp_berendsen_cuda.cpp @@ -61,9 +61,9 @@ FixTempBerendsenCuda::FixTempBerendsenCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg != 6) error->all("Illegal fix temp/berendsen/cuda command"); + if (narg != 6) error->all(FLERR,"Illegal fix temp/berendsen/cuda command"); // Berendsen thermostat should be applied every step @@ -75,7 +75,7 @@ FixTempBerendsenCuda::FixTempBerendsenCuda(LAMMPS *lmp, int narg, char **arg) : // error checks - if (t_period <= 0.0) error->all("Fix temp/berendsen/cuda period must be > 0.0"); + if (t_period <= 0.0) error->all(FLERR,"Fix temp/berendsen/cuda period must be > 0.0"); // create a new compute temp style // id = fix-ID + temp, compute group = fix group @@ -119,10 +119,10 @@ void FixTempBerendsenCuda::init() { int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix temp/berendsen/cuda does not exist"); + error->all(FLERR,"Temperature ID for fix temp/berendsen/cuda does not exist"); temperature = modify->compute[icompute]; if(not temperature->cudable) - error->warning("Fix temp/berendsen/cuda uses non cudable temperature compute"); + error->warning(FLERR,"Fix temp/berendsen/cuda uses non cudable temperature compute"); if (temperature->tempbias) which = BIAS; else which = NOBIAS; @@ -137,7 +137,7 @@ void FixTempBerendsenCuda::end_of_step() if(not temperature->cudable) {cuda->cu_x->download();cuda->cu_v->download();} t_current = temperature->compute_scalar(); if (t_current == 0.0) - error->all("Computed temperature for fix temp/berendsen/cuda cannot be 0.0"); + error->all(FLERR,"Computed temperature for fix temp/berendsen/cuda cannot be 0.0"); double delta = update->ntimestep - update->beginstep; delta /= update->endstep - update->beginstep; @@ -185,7 +185,7 @@ void FixTempBerendsenCuda::end_of_step() int FixTempBerendsenCuda::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -196,13 +196,13 @@ int FixTempBerendsenCuda::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != igroup && comm->me == 0) - error->warning("Group for fix_modify temp != fix group"); + error->warning(FLERR,"Group for fix_modify temp != fix group"); return 2; } return 0; diff --git a/src/USER-CUDA/fix_temp_rescale_cuda.cpp b/src/USER-CUDA/fix_temp_rescale_cuda.cpp index a633bdc861..df23ef36a4 100644 --- a/src/USER-CUDA/fix_temp_rescale_cuda.cpp +++ b/src/USER-CUDA/fix_temp_rescale_cuda.cpp @@ -50,12 +50,12 @@ FixTempRescaleCuda::FixTempRescaleCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg < 8) error->all("Illegal fix temp/rescale/cuda command"); + if (narg < 8) error->all(FLERR,"Illegal fix temp/rescale/cuda command"); nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix temp/rescale/cuda command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix temp/rescale/cuda command"); scalar_flag = 1; global_freq = nevery; @@ -111,10 +111,10 @@ void FixTempRescaleCuda::init() { int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix temp/rescale/cuda does not exist"); + error->all(FLERR,"Temperature ID for fix temp/rescale/cuda does not exist"); temperature = modify->compute[icompute]; if(not temperature->cudable) - error->warning("Fix temp/rescale/cuda uses non cudable temperature compute"); + error->warning(FLERR,"Fix temp/rescale/cuda uses non cudable temperature compute"); if (temperature->tempbias) which = BIAS; else which = NOBIAS; } @@ -127,7 +127,7 @@ void FixTempRescaleCuda::end_of_step() if(not temperature->cudable) {cuda->cu_x->download();cuda->cu_v->download();} t_current = temperature->compute_scalar(); if (t_current == 0.0) - error->all("Computed temperature for fix temp/rescale/cuda cannot be 0.0"); + error->all(FLERR,"Computed temperature for fix temp/rescale/cuda cannot be 0.0"); double delta = update->ntimestep - update->beginstep; delta /= update->endstep - update->beginstep; @@ -181,7 +181,7 @@ void FixTempRescaleCuda::end_of_step() int FixTempRescaleCuda::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -192,15 +192,15 @@ int FixTempRescaleCuda::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != igroup && comm->me == 0) - error->warning("Group for fix_modify temp != fix group"); + error->warning(FLERR,"Group for fix_modify temp != fix group"); if(not temperature->cudable) - error->warning("Fix temp/rescale/cuda uses non cudable temperature compute"); + error->warning(FLERR,"Fix temp/rescale/cuda uses non cudable temperature compute"); return 2; } return 0; diff --git a/src/USER-CUDA/fix_temp_rescale_limit_cuda.cpp b/src/USER-CUDA/fix_temp_rescale_limit_cuda.cpp index be2d6a1f29..875cb391a5 100644 --- a/src/USER-CUDA/fix_temp_rescale_limit_cuda.cpp +++ b/src/USER-CUDA/fix_temp_rescale_limit_cuda.cpp @@ -40,8 +40,6 @@ #include "cuda_modify_flags.h" using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) enum{NOBIAS,BIAS}; @@ -52,12 +50,12 @@ FixTempRescaleLimitCuda::FixTempRescaleLimitCuda(LAMMPS *lmp, int narg, char **a { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if (narg < 9) error->all("Illegal fix temp/rescale/limit/cuda command"); + if (narg < 9) error->all(FLERR,"Illegal fix temp/rescale/limit/cuda command"); nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix temp/rescale/limit/cuda command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix temp/rescale/limit/cuda command"); scalar_flag = 1; global_freq = nevery; @@ -68,7 +66,7 @@ FixTempRescaleLimitCuda::FixTempRescaleLimitCuda(LAMMPS *lmp, int narg, char **a t_window = atof(arg[6]); fraction = atof(arg[7]); limit = atof(arg[8]); - if (limit <= 1.0) error->all("Illegal fix temp/rescale/limit/cuda command (limit must be > 1.0)"); + if (limit <= 1.0) error->all(FLERR,"Illegal fix temp/rescale/limit/cuda command (limit must be > 1.0)"); // create a new compute temp @@ -116,10 +114,10 @@ void FixTempRescaleLimitCuda::init() { int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix temp/rescale/limit/cuda does not exist"); + error->all(FLERR,"Temperature ID for fix temp/rescale/limit/cuda does not exist"); temperature = modify->compute[icompute]; if(not temperature->cudable) - error->warning("Fix temp/rescale/limit/cuda uses non cudable temperature compute"); + error->warning(FLERR,"Fix temp/rescale/limit/cuda uses non cudable temperature compute"); if (temperature->tempbias) which = BIAS; else which = NOBIAS; } @@ -132,7 +130,7 @@ void FixTempRescaleLimitCuda::end_of_step() if(not temperature->cudable) {cuda->cu_x->download();cuda->cu_v->download();} t_current = temperature->compute_scalar(); if (t_current == 0.0) - error->all("Computed temperature for fix temp/rescale/limit/cuda cannot be 0.0"); + error->all(FLERR,"Computed temperature for fix temp/rescale/limit/cuda cannot be 0.0"); double delta = update->ntimestep - update->beginstep; delta /= update->endstep - update->beginstep; @@ -196,7 +194,7 @@ void FixTempRescaleLimitCuda::end_of_step() int FixTempRescaleLimitCuda::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -207,15 +205,15 @@ int FixTempRescaleLimitCuda::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != igroup && comm->me == 0) - error->warning("Group for fix_modify temp != fix group"); + error->warning(FLERR,"Group for fix_modify temp != fix group"); if(not temperature->cudable) - error->warning("Fix temp/rescale/limit/cuda uses non cudable temperature compute"); + error->warning(FLERR,"Fix temp/rescale/limit/cuda uses non cudable temperature compute"); return 2; } return 0; diff --git a/src/USER-CUDA/fix_viscous_cuda.cpp b/src/USER-CUDA/fix_viscous_cuda.cpp index 37509dcb35..e0f32e7b69 100644 --- a/src/USER-CUDA/fix_viscous_cuda.cpp +++ b/src/USER-CUDA/fix_viscous_cuda.cpp @@ -42,7 +42,7 @@ FixViscousCuda::FixViscousCuda(LAMMPS *lmp, int narg, char **arg) : { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); cu_gamma=NULL; } diff --git a/src/USER-CUDA/modify_cuda.cpp b/src/USER-CUDA/modify_cuda.cpp index 6eb832803d..9fd0435892 100644 --- a/src/USER-CUDA/modify_cuda.cpp +++ b/src/USER-CUDA/modify_cuda.cpp @@ -53,9 +53,6 @@ using namespace LAMMPS_NS; #include "cuda_modify_flags.h" -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define BIG 1.0e20 /* ---------------------------------------------------------------------- */ @@ -64,7 +61,7 @@ ModifyCuda::ModifyCuda(LAMMPS *lmp) : Modify(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); n_initial_integrate_cuda = 0; n_post_integrate_cuda = 0; @@ -242,7 +239,7 @@ void ModifyCuda::init() int checkall; MPI_Allreduce(&check,&checkall,1,MPI_INT,MPI_SUM,world); if (comm->me == 0 && checkall) - error->warning("One or more atoms are time integrated more than once"); + error->warning(FLERR,"One or more atoms are time integrated more than once"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-CUDA/neigh_full_cuda.cpp b/src/USER-CUDA/neigh_full_cuda.cpp index 197b62a0ac..14fe153ec9 100644 --- a/src/USER-CUDA/neigh_full_cuda.cpp +++ b/src/USER-CUDA/neigh_full_cuda.cpp @@ -40,7 +40,7 @@ using namespace LAMMPS_NS; void NeighborCuda::full_bin_cuda(NeighList *list) { MYDBG(printf(" # CUDA::NeighFullBinCuda ... start\n");) - if(includegroup) error->warning("Warning using inlcudegroup neighborbuild. This is not yet supported by CUDA neighborbuild styles.\n"); + if(includegroup) error->warning(FLERR,"Warning using inlcudegroup neighborbuild. This is not yet supported by CUDA neighborbuild styles.\n"); int nlocal = atom->nlocal; int nall = nlocal + atom->nghost; @@ -93,7 +93,7 @@ void NeighborCuda::full_bin_cuda(NeighList *list) slist->binned_id=(int*) CudaWrapper_AllocCudaData(slist->bin_dim[0]*slist->bin_dim[1]*slist->bin_dim[2]*slist->bin_nmax*sizeof(int)); //printf("slist->bin: %i %i %i %i \n", bin_dim_tmp[0],bin_dim_tmp[1],bin_dim_tmp[2],bin_nmax_tmp); } - //if(list->cuda_list->sneighlist.bin_nmax>512) error->all("To many atoms per bin. Likely cause is very long pair cutoff. This needs major rewrite of code and is not yet scheduled to be done.\n"); + //if(list->cuda_list->sneighlist.bin_nmax>512) error->all(FLERR,"To many atoms per bin. Likely cause is very long pair cutoff. This needs major rewrite of code and is not yet scheduled to be done.\n"); }while(Cuda_BinAtoms(&cuda->shared_data, &list->cuda_list->sneighlist)); // cuda->cu_debugdata->memset_device(0); @@ -250,6 +250,7 @@ void NeighborCuda::full_bin_cuda(NeighList *list) }*/ list->cuda_list->cu_numneigh->download(); list->cuda_list->cu_ilist->download(); + cuda->shared_data.atom.update_neigh=2; //printf("Done\n"); MYDBG(printf(" # CUDA::NeighFullBinCuda ... end\n");) diff --git a/src/USER-CUDA/neighbor_cuda.cpp b/src/USER-CUDA/neighbor_cuda.cpp index e8f317afd3..dc5af9f2f8 100644 --- a/src/USER-CUDA/neighbor_cuda.cpp +++ b/src/USER-CUDA/neighbor_cuda.cpp @@ -26,8 +26,8 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) + + enum{NSQ,BIN,MULTI}; // also in neigh_list.cpp @@ -37,7 +37,7 @@ NeighborCuda::NeighborCuda(LAMMPS *lmp) : Neighbor(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); } /* ---------------------------------------------------------------------- */ @@ -59,9 +59,9 @@ void NeighborCuda::choose_build(int index, NeighRequest *rq) { Neighbor::choose_build(index,rq); - if (rq->full && style == NSQ && rq->ghost == 0 && rq->cudable) + if (rq->full && style == NSQ && rq->cudable) pair_build[index] = (Neighbor::PairPtr) &NeighborCuda::full_nsq_cuda; - else if (rq->full && style == BIN && rq->ghost == 0 && rq->cudable) + else if (rq->full && style == BIN && rq->cudable) pair_build[index] = (Neighbor::PairPtr) &NeighborCuda::full_bin_cuda; } @@ -206,7 +206,7 @@ void NeighborCuda::build() // check that neighbor list with special bond flags will not overflow if (atom->nlocal+atom->nghost > NEIGHMASK) - error->one("Too many local+ghost atoms for neighbor list"); + error->one(FLERR,"Too many local+ghost atoms for neighbor list"); // invoke building of pair and molecular neighbor lists // only for pairwise lists with buildflag set diff --git a/src/USER-CUDA/pair_born_coul_long_cuda.cpp b/src/USER-CUDA/pair_born_coul_long_cuda.cpp index 1d8c656316..f5aaff51f0 100644 --- a/src/USER-CUDA/pair_born_coul_long_cuda.cpp +++ b/src/USER-CUDA/pair_born_coul_long_cuda.cpp @@ -46,9 +46,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -62,7 +59,7 @@ PairBornCoulLongCuda::PairBornCoulLongCuda(LAMMPS *lmp) : PairBornCoulLong(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -134,12 +131,12 @@ void PairBornCoulLongCuda::coeff(int narg, char **arg) void PairBornCoulLongCuda::init_style() { if (!atom->q_flag) - error->all("Pair style born/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style born/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; - if (strstr(update->integrate_style,"respa")) error->all("Integrate Style Respa is not supported by pair style buck/coul/long/cuda"); + if (strstr(update->integrate_style,"respa")) error->all(FLERR,"Integrate Style Respa is not supported by pair style buck/coul/long/cuda"); irequest = neighbor->request(this); neighbor->requests[irequest]->full = 1; @@ -151,13 +148,13 @@ void PairBornCoulLongCuda::init_style() cuda->shared_data.pair.cut_coulsq_global=cut_coulsq; if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; cuda->shared_data.pair.g_ewald=g_ewald; cuda->shared_data.pppm.qqrd2e=force->qqrd2e; - if(ncoultablebits) error->warning("# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); + if(ncoultablebits) error->warning(FLERR,"# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); } void PairBornCoulLongCuda::init_list(int id, NeighList *ptr) diff --git a/src/USER-CUDA/pair_buck_coul_cut_cuda.cpp b/src/USER-CUDA/pair_buck_coul_cut_cuda.cpp index 4416a3d197..bc08546184 100644 --- a/src/USER-CUDA/pair_buck_coul_cut_cuda.cpp +++ b/src/USER-CUDA/pair_buck_coul_cut_cuda.cpp @@ -46,16 +46,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairBuckCoulCutCuda::PairBuckCoulCutCuda(LAMMPS *lmp) : PairBuckCoulCut(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -127,12 +124,12 @@ void PairBuckCoulCutCuda::coeff(int narg, char **arg) void PairBuckCoulCutCuda::init_style() { if (!atom->q_flag) - error->all("Pair style buck/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style buck/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; - if (strstr(update->integrate_style,"respa")) error->all("Integrate Style Respa is not supported by pair style buck/coul/long/cuda"); + if (strstr(update->integrate_style,"respa")) error->all(FLERR,"Integrate Style Respa is not supported by pair style buck/coul/long/cuda"); irequest = neighbor->request(this); neighbor->requests[irequest]->full = 1; @@ -144,7 +141,7 @@ void PairBuckCoulCutCuda::init_style() cuda->shared_data.pair.cut_coulsq_global=cut_coul_global * cut_coul_global; - if(ncoultablebits) error->warning("# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); + if(ncoultablebits) error->warning(FLERR,"# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); } void PairBuckCoulCutCuda::init_list(int id, NeighList *ptr) diff --git a/src/USER-CUDA/pair_buck_coul_long_cuda.cpp b/src/USER-CUDA/pair_buck_coul_long_cuda.cpp index 9044d2128c..4cbd304e07 100644 --- a/src/USER-CUDA/pair_buck_coul_long_cuda.cpp +++ b/src/USER-CUDA/pair_buck_coul_long_cuda.cpp @@ -46,9 +46,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -62,7 +59,7 @@ PairBuckCoulLongCuda::PairBuckCoulLongCuda(LAMMPS *lmp) : PairBuckCoulLong(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -132,12 +129,12 @@ void PairBuckCoulLongCuda::coeff(int narg, char **arg) void PairBuckCoulLongCuda::init_style() { if (!atom->q_flag) - error->all("Pair style buck/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style buck/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; - if (strstr(update->integrate_style,"respa")) error->all("Integrate Style Respa is not supported by pair style buck/coul/long/cuda"); + if (strstr(update->integrate_style,"respa")) error->all(FLERR,"Integrate Style Respa is not supported by pair style buck/coul/long/cuda"); irequest = neighbor->request(this); neighbor->requests[irequest]->full = 1; @@ -149,13 +146,13 @@ void PairBuckCoulLongCuda::init_style() cuda->shared_data.pair.cut_coulsq_global=cut_coulsq; if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; cuda->shared_data.pair.g_ewald=g_ewald; cuda->shared_data.pppm.qqrd2e=force->qqrd2e; - if(ncoultablebits) error->warning("# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); + if(ncoultablebits) error->warning(FLERR,"# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); } void PairBuckCoulLongCuda::init_list(int id, NeighList *ptr) diff --git a/src/USER-CUDA/pair_buck_cuda.cpp b/src/USER-CUDA/pair_buck_cuda.cpp index e906783390..a537e600ed 100644 --- a/src/USER-CUDA/pair_buck_cuda.cpp +++ b/src/USER-CUDA/pair_buck_cuda.cpp @@ -46,16 +46,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairBuckCuda::PairBuckCuda(LAMMPS *lmp) : PairBuck(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -124,12 +121,12 @@ void PairBuckCuda::coeff(int narg, char **arg) void PairBuckCuda::init_style() { if (!atom->q_flag) - error->all("Pair style buck/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style buck/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; - if (strstr(update->integrate_style,"respa")) error->all("Integrate Style Respa is not supported by pair style buck/coul/long/cuda"); + if (strstr(update->integrate_style,"respa")) error->all(FLERR,"Integrate Style Respa is not supported by pair style buck/coul/long/cuda"); irequest = neighbor->request(this); neighbor->requests[irequest]->full = 1; @@ -140,7 +137,7 @@ void PairBuckCuda::init_style() cuda->shared_data.pppm.qqrd2e=force->qqrd2e; - if(ncoultablebits) error->warning("# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); + if(ncoultablebits) error->warning(FLERR,"# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); } void PairBuckCuda::init_list(int id, NeighList *ptr) diff --git a/src/USER-CUDA/pair_cg_cmm_coul_cut_cuda.cpp b/src/USER-CUDA/pair_cg_cmm_coul_cut_cuda.cpp index 1c82a8d797..5334e91f97 100644 --- a/src/USER-CUDA/pair_cg_cmm_coul_cut_cuda.cpp +++ b/src/USER-CUDA/pair_cg_cmm_coul_cut_cuda.cpp @@ -61,16 +61,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairCGCMMCoulCutCuda::PairCGCMMCoulCutCuda(LAMMPS *lmp) : PairCGCMMCoulCut(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cg_type_double = NULL; @@ -171,7 +168,7 @@ void PairCGCMMCoulCutCuda::init_style() cuda->shared_data.pppm.qqrd2e=force->qqrd2e; cut_respa=NULL; - if (force->newton) error->warning("Pair style uses does not use \"newton\" setting. You might test if \"newton off\" makes the simulation run faster."); + if (force->newton) error->warning(FLERR,"Pair style uses does not use \"newton\" setting. You might test if \"newton off\" makes the simulation run faster."); MYDBG(printf("# CUDA PairCGCMMCoulCutCuda::init_style end\n"); ) } diff --git a/src/USER-CUDA/pair_cg_cmm_coul_debye_cuda.cpp b/src/USER-CUDA/pair_cg_cmm_coul_debye_cuda.cpp index 280ec2638a..862d8e56b3 100644 --- a/src/USER-CUDA/pair_cg_cmm_coul_debye_cuda.cpp +++ b/src/USER-CUDA/pair_cg_cmm_coul_debye_cuda.cpp @@ -61,16 +61,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairCGCMMCoulDebyeCuda::PairCGCMMCoulDebyeCuda(LAMMPS *lmp) : PairCGCMMCoulCut(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cg_type_double = NULL; @@ -171,7 +168,7 @@ void PairCGCMMCoulDebyeCuda::init_style() cuda->shared_data.pppm.qqrd2e=force->qqrd2e; cut_respa=NULL; - if (force->newton) error->warning("Pair style uses does not use \"newton\" setting. You might test if \"newton off\" makes the simulation run faster."); + if (force->newton) error->warning(FLERR,"Pair style uses does not use \"newton\" setting. You might test if \"newton off\" makes the simulation run faster."); MYDBG(printf("# CUDA PairCGCMMCoulDebyeCuda::init_style end\n"); ) } diff --git a/src/USER-CUDA/pair_cg_cmm_coul_long_cuda.cpp b/src/USER-CUDA/pair_cg_cmm_coul_long_cuda.cpp index 3597691690..c2d4ede4b4 100644 --- a/src/USER-CUDA/pair_cg_cmm_coul_long_cuda.cpp +++ b/src/USER-CUDA/pair_cg_cmm_coul_long_cuda.cpp @@ -62,16 +62,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairCGCMMCoulLongCuda::PairCGCMMCoulLongCuda(LAMMPS *lmp) : PairCGCMMCoulLong(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cg_type_double = NULL; @@ -174,7 +171,7 @@ void PairCGCMMCoulLongCuda::init_style() cuda->shared_data.pair.g_ewald=g_ewald; cuda->shared_data.pppm.qqrd2e=force->qqrd2e; cut_respa=NULL; - if (force->newton) error->warning("Pair style uses does not use \"newton\" setting. You might test if \"newton off\" makes the simulation run faster."); + if (force->newton) error->warning(FLERR,"Pair style uses does not use \"newton\" setting. You might test if \"newton off\" makes the simulation run faster."); MYDBG(printf("# CUDA PairCGCMMCoulLongCuda::init_style end\n"); ) } diff --git a/src/USER-CUDA/pair_cg_cmm_cuda.cpp b/src/USER-CUDA/pair_cg_cmm_cuda.cpp index 5471d95f23..cc3e5e585b 100644 --- a/src/USER-CUDA/pair_cg_cmm_cuda.cpp +++ b/src/USER-CUDA/pair_cg_cmm_cuda.cpp @@ -61,16 +61,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairCGCMMCuda::PairCGCMMCuda(LAMMPS *lmp) : PairCGCMM(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cg_type_double = NULL; diff --git a/src/USER-CUDA/pair_eam_alloy_cuda.cpp b/src/USER-CUDA/pair_eam_alloy_cuda.cpp index eb70fcc127..fd78c57133 100644 --- a/src/USER-CUDA/pair_eam_alloy_cuda.cpp +++ b/src/USER-CUDA/pair_eam_alloy_cuda.cpp @@ -34,7 +34,7 @@ PairEAMAlloyCuda::PairEAMAlloyCuda(LAMMPS *lmp) : PairEAMCuda(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); one_coeff = 1; } @@ -51,12 +51,12 @@ void PairEAMAlloyCuda::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read EAM setfl file @@ -83,7 +83,7 @@ void PairEAMAlloyCuda::coeff(int narg, char **arg) for (j = 0; j < setfl->nelements; j++) if (strcmp(arg[i],setfl->elements[j]) == 0) break; if (j < setfl->nelements) map[i-2] = j; - else error->all("No matching element in EAM potential file"); + else error->all(FLERR,"No matching element in EAM potential file"); } // clear setflag since coeff() called once with I,J = * * @@ -107,7 +107,7 @@ void PairEAMAlloyCuda::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -129,7 +129,7 @@ void PairEAMAlloyCuda::read_file(char *filename) if (fptr == NULL) { char str[128]; sprintf(str,"Cannot open EAM potential file %s",filename); - error->one(str); + error->one(FLERR,str); } } @@ -150,7 +150,7 @@ void PairEAMAlloyCuda::read_file(char *filename) sscanf(line,"%d",&file->nelements); int nwords = atom->count_words(line); if (nwords != file->nelements + 1) - error->all("Incorrect element names in EAM potential file"); + error->all(FLERR,"Incorrect element names in EAM potential file"); char **words = new char*[file->nelements+1]; nwords = 0; diff --git a/src/USER-CUDA/pair_eam_cuda.cpp b/src/USER-CUDA/pair_eam_cuda.cpp index 6d012a80a3..1c9c710a9f 100644 --- a/src/USER-CUDA/pair_eam_cuda.cpp +++ b/src/USER-CUDA/pair_eam_cuda.cpp @@ -62,16 +62,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairEAMCuda::PairEAMCuda(LAMMPS *lmp) : PairEAM(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; diff --git a/src/USER-CUDA/pair_eam_fs_cuda.cpp b/src/USER-CUDA/pair_eam_fs_cuda.cpp index c7dd6e4ee3..13efb5a4fe 100644 --- a/src/USER-CUDA/pair_eam_fs_cuda.cpp +++ b/src/USER-CUDA/pair_eam_fs_cuda.cpp @@ -34,7 +34,7 @@ PairEAMFSCuda::PairEAMFSCuda(LAMMPS *lmp) : PairEAMCuda(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); one_coeff = 1; } @@ -51,12 +51,12 @@ void PairEAMFSCuda::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read EAM Finnis-Sinclair file @@ -83,7 +83,7 @@ void PairEAMFSCuda::coeff(int narg, char **arg) for (j = 0; j < fs->nelements; j++) if (strcmp(arg[i],fs->elements[j]) == 0) break; if (j < fs->nelements) map[i-2] = j; - else error->all("No matching element in EAM potential file"); + else error->all(FLERR,"No matching element in EAM potential file"); } // clear setflag since coeff() called once with I,J = * * @@ -107,7 +107,7 @@ void PairEAMFSCuda::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -129,7 +129,7 @@ void PairEAMFSCuda::read_file(char *filename) if (fptr == NULL) { char str[128]; sprintf(str,"Cannot open EAM potential file %s",filename); - error->one(str); + error->one(FLERR,str); } } @@ -150,7 +150,7 @@ void PairEAMFSCuda::read_file(char *filename) sscanf(line,"%d",&file->nelements); int nwords = atom->count_words(line); if (nwords != file->nelements + 1) - error->all("Incorrect element names in EAM potential file"); + error->all(FLERR,"Incorrect element names in EAM potential file"); char **words = new char*[file->nelements+1]; nwords = 0; diff --git a/src/USER-CUDA/pair_gran_hooke_cuda.cpp b/src/USER-CUDA/pair_gran_hooke_cuda.cpp index 6d3dd73248..74a3dbca8d 100644 --- a/src/USER-CUDA/pair_gran_hooke_cuda.cpp +++ b/src/USER-CUDA/pair_gran_hooke_cuda.cpp @@ -63,16 +63,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairGranHookeCuda::PairGranHookeCuda(LAMMPS *lmp) : PairGranHooke(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -163,9 +160,9 @@ void PairGranHookeCuda::init_style() } if (!atom->radius_flag || !atom->omega_flag || !atom->torque_flag) - error->all("Pair granular requires atom attributes radius, omega, torque"); + error->all(FLERR,"Pair granular requires atom attributes radius, omega, torque"); if (comm->ghost_velocity == 0) - error->all("Pair granular requires ghost atoms store velocity"); + error->all(FLERR,"Pair granular requires ghost atoms store velocity"); // need a half neigh list and optionally a granular history neigh list diff --git a/src/USER-CUDA/pair_lj96_cut_cuda.cpp b/src/USER-CUDA/pair_lj96_cut_cuda.cpp index f60c61bf28..408665d85e 100644 --- a/src/USER-CUDA/pair_lj96_cut_cuda.cpp +++ b/src/USER-CUDA/pair_lj96_cut_cuda.cpp @@ -61,16 +61,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJ96CutCuda::PairLJ96CutCuda(LAMMPS *lmp) : PairLJ96Cut(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; diff --git a/src/USER-CUDA/pair_lj_charmm_coul_charmm_cuda.cpp b/src/USER-CUDA/pair_lj_charmm_coul_charmm_cuda.cpp index a5a08046a9..bcd3569094 100644 --- a/src/USER-CUDA/pair_lj_charmm_coul_charmm_cuda.cpp +++ b/src/USER-CUDA/pair_lj_charmm_coul_charmm_cuda.cpp @@ -46,16 +46,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJCharmmCoulCharmmCuda::PairLJCharmmCoulCharmmCuda(LAMMPS *lmp) : PairLJCharmmCoulCharmm(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -130,7 +127,7 @@ void PairLJCharmmCoulCharmmCuda::coeff(int narg, char **arg) void PairLJCharmmCoulCharmmCuda::init_style() { if (!atom->q_flag) - error->all("Pair style lj/charmm/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style lj/charmm/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists if(atom->molecular) @@ -146,7 +143,7 @@ void PairLJCharmmCoulCharmmCuda::init_style() neighbor->requests[irequest]->cudable = 1; if (cut_lj_inner >= cut_lj || cut_coul_inner >= cut_coul) - error->all("Pair inner cutoff >= Pair outer cutoff"); + error->all(FLERR,"Pair inner cutoff >= Pair outer cutoff"); cut_lj_innersq = cut_lj_inner * cut_lj_inner; cut_ljsq = cut_lj * cut_lj; diff --git a/src/USER-CUDA/pair_lj_charmm_coul_charmm_implicit_cuda.cpp b/src/USER-CUDA/pair_lj_charmm_coul_charmm_implicit_cuda.cpp index f127d9e31a..10696094c0 100644 --- a/src/USER-CUDA/pair_lj_charmm_coul_charmm_implicit_cuda.cpp +++ b/src/USER-CUDA/pair_lj_charmm_coul_charmm_implicit_cuda.cpp @@ -46,16 +46,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJCharmmCoulCharmmImplicitCuda::PairLJCharmmCoulCharmmImplicitCuda(LAMMPS *lmp) : PairLJCharmmCoulCharmmImplicit(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -130,7 +127,7 @@ void PairLJCharmmCoulCharmmImplicitCuda::coeff(int narg, char **arg) void PairLJCharmmCoulCharmmImplicitCuda::init_style() { if (!atom->q_flag) - error->all("Pair style lj/charmm/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style lj/charmm/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; @@ -141,7 +138,7 @@ void PairLJCharmmCoulCharmmImplicitCuda::init_style() neighbor->requests[irequest]->cudable = 1; if (cut_lj_inner >= cut_lj || cut_coul_inner >= cut_coul) - error->all("Pair inner cutoff >= Pair outer cutoff"); + error->all(FLERR,"Pair inner cutoff >= Pair outer cutoff"); cut_lj_innersq = cut_lj_inner * cut_lj_inner; cut_ljsq = cut_lj * cut_lj; diff --git a/src/USER-CUDA/pair_lj_charmm_coul_long_cuda.cpp b/src/USER-CUDA/pair_lj_charmm_coul_long_cuda.cpp index 434f098f37..29629f1ed5 100644 --- a/src/USER-CUDA/pair_lj_charmm_coul_long_cuda.cpp +++ b/src/USER-CUDA/pair_lj_charmm_coul_long_cuda.cpp @@ -46,9 +46,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -62,7 +59,7 @@ PairLJCharmmCoulLongCuda::PairLJCharmmCoulLongCuda(LAMMPS *lmp) : PairLJCharmmCo { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -139,7 +136,7 @@ void PairLJCharmmCoulLongCuda::coeff(int narg, char **arg) void PairLJCharmmCoulLongCuda::init_style() { if (!atom->q_flag) - error->all("Pair style lj/charmm/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style lj/charmm/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; @@ -151,7 +148,7 @@ void PairLJCharmmCoulLongCuda::init_style() neighbor->requests[irequest]->cudable = 1; if (cut_lj_inner >= cut_lj) - error->all("Pair inner cutoff >= Pair outer cutoff"); + error->all(FLERR,"Pair inner cutoff >= Pair outer cutoff"); cut_lj_innersq = cut_lj_inner * cut_lj_inner; cut_ljsq = cut_lj * cut_lj; @@ -165,13 +162,13 @@ void PairLJCharmmCoulLongCuda::init_style() cuda->shared_data.pair.cut_coulsq_global=cut_coulsq; if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; cuda->shared_data.pair.g_ewald=g_ewald; cuda->shared_data.pppm.qqrd2e=force->qqrd2e; - if(ncoultablebits) error->warning("# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); + if(ncoultablebits) error->warning(FLERR,"# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); } void PairLJCharmmCoulLongCuda::init_list(int id, NeighList *ptr) diff --git a/src/USER-CUDA/pair_lj_class2_coul_cut_cuda.cpp b/src/USER-CUDA/pair_lj_class2_coul_cut_cuda.cpp index a75a70ba01..702f2089c9 100644 --- a/src/USER-CUDA/pair_lj_class2_coul_cut_cuda.cpp +++ b/src/USER-CUDA/pair_lj_class2_coul_cut_cuda.cpp @@ -46,16 +46,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJClass2CoulCutCuda::PairLJClass2CoulCutCuda(LAMMPS *lmp) : PairLJClass2CoulCut(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -123,7 +120,7 @@ void PairLJClass2CoulCutCuda::coeff(int narg, char **arg) void PairLJClass2CoulCutCuda::init_style() { if (!atom->q_flag) - error->all("Pair style lj/cut/coul/cut/cuda requires atom attribute q"); + error->all(FLERR,"Pair style lj/cut/coul/cut/cuda requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; diff --git a/src/USER-CUDA/pair_lj_class2_coul_long_cuda.cpp b/src/USER-CUDA/pair_lj_class2_coul_long_cuda.cpp index 5c1d3a6fff..44f0fb3f2f 100644 --- a/src/USER-CUDA/pair_lj_class2_coul_long_cuda.cpp +++ b/src/USER-CUDA/pair_lj_class2_coul_long_cuda.cpp @@ -46,9 +46,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -62,7 +59,7 @@ PairLJClass2CoulLongCuda::PairLJClass2CoulLongCuda(LAMMPS *lmp) : PairLJClass2Co { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -128,7 +125,7 @@ void PairLJClass2CoulLongCuda::coeff(int narg, char **arg) void PairLJClass2CoulLongCuda::init_style() { if (!atom->q_flag) - error->all("Pair style lj/cut/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style lj/cut/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; @@ -144,15 +141,15 @@ void PairLJClass2CoulLongCuda::init_style() cuda->shared_data.pair.cut_coulsq_global=cut_coulsq; // set rRESPA cutoffs - if (force->newton) error->warning("Pair style uses does not use \"newton\" setting. You might test if \"newton off\" makes the simulation run faster."); + if (force->newton) error->warning(FLERR,"Pair style uses does not use \"newton\" setting. You might test if \"newton off\" makes the simulation run faster."); if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; cuda->shared_data.pair.g_ewald=g_ewald; cuda->shared_data.pppm.qqrd2e=force->qqrd2e; - if(ncoultablebits) error->warning("# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); + if(ncoultablebits) error->warning(FLERR,"# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); } void PairLJClass2CoulLongCuda::init_list(int id, NeighList *ptr) diff --git a/src/USER-CUDA/pair_lj_class2_cuda.cpp b/src/USER-CUDA/pair_lj_class2_cuda.cpp index 98d8d87468..a218dc9cc8 100644 --- a/src/USER-CUDA/pair_lj_class2_cuda.cpp +++ b/src/USER-CUDA/pair_lj_class2_cuda.cpp @@ -61,16 +61,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJClass2Cuda::PairLJClass2Cuda(LAMMPS *lmp) : PairLJClass2(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; diff --git a/src/USER-CUDA/pair_lj_cut_coul_cut_cuda.cpp b/src/USER-CUDA/pair_lj_cut_coul_cut_cuda.cpp index ce2c36bc27..ac80ff5214 100644 --- a/src/USER-CUDA/pair_lj_cut_coul_cut_cuda.cpp +++ b/src/USER-CUDA/pair_lj_cut_coul_cut_cuda.cpp @@ -46,16 +46,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJCutCoulCutCuda::PairLJCutCoulCutCuda(LAMMPS *lmp) : PairLJCutCoulCut(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -123,7 +120,7 @@ void PairLJCutCoulCutCuda::coeff(int narg, char **arg) void PairLJCutCoulCutCuda::init_style() { if (!atom->q_flag) - error->all("Pair style lj/cut/coul/cut/cuda requires atom attribute q"); + error->all(FLERR,"Pair style lj/cut/coul/cut/cuda requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; diff --git a/src/USER-CUDA/pair_lj_cut_coul_debye_cuda.cpp b/src/USER-CUDA/pair_lj_cut_coul_debye_cuda.cpp index a1e553d78d..bc9a6f33ba 100644 --- a/src/USER-CUDA/pair_lj_cut_coul_debye_cuda.cpp +++ b/src/USER-CUDA/pair_lj_cut_coul_debye_cuda.cpp @@ -46,16 +46,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJCutCoulDebyeCuda::PairLJCutCoulDebyeCuda(LAMMPS *lmp) : PairLJCutCoulDebye(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -124,7 +121,7 @@ void PairLJCutCoulDebyeCuda::coeff(int narg, char **arg) void PairLJCutCoulDebyeCuda::init_style() { if (!atom->q_flag) - error->all("Pair style lj/cut/coul/debye/cuda requires atom attribute q"); + error->all(FLERR,"Pair style lj/cut/coul/debye/cuda requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; diff --git a/src/USER-CUDA/pair_lj_cut_coul_long_cuda.cpp b/src/USER-CUDA/pair_lj_cut_coul_long_cuda.cpp index 80d0f7de3f..12ea4b6d1f 100644 --- a/src/USER-CUDA/pair_lj_cut_coul_long_cuda.cpp +++ b/src/USER-CUDA/pair_lj_cut_coul_long_cuda.cpp @@ -46,9 +46,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -62,7 +59,7 @@ PairLJCutCoulLongCuda::PairLJCutCoulLongCuda(LAMMPS *lmp) : PairLJCutCoulLong(lm { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -128,7 +125,7 @@ void PairLJCutCoulLongCuda::coeff(int narg, char **arg) void PairLJCutCoulLongCuda::init_style() { if (!atom->q_flag) - error->all("Pair style lj/cut/coul/long requires atom attribute q"); + error->all(FLERR,"Pair style lj/cut/coul/long requires atom attribute q"); // request regular or rRESPA neighbor lists int irequest; @@ -182,15 +179,15 @@ void PairLJCutCoulLongCuda::init_style() cut_respa = ((Respa *) update->integrate)->cutoff; else cut_respa = NULL; - if (force->newton) error->warning("Pair style uses does not use \"newton\" setting. You might test if \"newton off\" makes the simulation run faster."); + if (force->newton) error->warning(FLERR,"Pair style uses does not use \"newton\" setting. You might test if \"newton off\" makes the simulation run faster."); if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; cuda->shared_data.pair.g_ewald=g_ewald; cuda->shared_data.pppm.qqrd2e=force->qqrd2e; - if(ncoultablebits) error->warning("# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); + if(ncoultablebits) error->warning(FLERR,"# CUDA: You asked for the useage of Coulomb Tables. This is not supported in CUDA Pair forces. Setting is ignored.\n"); } void PairLJCutCoulLongCuda::init_list(int id, NeighList *ptr) diff --git a/src/USER-CUDA/pair_lj_cut_cuda.cpp b/src/USER-CUDA/pair_lj_cut_cuda.cpp index 29dfbb8145..c865f21361 100644 --- a/src/USER-CUDA/pair_lj_cut_cuda.cpp +++ b/src/USER-CUDA/pair_lj_cut_cuda.cpp @@ -61,16 +61,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJCutCuda::PairLJCutCuda(LAMMPS *lmp) : PairLJCut(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; diff --git a/src/USER-CUDA/pair_lj_cut_experimental_cuda.cpp b/src/USER-CUDA/pair_lj_cut_experimental_cuda.cpp index a8700008d6..50dfaa5fa9 100644 --- a/src/USER-CUDA/pair_lj_cut_experimental_cuda.cpp +++ b/src/USER-CUDA/pair_lj_cut_experimental_cuda.cpp @@ -61,16 +61,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJCutExperimentalCuda::PairLJCutExperimentalCuda(LAMMPS *lmp) : PairLJCut(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; diff --git a/src/USER-CUDA/pair_lj_expand_cuda.cpp b/src/USER-CUDA/pair_lj_expand_cuda.cpp index f06f227aff..79f5f77c80 100644 --- a/src/USER-CUDA/pair_lj_expand_cuda.cpp +++ b/src/USER-CUDA/pair_lj_expand_cuda.cpp @@ -61,16 +61,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJExpandCuda::PairLJExpandCuda(LAMMPS *lmp) : PairLJExpand(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; diff --git a/src/USER-CUDA/pair_lj_gromacs_coul_gromacs_cuda.cpp b/src/USER-CUDA/pair_lj_gromacs_coul_gromacs_cuda.cpp index 8e05acc4f1..862d180e96 100644 --- a/src/USER-CUDA/pair_lj_gromacs_coul_gromacs_cuda.cpp +++ b/src/USER-CUDA/pair_lj_gromacs_coul_gromacs_cuda.cpp @@ -46,16 +46,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJGromacsCoulGromacsCuda::PairLJGromacsCoulGromacsCuda(LAMMPS *lmp) : PairLJGromacsCoulGromacs(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; @@ -140,7 +137,7 @@ void PairLJGromacsCoulGromacsCuda::coeff(int narg, char **arg) void PairLJGromacsCoulGromacsCuda::init_style() { if (!atom->q_flag) - error->all("Pair style lj/gromacs/coul/gromacs requires atom attribute q"); + error->all(FLERR,"Pair style lj/gromacs/coul/gromacs requires atom attribute q"); // request regular or rRESPA neighbor lists if(atom->molecular) @@ -156,7 +153,7 @@ void PairLJGromacsCoulGromacsCuda::init_style() neighbor->requests[irequest]->cudable = 1; if (cut_lj_inner >= cut_lj || cut_coul_inner >= cut_coul) - error->all("Pair inner cutoff >= Pair outer cutoff"); + error->all(FLERR,"Pair inner cutoff >= Pair outer cutoff"); cut_lj_innersq = cut_lj_inner * cut_lj_inner; cut_ljsq = cut_lj * cut_lj; diff --git a/src/USER-CUDA/pair_lj_gromacs_cuda.cpp b/src/USER-CUDA/pair_lj_gromacs_cuda.cpp index 97bf05aac4..518ab56325 100644 --- a/src/USER-CUDA/pair_lj_gromacs_cuda.cpp +++ b/src/USER-CUDA/pair_lj_gromacs_cuda.cpp @@ -46,16 +46,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJGromacsCuda::PairLJGromacsCuda(LAMMPS *lmp) : PairLJGromacs(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; diff --git a/src/USER-CUDA/pair_lj_smooth_cuda.cpp b/src/USER-CUDA/pair_lj_smooth_cuda.cpp index 25f2c5059a..84a4d9086a 100644 --- a/src/USER-CUDA/pair_lj_smooth_cuda.cpp +++ b/src/USER-CUDA/pair_lj_smooth_cuda.cpp @@ -46,16 +46,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJSmoothCuda::PairLJSmoothCuda(LAMMPS *lmp) : PairLJSmooth(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; diff --git a/src/USER-CUDA/pair_morse_cuda.cpp b/src/USER-CUDA/pair_morse_cuda.cpp index befacd3413..ec2375fb92 100644 --- a/src/USER-CUDA/pair_morse_cuda.cpp +++ b/src/USER-CUDA/pair_morse_cuda.cpp @@ -61,16 +61,13 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairMorseCuda::PairMorseCuda(LAMMPS *lmp) : PairMorse(lmp) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); allocated2 = false; cuda->shared_data.pair.cudable_force = 1; diff --git a/src/USER-CUDA/pair_sw_cuda.cpp b/src/USER-CUDA/pair_sw_cuda.cpp new file mode 100644 index 0000000000..601ad7f2cf --- /dev/null +++ b/src/USER-CUDA/pair_sw_cuda.cpp @@ -0,0 +1,209 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + + Original Version: + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. + + ----------------------------------------------------------------------- + + USER-CUDA Package and associated modifications: + https://sourceforge.net/projects/lammpscuda/ + + Christian Trott, christian.trott@tu-ilmenau.de + Lars Winterfeld, lars.winterfeld@tu-ilmenau.de + Theoretical Physics II, University of Technology Ilmenau, Germany + + See the README file in the USER-CUDA directory. + + This software is distributed under the GNU General Public License. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + 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: Paul Crozier (SNL) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_sw_cuda.h" +#include "cuda_data.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "cuda_neigh_list.h" +#include "update.h" +#include "integrate.h" +#include "respa.h" +#include "memory.h" +#include "error.h" +#include "cuda.h" + +using namespace LAMMPS_NS; + + + + +/* ---------------------------------------------------------------------- */ + +PairSWCuda::PairSWCuda(LAMMPS *lmp) : PairSW(lmp) +{ + cuda = lmp->cuda; + if(cuda == NULL) + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + + allocated2 = false; + params_f = NULL; + cuda->setSystemParams(); + cuda->shared_data.pair.cudable_force = 1; + cuda->shared_data.pair.override_block_per_atom = 0; + cuda->shared_data.pair.neighall = true; + init = false; +} + +/* ---------------------------------------------------------------------- + remember pointer to arrays in cuda shared data +------------------------------------------------------------------------- */ + +void PairSWCuda::allocate() +{ + if(! allocated) PairSW::allocate(); + if(! allocated2) + { + allocated2 = true; + cuda->shared_data.pair.cutsq = cutsq; + cuda->shared_data.pair.special_lj = force->special_lj; + cuda->shared_data.pair.special_coul = force->special_coul; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairSWCuda::compute(int eflag, int vflag) +{ + if(!init) {Cuda_PairSWCuda_Init(&cuda->shared_data,params_f,map, &elem2param[0][0][0],nelements); init=true;} + if (eflag || vflag) ev_setup(eflag,vflag); + if(eflag) cuda->cu_eng_vdwl->upload(); + if(vflag) cuda->cu_virial->upload(); + + Cuda_PairSWCuda(& cuda->shared_data, & cuda_neigh_list->sneighlist, eflag, vflag, eflag_atom, vflag_atom);//,&elem2param[0][0][0],map + if(not cuda->shared_data.pair.collect_forces_later) + { + if(eflag) cuda->cu_eng_vdwl->download(); + if(vflag) cuda->cu_virial->download(); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairSWCuda::settings(int narg, char **arg) +{ + PairSW::settings(narg, arg); +} + +/* ---------------------------------------------------------------------- */ + +void PairSWCuda::coeff(int narg, char **arg) +{ + PairSW::coeff(narg, arg); + allocate(); + params_f = (ParamSW_Float *) memory->srealloc(params_f,maxparam*sizeof(ParamSW_Float), + "pair:params_f"); + for(int i=0;ishared_data.pair.cut_global = cutmax; +} + +void PairSWCuda::init_style() +{ + MYDBG(printf("# CUDA PairSWCuda::init_style start\n"); ) + + int irequest; + + irequest = neighbor->request(this); + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->cudable = 1; + neighbor->requests[irequest]->ghost = 1; + + + MYDBG(printf("# CUDA PairSWCuda::init_style end\n"); ) +} + +void PairSWCuda::init_list(int id, NeighList *ptr) +{ + MYDBG(printf("# CUDA PairSWCuda::init_list\n");) + PairSW::init_list(id, ptr); + // right now we can only handle verlet (id 0), not respa + if(id == 0) cuda_neigh_list = cuda->registerNeighborList(ptr); + // see Neighbor::init() for details on lammps lists' logic + MYDBG(printf("# CUDA PairSWCuda::init_list end\n");) + cu_params_f = (ParamSW_Float*) CudaWrapper_AllocCudaData(sizeof(ParamSW_Float)*maxparam); + CudaWrapper_UploadCudaData((void*) params_f,(void*) cu_params_f,sizeof(ParamSW_Float)*maxparam); + cu_elem2param = new cCudaData ((int*) elem2param, nelements,nelements,nelements); + cu_elem2param->upload(); + cu_map = new cCudaData ( map,atom->ntypes+1 ); + cu_map->upload(); +} + +void PairSWCuda::ev_setup(int eflag, int vflag) +{ + int maxeatomold=maxeatom; + PairSW::ev_setup(eflag,vflag); + + if (eflag_atom && atom->nmax > maxeatomold) + {delete cuda->cu_eatom; cuda->cu_eatom = new cCudaData ((double*)eatom, & cuda->shared_data.atom.eatom , atom->nmax );} + + if (vflag_atom && atom->nmax > maxeatomold) + {delete cuda->cu_vatom; cuda->cu_vatom = new cCudaData ((double*)vatom, & cuda->shared_data.atom.vatom , atom->nmax, 6 );} +} + + diff --git a/src/USER-CUDA/pair_sw_cuda.h b/src/USER-CUDA/pair_sw_cuda.h new file mode 100644 index 0000000000..be9ba9bb3d --- /dev/null +++ b/src/USER-CUDA/pair_sw_cuda.h @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + + Original Version: + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. + + ----------------------------------------------------------------------- + + USER-CUDA Package and associated modifications: + https://sourceforge.net/projects/lammpscuda/ + + Christian Trott, christian.trott@tu-ilmenau.de + Lars Winterfeld, lars.winterfeld@tu-ilmenau.de + Theoretical Physics II, University of Technology Ilmenau, Germany + + See the README file in the USER-CUDA directory. + + This software is distributed under the GNU General Public License. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(sw/cuda,PairSWCuda) + +#else + +#ifndef PAIR_SW_CUDA_H +#define PAIR_SW_CUDA_H + +#include "pair_sw_cuda_cu.h" +#include "pair_sw.h" +#include "cuda_data.h" + +namespace LAMMPS_NS { + +class PairSWCuda : public PairSW +{ + public: + PairSWCuda(class LAMMPS *); + void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + void init_list(int, class NeighList *); + void init_style(); + void ev_setup(int eflag, int vflag); + protected: + + class Cuda *cuda; + void allocate(); + bool allocated2; + class CudaNeighList* cuda_neigh_list; + ParamSW_Float* params_f; + ParamSW_Float* cu_params_f; + cCudaData* cu_elem2param; + cCudaData* cu_map; + bool init; + bool iszbl; +}; + +} + +#endif +#endif diff --git a/src/USER-CUDA/pair_tersoff_cuda.cpp b/src/USER-CUDA/pair_tersoff_cuda.cpp new file mode 100644 index 0000000000..4f1dba4e31 --- /dev/null +++ b/src/USER-CUDA/pair_tersoff_cuda.cpp @@ -0,0 +1,206 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + + Original Version: + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. + + ----------------------------------------------------------------------- + + USER-CUDA Package and associated modifications: + https://sourceforge.net/projects/lammpscuda/ + + Christian Trott, christian.trott@tu-ilmenau.de + Lars Winterfeld, lars.winterfeld@tu-ilmenau.de + Theoretical Physics II, University of Technology Ilmenau, Germany + + See the README file in the USER-CUDA directory. + + This software is distributed under the GNU General Public License. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + 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: Paul Crozier (SNL) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_tersoff_cuda.h" +#include "cuda_data.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "cuda_neigh_list.h" +#include "update.h" +#include "integrate.h" +#include "respa.h" +#include "memory.h" +#include "error.h" +#include "cuda.h" + +using namespace LAMMPS_NS; + + + + +/* ---------------------------------------------------------------------- */ + +PairTersoffCuda::PairTersoffCuda(LAMMPS *lmp) : PairTersoff(lmp) +{ + cuda = lmp->cuda; + if(cuda == NULL) + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + + allocated2 = false; + params_f = NULL; + cuda->setSystemParams(); + cuda->shared_data.pair.cudable_force = 1; + cuda->shared_data.pair.override_block_per_atom = 0; + cuda->shared_data.pair.neighall = true; + init = false; + iszbl = false; +} + +/* ---------------------------------------------------------------------- + remember pointer to arrays in cuda shared data +------------------------------------------------------------------------- */ + +void PairTersoffCuda::allocate() +{ + if(! allocated) PairTersoff::allocate(); + if(! allocated2) + { + allocated2 = true; + cuda->shared_data.pair.cutsq = cutsq; + cuda->shared_data.pair.special_lj = force->special_lj; + cuda->shared_data.pair.special_coul = force->special_coul; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairTersoffCuda::compute(int eflag, int vflag) +{ + if(!init) {Cuda_PairTersoffCuda_Init(&cuda->shared_data,params_f,map, &elem2param[0][0][0],nelements,iszbl); init=true;} + if (eflag || vflag) ev_setup(eflag,vflag); + if(eflag) cuda->cu_eng_vdwl->upload(); + if(vflag) cuda->cu_virial->upload(); + + Cuda_PairTersoffCuda(& cuda->shared_data, & cuda_neigh_list->sneighlist, eflag, vflag, eflag_atom, vflag_atom);//,&elem2param[0][0][0],map + if(not cuda->shared_data.pair.collect_forces_later) + { + if(eflag) cuda->cu_eng_vdwl->download(); + if(vflag) cuda->cu_virial->download(); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairTersoffCuda::settings(int narg, char **arg) +{ + PairTersoff::settings(narg, arg); +} + +/* ---------------------------------------------------------------------- */ + +void PairTersoffCuda::coeff(int narg, char **arg) +{ + PairTersoff::coeff(narg, arg); + allocate(); + params_f = (Param_Float *) memory->srealloc(params_f,maxparam*sizeof(Param_Float), + "pair:params_f"); + for(int i=0;ishared_data.pair.cut_global = cutmax; +} + +void PairTersoffCuda::init_style() +{ + MYDBG(printf("# CUDA PairTersoffCuda::init_style start\n"); ) + + int irequest; + + irequest = neighbor->request(this); + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->cudable = 1; + neighbor->requests[irequest]->ghost = 1; + + + MYDBG(printf("# CUDA PairTersoffCuda::init_style end\n"); ) +} + +void PairTersoffCuda::init_list(int id, NeighList *ptr) +{ + MYDBG(printf("# CUDA PairTersoffCuda::init_list\n");) + PairTersoff::init_list(id, ptr); + // right now we can only handle verlet (id 0), not respa + if(id == 0) cuda_neigh_list = cuda->registerNeighborList(ptr); + // see Neighbor::init() for details on lammps lists' logic + MYDBG(printf("# CUDA PairTersoffCuda::init_list end\n");) + cu_params_f = (Param_Float*) CudaWrapper_AllocCudaData(sizeof(Param_Float)*maxparam); + CudaWrapper_UploadCudaData((void*) params_f,(void*) cu_params_f,sizeof(Param_Float)*maxparam); + cu_elem2param = new cCudaData ((int*) elem2param, nelements,nelements,nelements); + cu_elem2param->upload(); + cu_map = new cCudaData ( map,atom->ntypes+1 ); + cu_map->upload(); +} + +void PairTersoffCuda::ev_setup(int eflag, int vflag) +{ + int maxeatomold=maxeatom; + PairTersoff::ev_setup(eflag,vflag); + + if (eflag_atom && atom->nmax > maxeatomold) + {delete cuda->cu_eatom; cuda->cu_eatom = new cCudaData ((double*)eatom, & cuda->shared_data.atom.eatom , atom->nmax );} + + if (vflag_atom && atom->nmax > maxeatomold) + {delete cuda->cu_vatom; cuda->cu_vatom = new cCudaData ((double*)vatom, & cuda->shared_data.atom.vatom , atom->nmax, 6 );} +} + + diff --git a/src/USER-CUDA/pair_tersoff_cuda.h b/src/USER-CUDA/pair_tersoff_cuda.h new file mode 100644 index 0000000000..34a06f91a9 --- /dev/null +++ b/src/USER-CUDA/pair_tersoff_cuda.h @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + + Original Version: + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. + + ----------------------------------------------------------------------- + + USER-CUDA Package and associated modifications: + https://sourceforge.net/projects/lammpscuda/ + + Christian Trott, christian.trott@tu-ilmenau.de + Lars Winterfeld, lars.winterfeld@tu-ilmenau.de + Theoretical Physics II, University of Technology Ilmenau, Germany + + See the README file in the USER-CUDA directory. + + This software is distributed under the GNU General Public License. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(tersoff/cuda,PairTersoffCuda) + +#else + +#ifndef PAIR_TERSOFF_CUDA_H +#define PAIR_TERSOFF_CUDA_H + +#include "pair_tersoff_cuda_cu.h" +#include "pair_tersoff.h" +#include "cuda_data.h" + +namespace LAMMPS_NS { + +class PairTersoffCuda : public PairTersoff +{ + public: + PairTersoffCuda(class LAMMPS *); + void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + void init_list(int, class NeighList *); + void init_style(); + void ev_setup(int eflag, int vflag); + protected: + + class Cuda *cuda; + void allocate(); + bool allocated2; + class CudaNeighList* cuda_neigh_list; + Param_Float* params_f; + Param_Float* cu_params_f; + cCudaData* cu_elem2param; + cCudaData* cu_map; + bool init; + bool iszbl; +}; + +} + +#endif +#endif diff --git a/src/USER-CUDA/pair_tersoff_zbl_cuda.cpp b/src/USER-CUDA/pair_tersoff_zbl_cuda.cpp new file mode 100644 index 0000000000..45236da515 --- /dev/null +++ b/src/USER-CUDA/pair_tersoff_zbl_cuda.cpp @@ -0,0 +1,220 @@ +/* ---------------------------------------------------------------------- + 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: Aidan Thompson (SNL) - original Tersoff implementation + David Farrell (NWU) - ZBL addition +------------------------------------------------------------------------- */ + +#include "math.h" +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "pair_tersoff_zbl_cuda.h" +#include "atom.h" +#include "update.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "force.h" +#include "comm.h" +#include "memory.h" +#include "error.h" +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define MAXLINE 1024 +#define DELTA 4 + +/* ---------------------------------------------------------------------- */ + +PairTersoffZBLCuda::PairTersoffZBLCuda(LAMMPS *lmp) : PairTersoffCuda(lmp) +{ + // hard-wired constants in metal or real units + // a0 = Bohr radius + // epsilon0 = permittivity of vacuum = q / energy-distance units + // e = unit charge + // 1 Kcal/mole = 0.043365121 eV + + if (strcmp(update->unit_style,"metal") == 0) { + global_a_0 = 0.529; + global_epsilon_0 = 0.00552635; + global_e = 1.0; + } else if (strcmp(update->unit_style,"real") == 0) { + global_a_0 = 0.529; + global_epsilon_0 = 0.00552635 * 0.043365121; + global_e = 1.0; + } else error->all(FLERR,"Pair tersoff/zbl requires metal or real units"); + iszbl = true; +} + +/* ---------------------------------------------------------------------- */ + +void PairTersoffZBLCuda::read_file(char *file) +{ + int params_per_line = 21; + char **words = new char*[params_per_line+1]; + + delete [] params; + params = NULL; + nparams = 0; + + // open file on proc 0 + + FILE *fp; + if (comm->me == 0) { + fp = fopen(file,"r"); + if (fp == NULL) { + char str[128]; + sprintf(str,"Cannot open Tersoff potential file %s",file); + error->one(FLERR,str); + } + } + + // read each line out of file, skipping blank lines or leading '#' + // store line of params if all 3 element tags are in element list + + int n,nwords,ielement,jelement,kelement; + char line[MAXLINE],*ptr; + int eof = 0; + + while (1) { + if (comm->me == 0) { + ptr = fgets(line,MAXLINE,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + + // strip comment, skip line if blank + + if (ptr = strchr(line,'#')) *ptr = '\0'; + nwords = atom->count_words(line); + if (nwords == 0) continue; + + // concatenate additional lines until have params_per_line words + + while (nwords < params_per_line) { + n = strlen(line); + if (comm->me == 0) { + ptr = fgets(&line[n],MAXLINE-n,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + if (ptr = strchr(line,'#')) *ptr = '\0'; + nwords = atom->count_words(line); + } + + if (nwords != params_per_line) + error->all(FLERR,"Incorrect format in Tersoff potential file"); + + // words = ptrs to all words in line + + nwords = 0; + words[nwords++] = strtok(line," \t\n\r\f"); + while (words[nwords++] = strtok(NULL," \t\n\r\f")) continue; + + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next line + + for (ielement = 0; ielement < nelements; ielement++) + if (strcmp(words[0],elements[ielement]) == 0) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (strcmp(words[1],elements[jelement]) == 0) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (strcmp(words[2],elements[kelement]) == 0) break; + if (kelement == nelements) continue; + + // load up parameter settings and error check their values + + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } + + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].powerm = atof(words[3]); + params[nparams].gamma = atof(words[4]); + params[nparams].lam3 = atof(words[5]); + params[nparams].c = atof(words[6]); + params[nparams].d = atof(words[7]); + params[nparams].h = atof(words[8]); + params[nparams].powern = atof(words[9]); + params[nparams].beta = atof(words[10]); + params[nparams].lam2 = atof(words[11]); + params[nparams].bigb = atof(words[12]); + params[nparams].bigr = atof(words[13]); + params[nparams].bigd = atof(words[14]); + params[nparams].lam1 = atof(words[15]); + params[nparams].biga = atof(words[16]); + params[nparams].Z_i = atof(words[17]); + params[nparams].Z_j = atof(words[18]); + params[nparams].ZBLcut = atof(words[19]); + params[nparams].ZBLexpscale = atof(words[20]); + + // currently only allow m exponent of 1 or 3 + + params[nparams].powermint = int(params[nparams].powerm); + + if ( + params[nparams].lam3 < 0.0 || params[nparams].c < 0.0 || + params[nparams].d < 0.0 || params[nparams].powern < 0.0 || + params[nparams].beta < 0.0 || params[nparams].lam2 < 0.0 || + params[nparams].bigb < 0.0 || params[nparams].bigr < 0.0 || + params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].lam3 < 0.0 || params[nparams].biga < 0.0 || + params[nparams].powerm - params[nparams].powermint != 0.0 || + (params[nparams].powermint != 3 && params[nparams].powermint != 1) || + params[nparams].gamma < 0.0 || + params[nparams].Z_i < 1.0 || params[nparams].Z_j < 1.0 || + params[nparams].ZBLcut < 0.0 || params[nparams].ZBLexpscale < 0.0) + error->all(FLERR,"Illegal Tersoff parameter"); + + nparams++; + } + + delete [] words; +} + +void PairTersoffZBLCuda::coeff(int narg, char **arg) +{ + PairTersoffCuda::coeff(narg, arg); + for(int i=0;i (b) ? (a) : (b)) - void printArray(double* data,int nx, int ny, int nz) { @@ -102,17 +101,16 @@ PPPMCuda::PPPMCuda(LAMMPS *lmp, int narg, char **arg) : PPPM(lmp, (narg==2?1:nar { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); - if ((narg > 3)||(narg<1)) error->all("Illegal kspace_style pppm/cuda command"); + if ((narg > 3)||(narg<1)) error->all(FLERR,"Illegal kspace_style pppm/cuda command"); #ifndef FFT_CUFFT - error->all("Using kspace_style pppm/cuda without cufft is not possible. Compile with cufft=1 to include cufft. Aborting."); + error->all(FLERR,"Using kspace_style pppm/cuda without cufft is not possible. Compile with cufft=1 to include cufft. Aborting."); #endif precision = atof(arg[0]); if(narg>1) precisionmodify=arg[1][0]; else precisionmodify='='; - PI = 4.0*atan(1.0); nfactors = 3; factors = new int[nfactors]; @@ -213,23 +211,23 @@ void PPPMCuda::init() // error check if (domain->triclinic) - error->all("Cannot (yet) use PPPMCuda with triclinic box"); - if (domain->dimension == 2) error->all("Cannot use PPPMCuda with 2d simulation"); + error->all(FLERR,"Cannot (yet) use PPPMCuda with triclinic box"); + if (domain->dimension == 2) error->all(FLERR,"Cannot use PPPMCuda with 2d simulation"); - if (!atom->q_flag) error->all("Kspace style requires atom attribute q"); + if (!atom->q_flag) error->all(FLERR,"Kspace style requires atom attribute q"); if (slabflag == 0 && domain->nonperiodic > 0) - error->all("Cannot use nonperiodic boundaries with PPPMCuda"); + error->all(FLERR,"Cannot use nonperiodic boundaries with PPPMCuda"); if (slabflag == 1) { if (domain->xperiodic != 1 || domain->yperiodic != 1 || domain->boundary[2][0] != 1 || domain->boundary[2][1] != 1) - error->all("Incorrect boundaries with slab PPPMCuda"); + error->all(FLERR,"Incorrect boundaries with slab PPPMCuda"); } if (order > MAXORDER) { char str[128]; sprintf(str,"PPPMCuda order cannot be greater than %d",MAXORDER); - error->all(str); + error->all(FLERR,str); } // free all arrays previously allocated @@ -240,11 +238,11 @@ void PPPMCuda::init() qqrd2e = force->qqrd2e; if (force->pair == NULL) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); int itmp=0; double *p_cutoff = (double *) force->pair->extract("cut_coul",itmp); if (p_cutoff == NULL) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); cutoff = *p_cutoff; // if kspace is TIP4P, extract TIP4P params from pair style @@ -253,14 +251,14 @@ void PPPMCuda::init() if (strcmp(force->kspace_style,"pppm/tip4p") == 0) { if (force->pair == NULL) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); double *p_qdist = (double *) force->pair->extract("qdist",itmp); int *p_typeO = (int *) force->pair->extract("typeO",itmp); int *p_typeH = (int *) force->pair->extract("typeH",itmp); int *p_typeA = (int *) force->pair->extract("typeA",itmp); int *p_typeB = (int *) force->pair->extract("typeB",itmp); if (!p_qdist || !p_typeO || !p_typeH || !p_typeA || !p_typeB) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); qdist = *p_qdist; typeO = *p_typeO; typeH = *p_typeH; @@ -268,7 +266,7 @@ void PPPMCuda::init() int typeB = *p_typeB; if (force->angle == NULL || force->bond == NULL) - error->all("Bond and angle potentials must be defined for TIP4P"); + error->all(FLERR,"Bond and angle potentials must be defined for TIP4P"); double theta = force->angle->equilibrium_angle(typeA); double blen = force->bond->equilibrium_distance(typeB); alpha = qdist / (2.0 * cos(0.5*theta) * blen); @@ -289,11 +287,11 @@ void PPPMCuda::init() qsqsum = tmp; if (qsqsum == 0.0) - error->all("Cannot use kspace solver on system with no charge"); + error->all(FLERR,"Cannot use kspace solver on system with no charge"); if (fabs(qsum) > SMALL && me == 0) { char str[128]; sprintf(str,"System is not charge neutral, net charge = %g",qsum); - error->warning(str); + error->warning(FLERR,str); } // setup FFT grid resolution and g_ewald @@ -305,14 +303,14 @@ void PPPMCuda::init() while (order > 0) { if (iteration && me == 0) - error->warning("Reducing PPPMCuda order b/c stencil extends " + error->warning(FLERR,"Reducing PPPMCuda order b/c stencil extends " "beyond neighbor processor"); iteration++; set_grid(); if (nx_pppm >= OFFSET || ny_pppm >= OFFSET || nz_pppm >= OFFSET) - error->all("PPPMCuda grid is too large"); + error->all(FLERR,"PPPMCuda grid is too large"); // global indices of PPPMCuda grid range from 0 to N-1 // nlo_in,nhi_in = lower/upper limits of the 3d sub-brick of @@ -484,7 +482,7 @@ void PPPMCuda::init() order--; } - if (order == 0) error->all("PPPMCuda order has been reduced to 0"); + if (order == 0) error->all(FLERR,"PPPMCuda order has been reduced to 0"); //printf("PPPMCuda: order is %i\n"); @@ -651,9 +649,9 @@ void PPPMCuda::setup() delvolinv = delxinv*delyinv*delzinv; - double unitkx = (2.0*PI/xprd); - double unitky = (2.0*PI/yprd); - double unitkz = (2.0*PI/zprd_slab); + double unitkx = (2.0*MY_PI/xprd); + double unitky = (2.0*MY_PI/yprd); + double unitkz = (2.0*MY_PI/zprd_slab); // fkx,fky,fkz for my FFT grid pts Cuda_PPPM_Setup_fkxyz_vg(nx_pppm, ny_pppm,nz_pppm,unitkx,unitky,unitkz,g_ewald); @@ -750,11 +748,11 @@ double sqk; double sum1,dot1,dot2; double numerator,denominator; - int nbx = static_cast ((g_ewald*xprd/(PI*nx_pppm)) * + int nbx = static_cast ((g_ewald*xprd/(MY_PI*nx_pppm)) * pow(-log(EPS_HOC),0.25)); - int nby = static_cast ((g_ewald*yprd/(PI*ny_pppm)) * + int nby = static_cast ((g_ewald*yprd/(MY_PI*ny_pppm)) * pow(-log(EPS_HOC),0.25)); - int nbz = static_cast ((g_ewald*zprd_slab/(PI*nz_pppm)) * + int nbz = static_cast ((g_ewald*zprd_slab/(MY_PI*nz_pppm)) * pow(-log(EPS_HOC),0.25)); Cuda_PPPM_setup_greensfn(nx_pppm,ny_pppm,nz_pppm,unitkx,unitky,unitkz,g_ewald, nbx,nby,nbz,xprd,yprd,zprd_slab); @@ -970,7 +968,7 @@ else energy *= 0.5*volume; energy -= g_ewald*qsqsum/1.772453851 + - 0.5*PI*qsum*qsum / (g_ewald*g_ewald*volume); + MY_PI2*qsum*qsum / (g_ewald*g_ewald*volume); energy *= qqrd2e; } @@ -1395,7 +1393,7 @@ void PPPMCuda::set_grid() g_ewald = gew2; fmid = diffpr(h_x,h_y,h_z,q2,acons); - if (f*fmid >= 0.0) error->all("Cannot compute PPPMCuda G"); + if (f*fmid >= 0.0) error->all(FLERR,"Cannot compute PPPMCuda G"); rtb = f < 0.0 ? (dgew=gew2-gew1,gew1) : (dgew=gew1-gew2,gew2); ncount = 0; while (fabs(dgew) > SMALL && fmid != 0.0) { @@ -1404,7 +1402,7 @@ void PPPMCuda::set_grid() fmid = diffpr(h_x,h_y,h_z,q2,acons); if (fmid <= 0.0) rtb = g_ewald; ncount++; - if (ncount > LARGE) error->all("Cannot compute PPPMCuda G"); + if (ncount > LARGE) error->all(FLERR,"Cannot compute PPPMCuda G"); } } @@ -1449,7 +1447,7 @@ void PPPMCuda::make_power_of_prime(int* n) { if((precisionmodify!='+')&&(precisionmodify!='-')&&(precisionmodify!='c')) - {error->all("Unknown Option for PPPMCuda, assumeing '='");return;} + {error->all(FLERR,"Unknown Option for PPPMCuda, assumeing '='");return;} int oldn=*n; int* primelist=new int[1000]; int count=0; @@ -1555,7 +1553,7 @@ void PPPMCuda::particle_map() int flag_all; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); - if (flag_all) error->all("Out of range atoms - cannot compute PPPMCuda!"); + if (flag_all) error->all(FLERR,"Out of range atoms - cannot compute PPPMCuda!"); } /* ---------------------------------------------------------------------- @@ -1731,11 +1729,11 @@ void PPPMCuda::slabcorr(int eflag) // compute corrections - double e_slabcorr = 2.0*PI*dipole_all*dipole_all/volume; + double e_slabcorr = 2.0*MY_PI*dipole_all*dipole_all/volume; if (eflag) energy += qqrd2e*scale * e_slabcorr; - double ffact = -4.0*PI*dipole_all/volume; + double ffact = -4.0*MY_PI*dipole_all/volume; cuda_slabcorr_force(&cuda->shared_data,ffact); } diff --git a/src/USER-CUDA/verlet_cuda.cpp b/src/USER-CUDA/verlet_cuda.cpp index 1a75e55de3..0a3ba3ff40 100644 --- a/src/USER-CUDA/verlet_cuda.cpp +++ b/src/USER-CUDA/verlet_cuda.cpp @@ -55,14 +55,13 @@ using namespace LAMMPS_NS; -#define MAX(a, b) ((a)>(b) ? (a) : (b)) #define MAKETIMEING VerletCuda::VerletCuda(LAMMPS *lmp, int narg, char **arg) : Verlet(lmp, narg, arg) { cuda = lmp->cuda; if(cuda == NULL) - error->all("You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); + error->all(FLERR,"You cannot use a /cuda class, without activating 'cuda' acceleration. Provide '-c on' as command-line argument to LAMMPS.."); modify_cuda=(ModifyCuda*) modify; } @@ -135,20 +134,19 @@ void VerletCuda::setup() cuda->uploadAll(); neighbor->build(); neighbor->ncalls = 0; - cuda->uploadAllNeighborLists(); + if(atom->mass) cuda->cu_mass->upload(); if(cuda->cu_map_array) cuda->cu_map_array->upload(); - + // compute all forces ev_set(update->ntimestep); if(elist_atom) cuda->shared_data.atom.need_eatom = 1; if(vlist_atom) cuda->shared_data.atom.need_vatom = 1; if(elist_atom||vlist_atom) cuda->checkResize(); - int test_BpA_vs_TpA = true; timespec starttime; @@ -541,17 +539,17 @@ void VerletCuda::run(int n) if(cuda->shared_data.me==0) { if((not cuda->shared_data.pair.cudable_force)&&(force->pair)) - error->warning("# CUDA: You asked for a Verlet integration using Cuda, " + error->warning(FLERR,"# CUDA: You asked for a Verlet integration using Cuda, " "but selected a pair force which has not yet been ported to Cuda"); if((not cuda->shared_data.pppm.cudable_force)&&(force->kspace)) - error->warning("# CUDA: You asked for a Verlet integration using Cuda, " + error->warning(FLERR,"# CUDA: You asked for a Verlet integration using Cuda, " "but selected a kspace force which has not yet been ported to Cuda"); if(modify_cuda->n_post_integrate_host+modify_cuda->n_pre_exchange_host+modify_cuda->n_pre_neighbor_host+modify_cuda->n_pre_force_host+modify_cuda->n_post_force_host+modify_cuda->n_end_of_step_host+modify_cuda->n_initial_integrate_host+modify_cuda->n_final_integrate_host) - error->warning("# CUDA: You asked for a Verlet integration using Cuda, " + error->warning(FLERR,"# CUDA: You asked for a Verlet integration using Cuda, " "but several fixes have not yet been ported to Cuda.\n" "This can cause a severe speed penalty due to frequent data synchronization between host and GPU."); if(atom->firstgroupname) - error->warning("Warning: firstgroupname is used, this will cause additional data transfers."); + error->warning(FLERR,"Warning: firstgroupname is used, this will cause additional data transfers."); } cuda->uploadAll(); @@ -566,6 +564,7 @@ void VerletCuda::run(int n) cuda->shared_data.atom.reneigh_flag=0; cuda->shared_data.atom.update_nlocal=1; cuda->shared_data.atom.update_nmax=1; + cuda->shared_data.atom.update_neigh=1; cuda->shared_data.domain.update=1; cuda->shared_data.buffer_new=1; cuda->uploadtime=0; @@ -629,14 +628,12 @@ void VerletCuda::run(int n) //start force calculation asynchronus cuda->shared_data.comm.comm_phase=1; - // printf("Pre Force Compute\n"); force->pair->compute(eflag, vflag); timer->stamp(TIME_PAIR); //CudaWrapper_Sync(); //download comm buffers from GPU, perform MPI communication and upload buffers again clock_gettime(CLOCK_REALTIME,&starttime); - // printf("Pre forward_comm(2)\n"); comm->forward_comm(2); clock_gettime(CLOCK_REALTIME,&endtime); cuda->shared_data.cuda_timings.comm_forward_total+= @@ -644,16 +641,13 @@ void VerletCuda::run(int n) timer->stamp(TIME_COMM); //wait for force calculation - //printf("Pre Synch\n"); CudaWrapper_Sync(); timer->stamp(TIME_PAIR); //unpack communication buffers clock_gettime(CLOCK_REALTIME,&starttime); - // printf("Pre forward_comm(3)\n"); comm->forward_comm(3); clock_gettime(CLOCK_REALTIME,&endtime); - // printf("Post forward_comm(3)\n"); cuda->shared_data.cuda_timings.comm_forward_total+= endtime.tv_sec-starttime.tv_sec+1.0*(endtime.tv_nsec-starttime.tv_nsec)/1000000000; @@ -665,11 +659,9 @@ void VerletCuda::run(int n) else { //perform standard forward communication - //printf("Forward_comm\n"); clock_gettime(CLOCK_REALTIME,&starttime); comm->forward_comm(); clock_gettime(CLOCK_REALTIME,&endtime); - //printf("Forward_comm_done\n"); cuda->shared_data.cuda_timings.comm_forward_total+= endtime.tv_sec-starttime.tv_sec+1.0*(endtime.tv_nsec-starttime.tv_nsec)/1000000000; timer->stamp(TIME_COMM); @@ -679,13 +671,13 @@ void VerletCuda::run(int n) else { int nlocalold=cuda->shared_data.atom.nlocal; - //if(firstreneigh) + if(firstreneigh) { cuda->shared_data.atom.update_nlocal=1; - cuda->shared_data.atom.update_nmax=1; + cuda->shared_data.atom.update_nmax=1; firstreneigh=0; } - cuda->shared_data.buffer_new=1; + cuda->shared_data.buffer_new=1; MYDBG( printf("# CUDA VerletCuda::iterate: neighbor\n"); ) cuda->setDomainParams(); if(n_pre_exchange) modify->pre_exchange(); @@ -761,10 +753,10 @@ void VerletCuda::run(int n) cuda->shared_data.cuda_timings.test2+= endtime.tv_sec-starttime.tv_sec+1.0*(endtime.tv_nsec-starttime.tv_nsec)/1000000000; - //rebuild neighbor list - test_atom(testatom,"Pre Neighbor"); + //rebuild neighbor list + test_atom(testatom,"Pre Neighbor"); neighbor->build(); - timer->stamp(TIME_NEIGHBOR); + timer->stamp(TIME_NEIGHBOR); MYDBG( printf("# CUDA VerletCuda::iterate: neighbor done\n"); ) //if bonded interactions are used (in this case collect_forces_later is true), transfer data which only changes upon exchange/border routines from GPU to CPU @@ -774,7 +766,7 @@ void VerletCuda::run(int n) cuda->cu_tag->download(); cuda->cu_type->download(); cuda->cu_mask->download(); - if(cuda->cu_q) cuda->cu_q->download(); + if(cuda->cu_q) cuda->cu_q->download(); } cuda->shared_data.comm.comm_phase=3; } @@ -971,14 +963,16 @@ void VerletCuda::run(int n) test_atom(testatom,"post output"); if(cuda->shared_data.atom.update_nlocal>0) - cuda->shared_data.atom.update_nlocal--; - if(cuda->shared_data.atom.update_nmax>0) - cuda->shared_data.atom.update_nmax--; - if(cuda->shared_data.domain.update>0) + cuda->shared_data.atom.update_nlocal--; + if(cuda->shared_data.atom.update_nmax>0) + cuda->shared_data.atom.update_nmax--; + if(cuda->shared_data.atom.update_neigh>0) + cuda->shared_data.atom.update_neigh--; + if(cuda->shared_data.domain.update>0) cuda->shared_data.domain.update--; - if(cuda->shared_data.buffer_new>0) + if(cuda->shared_data.buffer_new>0) cuda->shared_data.buffer_new--; - cuda->shared_data.atom.reneigh_flag=0; + cuda->shared_data.atom.reneigh_flag=0; } @@ -986,6 +980,7 @@ void VerletCuda::run(int n) cuda->downloadAllNeighborLists(); cuda->shared_data.atom.update_nlocal=1; cuda->shared_data.atom.update_nmax=1; + cuda->shared_data.atom.update_neigh=1; cuda->shared_data.buffer_new=1; cuda->shared_data.domain.update=1; cuda->oncpu = true; diff --git a/src/USER-EFF/README b/src/USER-EFF/README index c1c2453ecc..6bae419b1c 100644 --- a/src/USER-EFF/README +++ b/src/USER-EFF/README @@ -1,26 +1,5 @@ -The files in this directory are a user-contributed package for LAMMPS. - -The person who created these files is Andres Jaramillo-Botero at -CalTech (ajaramil@wag.caltech.edu). Contact him directly if you have -questions. - --------------------------------------- - -Andres Jaramillo-Botero -California Institute of Technology (Caltech) -Chemistry and Chemical Engineering, 139-74 -1200 E. California Blvd., Pasadena, CA 91125 -Phone: (626) 395-3591 -e-mail: ajaramil@wag.caltech.edu - -Co-Authors: -Julius Su (jsu@wag.caltech.edu) -William A. Goddard III (wag@wag.caltech.edu) - -PACKAGE DESCRIPTION: - -Contains a LAMMPS implementation of the electron Force Field (eFF) -currently under development at Caltech, as described in +This package contains a LAMMPS implementation of the electron Force +Field (eFF) currently under development at Caltech, as described in A. Jaramillo-Botero, J. Su, Q. An, and W.A. Goddard III, JCC, 2010. The eFF potential was first introduced by Su and Goddard, in 2007. @@ -45,14 +24,31 @@ The necessary customizations to the LAMMPS core are in place to enable the correct handling of explicit electron properties during minimization and dynamics. -INSTALLATION: +See the doc page for the pair_style eff/cut command to get started. -via a normal LAMMPS package installation: make yes-user-eff +There are example scripts for using this package in +examples/USER/eff. -OTHERS FILES INCLUDED: +There are auxiliary tools for using this package in tools/eff. -User examples are under examples/USER/eff -eFF tools are under tools/eff +The person who created this package is Andres Jaramillo-Botero at +CalTech (ajaramil at wag.caltech.edu). Contact him directly if you +have questions. + +------------------------- + +AUTHOR INFORMATION: + +Andres Jaramillo-Botero +California Institute of Technology (Caltech) +Chemistry and Chemical Engineering, 139-74 +1200 E. California Blvd., Pasadena, CA 91125 +Phone: (626) 395-3591 +e-mail: ajaramil@wag.caltech.edu + +Co-Authors: +Julius Su (jsu@wag.caltech.edu) +William A. Goddard III (wag@wag.caltech.edu) ACKNOWLEDGMENTS: @@ -70,11 +66,11 @@ Version 01/2010: Special thanks to: - Qi An (Caltech) for providing feedback on usage, application cases, and testing. VERSION NOTES: -01/2010: Added support for fixed-core and effective core pseudopotentials [ECP] -(useful for C, Al, Si, O and other elements). Cleaned up the code to make it -easier to maintain, revised support for real units, upgraded post-processing -and visualization tools, added support for "compute pair eff" to allow thermo -prints with the different eFF energy components (eke, epauli, ecoul and errestrain), + +01/2010: Added support for fixed-core and effective core +pseudopotentials [ECP] (useful for C, Al, Si, O and other elements). +Cleaned up the code to make it easier to maintain, revised support for +real units, upgraded post-processing and visualization tools, added +support for "compute pair eff" to allow thermo prints with the +different eFF energy components (eke, epauli, ecoul and errestrain), fixed radial scaling factors in the eff langevin thermostat. - - diff --git a/src/USER-EFF/atom_vec_electron.cpp b/src/USER-EFF/atom_vec_electron.cpp index 55dd7f5c20..4f73254c31 100644 --- a/src/USER-EFF/atom_vec_electron.cpp +++ b/src/USER-EFF/atom_vec_electron.cpp @@ -72,13 +72,13 @@ void AtomVecElectron::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); q = memory->grow(atom->q,nmax,"atom:q"); spin = memory->grow(atom->spin,nmax,"atom:spin"); eradius = memory->grow(atom->eradius,nmax,"atom:eradius"); ervel = memory->grow(atom->ervel,nmax,"atom:ervel"); - erforce = memory->grow(atom->erforce,nmax,"atom:erforce"); + erforce = memory->grow(atom->erforce,nmax*comm->nthreads,"atom:erforce"); if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) @@ -757,11 +757,11 @@ void AtomVecElectron::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); type[nlocal] = atoi(values[1]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); q[nlocal] = atof(values[2]); spin[nlocal] = atoi(values[3]); @@ -793,7 +793,7 @@ int AtomVecElectron::data_atom_hybrid(int nlocal, char **values) spin[nlocal] = atoi(values[1]); eradius[nlocal] = atof(values[2]); if (eradius[nlocal] < 0.0) - error->one("Invalid eradius in Atoms section of data file"); + error->one(FLERR,"Invalid eradius in Atoms section of data file"); v[nlocal][0] = 0.0; v[nlocal][1] = 0.0; @@ -839,13 +839,13 @@ bigint AtomVecElectron::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("q")) bytes += memory->usage(q,nmax); if (atom->memcheck("spin")) bytes += memory->usage(spin,nmax); if (atom->memcheck("eradius")) bytes += memory->usage(eradius,nmax); if (atom->memcheck("ervel")) bytes += memory->usage(ervel,nmax); - if (atom->memcheck("erforce")) bytes += memory->usage(erforce,nmax); + if (atom->memcheck("erforce")) bytes += memory->usage(erforce,nmax*comm->nthreads); return bytes; } diff --git a/src/USER-EFF/atom_vec_electron.h b/src/USER-EFF/atom_vec_electron.h index b9372f62a6..6c527cacdd 100644 --- a/src/USER-EFF/atom_vec_electron.h +++ b/src/USER-EFF/atom_vec_electron.h @@ -60,7 +60,6 @@ class AtomVecElectron : public AtomVec { bigint memory_usage(); private: - double PI; int *tag,*type,*mask,*image; double **x,**v,**f; int *spin; diff --git a/src/USER-EFF/compute_ke_atom_eff.cpp b/src/USER-EFF/compute_ke_atom_eff.cpp index 33c900f4b3..1b68b60d22 100644 --- a/src/USER-EFF/compute_ke_atom_eff.cpp +++ b/src/USER-EFF/compute_ke_atom_eff.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; ComputeKEAtomEff::ComputeKEAtomEff(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute ke/atom/eff command"); + if (narg != 3) error->all(FLERR,"Illegal compute ke/atom/eff command"); peratom_flag = 1; size_peratom_cols = 0; @@ -44,7 +44,7 @@ ComputeKEAtomEff::ComputeKEAtomEff(LAMMPS *lmp, int narg, char **arg) : // error check if (!atom->electron_flag) - error->all("Compute ke/atom/eff requires atom style electron"); + error->all(FLERR,"Compute ke/atom/eff requires atom style electron"); } /* ---------------------------------------------------------------------- */ @@ -62,7 +62,7 @@ void ComputeKEAtomEff::init() for (int i = 0; i < modify->ncompute; i++) if (strcmp(modify->compute[i]->style,"ke/atom/eff") == 0) count++; if (count > 1 && comm->me == 0) - error->warning("More than one compute ke/atom/eff"); + error->warning(FLERR,"More than one compute ke/atom/eff"); } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-EFF/compute_ke_eff.cpp b/src/USER-EFF/compute_ke_eff.cpp index 68aaa2c25b..43a2a952f8 100644 --- a/src/USER-EFF/compute_ke_eff.cpp +++ b/src/USER-EFF/compute_ke_eff.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; ComputeKEEff::ComputeKEEff(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute ke/eff command"); + if (narg != 3) error->all(FLERR,"Illegal compute ke/eff command"); scalar_flag = 1; extscalar = 1; @@ -40,7 +40,7 @@ ComputeKEEff::ComputeKEEff(LAMMPS *lmp, int narg, char **arg) : // error check if (!atom->electron_flag) - error->all("Compute ke/eff requires atom style electron"); + error->all(FLERR,"Compute ke/eff requires atom style electron"); } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-EFF/compute_temp_deform_eff.cpp b/src/USER-EFF/compute_temp_deform_eff.cpp index 7bb53b9085..ccba4d782c 100644 --- a/src/USER-EFF/compute_temp_deform_eff.cpp +++ b/src/USER-EFF/compute_temp_deform_eff.cpp @@ -41,10 +41,10 @@ enum{NO_REMAP,X_REMAP,V_REMAP}; // same as fix_deform.cpp ComputeTempDeformEff::ComputeTempDeformEff(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute temp/deform/eff command"); + if (narg != 3) error->all(FLERR,"Illegal compute temp/deform/eff command"); if (!atom->electron_flag) - error->all("Compute temp/deform/eff requires atom style electron"); + error->all(FLERR,"Compute temp/deform/eff requires atom style electron"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -83,12 +83,12 @@ void ComputeTempDeformEff::init() if (strcmp(modify->fix[i]->style,"deform") == 0) { if (((FixDeform *) modify->fix[i])->remapflag == X_REMAP && comm->me == 0) - error->warning("Using compute temp/deform/eff with inconsistent " + error->warning(FLERR,"Using compute temp/deform/eff with inconsistent " "fix deform remap option"); break; } if (i == modify->nfix && comm->me == 0) - error->warning("Using compute temp/deform/eff with no fix deform defined"); + error->warning(FLERR,"Using compute temp/deform/eff with no fix deform defined"); } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-EFF/compute_temp_eff.cpp b/src/USER-EFF/compute_temp_eff.cpp index 4f7cc40c1b..e2089a0d60 100644 --- a/src/USER-EFF/compute_temp_eff.cpp +++ b/src/USER-EFF/compute_temp_eff.cpp @@ -36,7 +36,7 @@ ComputeTempEff::ComputeTempEff(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { if (!atom->electron_flag) - error->all("Compute temp/eff requires atom style electron"); + error->all(FLERR,"Compute temp/eff requires atom style electron"); scalar_flag = vector_flag = 1; size_vector = 6; diff --git a/src/USER-EFF/compute_temp_region_eff.cpp b/src/USER-EFF/compute_temp_region_eff.cpp index 9bcabee2a8..f43e92095f 100644 --- a/src/USER-EFF/compute_temp_region_eff.cpp +++ b/src/USER-EFF/compute_temp_region_eff.cpp @@ -36,13 +36,13 @@ ComputeTempRegionEff::ComputeTempRegionEff(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { if (!atom->electron_flag) - error->all("Compute temp/region/eff requires atom style electron"); + error->all(FLERR,"Compute temp/region/eff requires atom style electron"); - if (narg != 4) error->all("Illegal compute temp/region/eff command"); + if (narg != 4) error->all(FLERR,"Illegal compute temp/region/eff command"); iregion = domain->find_region(arg[3]); if (iregion == -1) - error->all("Region ID for compute temp/region/eff does not exist"); + error->all(FLERR,"Region ID for compute temp/region/eff does not exist"); int n = strlen(arg[3]) + 1; idregion = new char[n]; strcpy(idregion,arg[3]); @@ -76,7 +76,7 @@ void ComputeTempRegionEff::init() iregion = domain->find_region(idregion); if (iregion == -1) - error->all("Region ID for compute temp/region/eff does not exist"); + error->all(FLERR,"Region ID for compute temp/region/eff does not exist"); dof = 0.0; } diff --git a/src/USER-EFF/fix_nh_eff.cpp b/src/USER-EFF/fix_nh_eff.cpp index 70f2544c2d..e3dde84178 100644 --- a/src/USER-EFF/fix_nh_eff.cpp +++ b/src/USER-EFF/fix_nh_eff.cpp @@ -31,7 +31,7 @@ enum{NOBIAS,BIAS}; FixNHEff::FixNHEff(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { if (!atom->electron_flag) - error->all("Fix nvt/nph/npt/eff requires atom style electron"); + error->all(FLERR,"Fix nvt/nph/npt/eff requires atom style electron"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-EFF/fix_nph_eff.cpp b/src/USER-EFF/fix_nph_eff.cpp index 98f76c346c..7cf5be647d 100644 --- a/src/USER-EFF/fix_nph_eff.cpp +++ b/src/USER-EFF/fix_nph_eff.cpp @@ -24,9 +24,9 @@ FixNPHEff::FixNPHEff(LAMMPS *lmp, int narg, char **arg) : FixNHEff(lmp, narg, arg) { if (tstat_flag) - error->all("Temperature control can not be used with fix nph/eff"); + error->all(FLERR,"Temperature control can not be used with fix nph/eff"); if (!pstat_flag) - error->all("Pressure control must be used with fix nph/eff"); + error->all(FLERR,"Pressure control must be used with fix nph/eff"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/USER-EFF/fix_npt_eff.cpp b/src/USER-EFF/fix_npt_eff.cpp index d71a25d461..3b27e9b967 100644 --- a/src/USER-EFF/fix_npt_eff.cpp +++ b/src/USER-EFF/fix_npt_eff.cpp @@ -24,9 +24,9 @@ FixNPTEff::FixNPTEff(LAMMPS *lmp, int narg, char **arg) : FixNHEff(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix npt/eff"); + error->all(FLERR,"Temperature control must be used with fix npt/eff"); if (!pstat_flag) - error->all("Pressure control must be used with fix npt/eff"); + error->all(FLERR,"Pressure control must be used with fix npt/eff"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/USER-EFF/fix_nve_eff.cpp b/src/USER-EFF/fix_nve_eff.cpp index 392f6b7862..1466c777df 100644 --- a/src/USER-EFF/fix_nve_eff.cpp +++ b/src/USER-EFF/fix_nve_eff.cpp @@ -34,7 +34,7 @@ FixNVEEff::FixNVEEff(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (!atom->electron_flag) - error->all("Fix nve/eff requires atom style electron"); + error->all(FLERR,"Fix nve/eff requires atom style electron"); time_integrate = 1; } diff --git a/src/USER-EFF/fix_nvt_eff.cpp b/src/USER-EFF/fix_nvt_eff.cpp index b742b66ee3..a40cd4aefa 100644 --- a/src/USER-EFF/fix_nvt_eff.cpp +++ b/src/USER-EFF/fix_nvt_eff.cpp @@ -26,9 +26,9 @@ FixNVTEff::FixNVTEff(LAMMPS *lmp, int narg, char **arg) : FixNHEff(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix nvt/eff"); + error->all(FLERR,"Temperature control must be used with fix nvt/eff"); if (pstat_flag) - error->all("Pressure control can not be used with fix nvt/eff"); + error->all(FLERR,"Pressure control can not be used with fix nvt/eff"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/USER-EFF/fix_nvt_sllod_eff.cpp b/src/USER-EFF/fix_nvt_sllod_eff.cpp index 435d70c20c..0d38c19049 100644 --- a/src/USER-EFF/fix_nvt_sllod_eff.cpp +++ b/src/USER-EFF/fix_nvt_sllod_eff.cpp @@ -33,9 +33,9 @@ FixNVTSllodEff::FixNVTSllodEff(LAMMPS *lmp, int narg, char **arg) : FixNHEff(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix nvt/sllod/eff"); + error->all(FLERR,"Temperature control must be used with fix nvt/sllod/eff"); if (pstat_flag) - error->all("Pressure control can not be used with fix nvt/sllod/eff"); + error->all(FLERR,"Pressure control can not be used with fix nvt/sllod/eff"); // default values @@ -66,7 +66,7 @@ void FixNVTSllodEff::init() FixNHEff::init(); if (!temperature->tempbias) - error->all("Temperature for fix nvt/sllod/eff does not have a bias"); + error->all(FLERR,"Temperature for fix nvt/sllod/eff does not have a bias"); nondeformbias = 0; if (strcmp(temperature->style,"temp/deform/eff") != 0) nondeformbias = 1; @@ -77,12 +77,12 @@ void FixNVTSllodEff::init() for (i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"deform") == 0) { if (((FixDeform *) modify->fix[i])->remapflag != V_REMAP) - error->all("Using fix nvt/sllod/eff with inconsistent fix deform " + error->all(FLERR,"Using fix nvt/sllod/eff with inconsistent fix deform " "remap option"); break; } if (i == modify->nfix) - error->all("Using fix nvt/sllod/eff with no fix deform defined"); + error->all(FLERR,"Using fix nvt/sllod/eff with no fix deform defined"); } diff --git a/src/USER-EFF/fix_temp_rescale_eff.cpp b/src/USER-EFF/fix_temp_rescale_eff.cpp index e5a0d19be7..b6f4d585f7 100644 --- a/src/USER-EFF/fix_temp_rescale_eff.cpp +++ b/src/USER-EFF/fix_temp_rescale_eff.cpp @@ -39,10 +39,10 @@ enum{NOBIAS,BIAS}; FixTempRescaleEff::FixTempRescaleEff(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 8) error->all("Illegal fix temp/rescale/eff command"); + if (narg < 8) error->all(FLERR,"Illegal fix temp/rescale/eff command"); nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix temp/rescale/eff command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix temp/rescale/eff command"); scalar_flag = 1; global_freq = nevery; @@ -98,7 +98,7 @@ void FixTempRescaleEff::init() { int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix temp/rescale/eff does not exist"); + error->all(FLERR,"Temperature ID for fix temp/rescale/eff does not exist"); temperature = modify->compute[icompute]; if (temperature->tempbias) which = BIAS; @@ -111,7 +111,7 @@ void FixTempRescaleEff::end_of_step() { double t_current = temperature->compute_scalar(); if (t_current == 0.0) - error->all("Computed temperature for fix temp/rescale/eff cannot be 0.0"); + error->all(FLERR,"Computed temperature for fix temp/rescale/eff cannot be 0.0"); double delta = update->ntimestep - update->beginstep; delta /= update->endstep - update->beginstep; @@ -167,7 +167,7 @@ void FixTempRescaleEff::end_of_step() int FixTempRescaleEff::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp/eff") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -178,13 +178,13 @@ int FixTempRescaleEff::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != igroup && comm->me == 0) - error->warning("Group for fix_modify temp != fix group"); + error->warning(FLERR,"Group for fix_modify temp != fix group"); return 2; } return 0; diff --git a/src/USER-EFF/pair_eff_cut.cpp b/src/USER-EFF/pair_eff_cut.cpp index 85d2a1d1af..8f99134239 100644 --- a/src/USER-EFF/pair_eff_cut.cpp +++ b/src/USER-EFF/pair_eff_cut.cpp @@ -34,9 +34,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairEffCut::PairEffCut(LAMMPS *lmp) : Pair(lmp) @@ -694,7 +691,7 @@ void PairEffCut::allocate() void PairEffCut::settings(int narg, char **arg) { if (narg != 1 && narg != 3 && narg != 4 && narg != 7) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); // Defaults ECP parameters for Si PAULI_CORE_A = 0.320852; @@ -714,7 +711,7 @@ void PairEffCut::settings(int narg, char **arg) limit_size_flag = 0; flexible_pressure_flag = 0; if (strcmp(arg[1],"ecp") != 0) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); else { PAULI_CORE_A = force->numeric(arg[2]); PAULI_CORE_B = force->numeric(arg[3]); @@ -725,7 +722,7 @@ void PairEffCut::settings(int narg, char **arg) limit_size_flag = force->inumeric(arg[1]); flexible_pressure_flag = force->inumeric(arg[2]); if (strcmp(arg[3],"ecp") != 0) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); else { PAULI_CORE_A = force->numeric(arg[4]); PAULI_CORE_B = force->numeric(arg[5]); @@ -740,7 +737,7 @@ void PairEffCut::settings(int narg, char **arg) } else if (force->qqr2e==1.0) { // electron units h2e = 1.0; hhmss2e = 1.0; - } else error->all("Check your units"); + } else error->all(FLERR,"Check your units"); // reset cutoffs that have been explicitly set @@ -758,7 +755,7 @@ void PairEffCut::settings(int narg, char **arg) void PairEffCut::coeff(int narg, char **arg) { - if (narg < 2 || narg > 3) error->all("Incorrect args for pair coefficients"); + if (narg < 2 || narg > 3) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -777,7 +774,7 @@ void PairEffCut::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -790,7 +787,7 @@ void PairEffCut::init_style() if (!atom->q_flag || !atom->spin_flag || !atom->eradius_flag || !atom->erforce_flag) - error->all("Pair eff/cut requires atom attributes " + error->all(FLERR,"Pair eff/cut requires atom attributes " "q, spin, eradius, erforce"); // add hook to minimizer for eradius and erforce @@ -802,7 +799,7 @@ void PairEffCut::init_style() if (update->whichflag == 1) { if (force->qqr2e == 332.06371 && update->dt == 1.0) - error->all("You must lower the default real units timestep for pEFF "); + error->all(FLERR,"You must lower the default real units timestep for pEFF "); } // need a half neigh list and optionally a granular history neigh list diff --git a/src/USER-EWALDN/README b/src/USER-EWALDN/README index 77295f017f..e88839bd28 100644 --- a/src/USER-EWALDN/README +++ b/src/USER-EWALDN/README @@ -1,12 +1,6 @@ -The files in this directory are a user-contributed package for LAMMPS. - -The person who created these files is Pieter in' t Veld while at -Sandia. He is now at BASF (pieter.intveld@basf.com). Contact him -directly if you have questions. - This package implements 3 commands which can be used in a LAMMPS input script: pair_style lj/coul, pair_style buck/coul, and kspace_style -ewald/n. See the documentation files for these commands for details. +ewald/n. The "kspace_style ewald/n" command is similar to standard Ewald for charges, but also enables the Lennard-Jones interaction, or any 1/r^N @@ -21,3 +15,9 @@ non-orthogonal (triclinic symmetry) simulation boxes, either for just long-range Coulombic interactions, or for both Coulombic and 1/r^N LJ or Buckingham, which is not currently possible for other kspace styles such as PPPM and ewald. + +See the doc pages for these commands for details. + +The person who created these files is Pieter in' t Veld while at +Sandia. He is now at BASF (pieter.intveld at basf.com). Contact him +directly if you have questions. diff --git a/src/USER-EWALDN/ewald_n.cpp b/src/USER-EWALDN/ewald_n.cpp index d45b90f05d..ed05ca5044 100644 --- a/src/USER-EWALDN/ewald_n.cpp +++ b/src/USER-EWALDN/ewald_n.cpp @@ -44,7 +44,7 @@ enum{GEOMETRIC,ARITHMETIC,SIXTHPOWER}; // same as in pair.cpp EwaldN::EwaldN(LAMMPS *lmp, int narg, char **arg) : KSpace(lmp, narg, arg) { - if (narg!=1) error->all(KSPACE_ILLEGAL); + if (narg!=1) error->all(FLERR,KSPACE_ILLEGAL); precision = fabs(atof(arg[0])); memset(function, 0, EWALD_NORDER*sizeof(int)); kenergy = kvirial = NULL; @@ -78,13 +78,13 @@ void EwaldN::init() } if (domain->dimension == 2) // check for errors - error->all("Cannot use EwaldN with 2d simulation"); + error->all(FLERR,"Cannot use EwaldN with 2d simulation"); if (slabflag == 0 && domain->nonperiodic > 0) - error->all("Cannot use nonperiodic boundaries with EwaldN"); + error->all(FLERR,"Cannot use nonperiodic boundaries with EwaldN"); if (slabflag == 1) { if (domain->xperiodic != 1 || domain->yperiodic != 1 || domain->boundary[2][0] != 1 || domain->boundary[2][1] != 1) - error->all("Incorrect boundaries with slab EwaldN"); + error->all(FLERR,"Incorrect boundaries with slab EwaldN"); } qqrd2e = force->qqrd2e; // check pair_style @@ -98,7 +98,7 @@ void EwaldN::init() int *ptr = pair ? (int *) pair->extract("ewald_order",tmp) : NULL; double *cutoff = pair ? (double *) pair->extract("cut_coul",tmp) : NULL; if (!(ptr||cutoff)) - error->all("KSpace style is incompatible with Pair style"); + error->all(FLERR,"KSpace style is incompatible with Pair style"); int ewald_order = ptr ? *((int *) ptr) : 1<<1; int ewald_mix = ptr ? *((int *) pair->extract("ewald_mix",tmp)) : GEOMETRIC; memset(function, 0, EWALD_NFUNCS*sizeof(int)); @@ -115,10 +115,10 @@ void EwaldN::init() if (ewald_mix==GEOMETRIC) { k = 1; break; } else if (ewald_mix==ARITHMETIC) { k = 2; break; } sprintf(str, "%s pair_style %s", KSPACE_MIX, force->pair_style); - error->all(str); + error->all(FLERR,str); default: sprintf(str, "%s pair_style %s", KSPACE_ORDER, force->pair_style); - error->all(str); + error->all(FLERR,str); } nfunctions += function[k] = 1; nsums += n[k]; @@ -309,7 +309,7 @@ void EwaldN::init_coeffs() // local pair coeffs double **epsilon = (double **) force->pair->extract("epsilon",tmp); double **sigma = (double **) force->pair->extract("sigma",tmp); if (!(epsilon&&sigma)) - error->all("epsilon or sigma reference not set by pair style in ewald/n"); + error->all(FLERR,"epsilon or sigma reference not set by pair style in ewald/n"); double eps_i, sigma_i, sigma_n, *bi = B = new double[7*n+7]; double c[7] = { 1.0, sqrt(6.0), sqrt(15.0), sqrt(20.0), sqrt(15.0), sqrt(6.0), 1.0}; diff --git a/src/USER-EWALDN/math_vector.h b/src/USER-EWALDN/math_vector.h index 90fc7ee464..b7473b5d89 100644 --- a/src/USER-EWALDN/math_vector.h +++ b/src/USER-EWALDN/math_vector.h @@ -19,6 +19,7 @@ #define LMP_MATH_VECTOR_H #include "math.h" +#include "string.h" #define VECTOR_NULL {0, 0, 0} #define SHAPE_NULL {0, 0, 0, 0, 0, 0} diff --git a/src/USER-EWALDN/pair_buck_coul.cpp b/src/USER-EWALDN/pair_buck_coul.cpp index bb2f4f0ed0..74e9e56476 100644 --- a/src/USER-EWALDN/pair_buck_coul.cpp +++ b/src/USER-EWALDN/pair_buck_coul.cpp @@ -36,9 +36,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -72,10 +69,10 @@ void PairBuckCoul::options(char **arg, int order) char *option[] = {"long", "cut", "off", NULL}; int i; - if (!*arg) error->all(PAIR_ILLEGAL); + if (!*arg) error->all(FLERR,PAIR_ILLEGAL); for (i=0; option[i]&&strcmp(arg[0], option[i]); ++i); switch (i) { - default: error->all(PAIR_ILLEGAL); + default: error->all(FLERR,PAIR_ILLEGAL); case 0: ewald_order |= 1<all("Illegal pair_style command"); + if (narg != 3 && narg != 4) error->all(FLERR,"Illegal pair_style command"); ewald_order = 0; ewald_off = 0; options(arg, 6); options(++arg, 1); - if (!comm->me && ewald_order&(1<<6)) error->warning(PAIR_MIX); - if (!comm->me && ewald_order==((1<<1)|(1<<6))) error->warning(PAIR_LARGEST); - if (!*(++arg)) error->all(PAIR_MISSING); - if (ewald_off&(1<<6)) error->all(PAIR_LJ_OFF); - if (!((ewald_order^ewald_off)&(1<<1))) error->all(PAIR_COUL_CUT); + if (!comm->me && ewald_order&(1<<6)) error->warning(FLERR,PAIR_MIX); + if (!comm->me && ewald_order==((1<<1)|(1<<6))) error->warning(FLERR,PAIR_LARGEST); + if (!*(++arg)) error->all(FLERR,PAIR_MISSING); + if (ewald_off&(1<<6)) error->all(FLERR,PAIR_LJ_OFF); + if (!((ewald_order^ewald_off)&(1<<1))) error->all(FLERR,PAIR_COUL_CUT); cut_buck_global = force->numeric(*(arg++)); - if (*arg&&(ewald_order&0x42==0x42)) error->all(PAIR_CUTOFF); + if (*arg&&(ewald_order&0x42==0x42)) error->all(FLERR,PAIR_CUTOFF); if (narg == 4) cut_coul = force->numeric(*arg); else cut_coul = cut_buck_global; @@ -191,7 +188,7 @@ void *PairBuckCoul::extract(char *id, int &dim) void PairBuckCoul::coeff(int narg, char **arg) { - if (narg < 5 || narg > 6) error->all("Incorrect args for pair coefficients"); + if (narg < 5 || narg > 6) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -217,7 +214,7 @@ void PairBuckCoul::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -230,7 +227,7 @@ void PairBuckCoul::init_style() // require an atom style with charge defined if (!atom->q_flag && (ewald_order&(1<<1))) - error->all( + error->all(FLERR, "Invoking coulombic in pair style lj/coul requires atom attribute q"); // request regular or rRESPA neighbor lists @@ -282,12 +279,12 @@ void PairBuckCoul::init_style() if (ewald_order&(1<<1)) { // r^-1 kspace if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; } if (ewald_order&(1<<6)) { // r^-6 kspace if (!force->kspace && strcmp(force->kspace_style,"ewald/n")) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); g_ewald = force->kspace->g_ewald; } @@ -315,7 +312,7 @@ void PairBuckCoul::init_list(int id, NeighList *ptr) double PairBuckCoul::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); cut_buck[i][j] = cut_buck_read[i][j]; buck_a[i][j] = buck_a_read[i][j]; @@ -333,7 +330,7 @@ double PairBuckCoul::init_one(int i, int j) // check interior rRESPA cutoff if (cut_respa && MIN(cut_buck[i][j],cut_coul) < cut_respa[3]) - error->all("Pair cutoff < Respa interior cutoff"); + error->all(FLERR,"Pair cutoff < Respa interior cutoff"); if (offset_flag) { double rexp = exp(-cut_buck[i][j]/buck_rho[i][j]); diff --git a/src/USER-EWALDN/pair_lj_coul.cpp b/src/USER-EWALDN/pair_lj_coul.cpp index b6ee94bbda..4e1692680f 100644 --- a/src/USER-EWALDN/pair_lj_coul.cpp +++ b/src/USER-EWALDN/pair_lj_coul.cpp @@ -36,9 +36,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EWALD_F 1.12837917 #define EWALD_P 0.3275911 #define A1 0.254829592 @@ -71,10 +68,10 @@ void PairLJCoul::options(char **arg, int order) char *option[] = {"long", "cut", "off", NULL}; int i; - if (!*arg) error->all(PAIR_ILLEGAL); + if (!*arg) error->all(FLERR,PAIR_ILLEGAL); for (i=0; option[i]&&strcmp(arg[0], option[i]); ++i); switch (i) { - default: error->all(PAIR_ILLEGAL); + default: error->all(FLERR,PAIR_ILLEGAL); case 0: ewald_order |= 1<all("Illegal pair_style command"); + if (narg != 3 && narg != 4) error->all(FLERR,"Illegal pair_style command"); ewald_off = 0; ewald_order = 0; options(arg, 6); options(++arg, 1); - if (!comm->me && ewald_order&(1<<6)) error->warning(PAIR_MIX); - if (!comm->me && ewald_order==((1<<1)|(1<<6))) error->warning(PAIR_LARGEST); - if (!*(++arg)) error->all(PAIR_MISSING); - if (!((ewald_order^ewald_off)&(1<<1))) error->all(PAIR_COUL_CUT); + if (!comm->me && ewald_order&(1<<6)) error->warning(FLERR,PAIR_MIX); + if (!comm->me && ewald_order==((1<<1)|(1<<6))) error->warning(FLERR,PAIR_LARGEST); + if (!*(++arg)) error->all(FLERR,PAIR_MISSING); + if (!((ewald_order^ewald_off)&(1<<1))) error->all(FLERR,PAIR_COUL_CUT); cut_lj_global = force->numeric(*(arg++)); - if (*arg&&(ewald_order&0x42==0x42)) error->all(PAIR_CUTOFF); + if (*arg&&(ewald_order&0x42==0x42)) error->all(FLERR,PAIR_CUTOFF); if (narg == 4) cut_coul = force->numeric(*arg); else cut_coul = cut_lj_global; @@ -188,7 +185,7 @@ void *PairLJCoul::extract(char *id, int &dim) void PairLJCoul::coeff(int narg, char **arg) { - if (narg < 4 || narg > 5) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 5) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -212,7 +209,7 @@ void PairLJCoul::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -228,7 +225,7 @@ void PairLJCoul::init_style() // require an atom style with charge defined if (!atom->q_flag && (ewald_order&(1<<1))) - error->all( + error->all(FLERR, "Invoking coulombic in pair style lj/coul requires atom attribute q"); // request regular or rRESPA neighbor lists @@ -280,15 +277,15 @@ void PairLJCoul::init_style() if (ewald_order&(1<<1)) { // r^-1 kspace if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); for (i=0; style1[i]&&strcmp(force->kspace_style, style1[i]); ++i); - if (!style1[i]) error->all("Pair style is incompatible with KSpace style"); + if (!style1[i]) error->all(FLERR,"Pair style is incompatible with KSpace style"); } if (ewald_order&(1<<6)) { // r^-6 kspace if (force->kspace == NULL) - error->all("Pair style is incompatible with KSpace style"); + error->all(FLERR,"Pair style is incompatible with KSpace style"); for (i=0; style6[i]&&strcmp(force->kspace_style, style6[i]); ++i); - if (!style6[i]) error->all("Pair style is incompatible with KSpace style"); + if (!style6[i]) error->all(FLERR,"Pair style is incompatible with KSpace style"); } if (force->kspace) g_ewald = force->kspace->g_ewald; @@ -343,7 +340,7 @@ double PairLJCoul::init_one(int i, int j) // check interior rRESPA cutoff if (cut_respa && MIN(cut_lj[i][j],cut_coul) < cut_respa[3]) - error->all("Pair cutoff < Respa interior cutoff"); + error->all(FLERR,"Pair cutoff < Respa interior cutoff"); if (offset_flag) { double ratio = sigma[i][j] / cut_lj[i][j]; diff --git a/src/USER-MISC/Install.sh b/src/USER-MISC/Install.sh index 68bc6d280a..d15156fdbd 100644 --- a/src/USER-MISC/Install.sh +++ b/src/USER-MISC/Install.sh @@ -14,6 +14,7 @@ if (test $1 = 1) then cp fix_smd.cpp .. cp pair_cdeam.cpp .. cp pair_dipole_sf.cpp .. + cp pair_edip.cpp .. cp pair_lj_sf.cpp .. cp angle_cosine_shift.h .. @@ -28,6 +29,7 @@ if (test $1 = 1) then cp fix_smd.h .. cp pair_cdeam.h .. cp pair_dipole_sf.h .. + cp pair_edip.h .. cp pair_lj_sf.h .. elif (test $1 = 0) then @@ -44,6 +46,7 @@ elif (test $1 = 0) then rm -f ../fix_smd.cpp rm -f ../pair_cdeam.cpp rm -f ../pair_dipole_sf.cpp + rm -f ../pair_edip.cpp rm -f ../pair_lj_sf.cpp rm -f ../angle_cosine_shift.h @@ -58,6 +61,7 @@ elif (test $1 = 0) then rm -f ../fix_smd.h rm -f ../pair_cdeam.h rm -f ../pair_dipole_sf.h + rm -f ../pair_edip.h rm -f ../pair_lj_sf.h fi diff --git a/src/USER-MISC/README b/src/USER-MISC/README index d3724d17b4..5eb9f8de3d 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -1,18 +1,20 @@ -The files in this directory are a potpourri of (mostly) unrelated +The files in this package are a potpourri of (mostly) unrelated features contributed to LAMMPS by users. Each feature is a single -file (actually a *.cpp and *.h file). +pair of files (*.cpp and *.h). More information about each feature can be found by reading its doc -page in the LAMMPS doc directory. This link points to the doc -page for all LAMMPS input script commands: +page in the LAMMPS doc directory. The doc page which lists all LAMMPS +input script commands is as follows: -http://lammps.sandia.gov/doc/Section_commands.html#3_5\ +doc/Section_commands.html, subsection 3.5 User-contributed features are listed at the bottom of the fix, compute, pair, etc sections. -You should contact the author if you have specific questions about the -feature or its code. +The list of features and author of each is given below. + +You should contact the author directly if you have specific questions +about the feature or its coding. ------------------------------------------------------------ @@ -26,6 +28,7 @@ dihedral_style cosine/shift/exp, Carsten Svaneborg, science at zqex.dk, 8 Aug 11 fix addtorque, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11 fix imd, Axel Kohlmeyer, akohlmey at gmail.com, 9 Nov 2009 fix smd, Axel Kohlmeyer, akohlmey at gmail.com, 19 May 2008 -pair dipole/sf, Mario Orsi, orsimario at gmail.com, 8 Aug 11 -pair eam/cd, Alexander Stukowski, stukowski at mm.tu-darmstadt.de, -pair lj/sf, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11 +pair_style dipole/sf, Mario Orsi, orsimario at gmail.com, 8 Aug 11 +pair_style edip, Luca Ferraro, luca.ferraro at caspur.it, 15 Sep 11 +pair_style eam/cd, Alexander Stukowski, stukowski at mm.tu-darmstadt.de, 7 Nov 09 +pair_style lj/sf, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11 diff --git a/src/USER-MISC/angle_cosine_shift.cpp b/src/USER-MISC/angle_cosine_shift.cpp index 4c6c7cf74a..2fa2ad2b96 100644 --- a/src/USER-MISC/angle_cosine_shift.cpp +++ b/src/USER-MISC/angle_cosine_shift.cpp @@ -168,7 +168,7 @@ void AngleCosineShift::allocate() void AngleCosineShift::coeff(int narg, char **arg) { - if (narg != 3) error->all("Incorrect args for angle coefficients"); + if (narg != 3) error->all(FLERR,"Incorrect args for angle coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -190,7 +190,7 @@ void AngleCosineShift::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for angle coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients"); } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-MISC/angle_cosine_shift.h b/src/USER-MISC/angle_cosine_shift.h index ce44ea3045..d8b7ea1741 100644 --- a/src/USER-MISC/angle_cosine_shift.h +++ b/src/USER-MISC/angle_cosine_shift.h @@ -28,7 +28,7 @@ namespace LAMMPS_NS { class AngleCosineShift : public Angle { public: AngleCosineShift(class LAMMPS *); - ~AngleCosineShift(); + virtual ~AngleCosineShift(); virtual void compute(int, int); void coeff(int, char **); double equilibrium_angle(int); @@ -36,7 +36,7 @@ class AngleCosineShift : public Angle { void read_restart(FILE *); double single(int, int, int, int); - private: + protected: double *k; double *a; double *theta; diff --git a/src/USER-MISC/angle_cosine_shift_exp.cpp b/src/USER-MISC/angle_cosine_shift_exp.cpp index 7cbfd5bcfc..031cfec563 100644 --- a/src/USER-MISC/angle_cosine_shift_exp.cpp +++ b/src/USER-MISC/angle_cosine_shift_exp.cpp @@ -57,7 +57,7 @@ void AngleCosineShiftExp::compute(int eflag, int vflag) int i1,i2,i3,n,type; double delx1,dely1,delz1,delx2,dely2,delz2; double eangle,f1[3],f3[3],ff; - double rsq1,rsq2,r1,r2,c,s,cc,ss,a11,a12,a22; + double rsq1,rsq2,r1,r2,c,s,a11,a12,a22; double exp2,aa,uumin,cccpsss,cssmscc; eangle = 0.0; @@ -190,7 +190,7 @@ void AngleCosineShiftExp::allocate() void AngleCosineShiftExp::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for angle coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for angle coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -215,7 +215,7 @@ void AngleCosineShiftExp::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for angle coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients"); } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-MISC/angle_cosine_shift_exp.h b/src/USER-MISC/angle_cosine_shift_exp.h index c51ece7c44..50883dc034 100644 --- a/src/USER-MISC/angle_cosine_shift_exp.h +++ b/src/USER-MISC/angle_cosine_shift_exp.h @@ -26,15 +26,15 @@ namespace LAMMPS_NS { class AngleCosineShiftExp : public Angle { public: AngleCosineShiftExp(class LAMMPS *); - ~AngleCosineShiftExp(); - void compute(int, int); + virtual ~AngleCosineShiftExp(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_angle(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, int, int, int); - private: + protected: bool *doExpansion; double *umin,*a,*opt1; double *theta0; diff --git a/src/USER-MISC/bond_harmonic_shift.cpp b/src/USER-MISC/bond_harmonic_shift.cpp index b051c7dff5..958dad69f8 100644 --- a/src/USER-MISC/bond_harmonic_shift.cpp +++ b/src/USER-MISC/bond_harmonic_shift.cpp @@ -125,7 +125,7 @@ void BondHarmonicShift::allocate() void BondHarmonicShift::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for bond coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for bond coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -144,7 +144,7 @@ void BondHarmonicShift::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for bond coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-MISC/bond_harmonic_shift.h b/src/USER-MISC/bond_harmonic_shift.h index 91bb723323..b3378aea3f 100644 --- a/src/USER-MISC/bond_harmonic_shift.h +++ b/src/USER-MISC/bond_harmonic_shift.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class BondHarmonicShift : public Bond { public: BondHarmonicShift(class LAMMPS *); - ~BondHarmonicShift(); - void compute(int, int); + virtual ~BondHarmonicShift(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_distance(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, double, int, int); - private: + protected: double *k,*r0,*r1; void allocate(); diff --git a/src/USER-MISC/bond_harmonic_shift_cut.cpp b/src/USER-MISC/bond_harmonic_shift_cut.cpp index 68f622488f..da78a54aed 100644 --- a/src/USER-MISC/bond_harmonic_shift_cut.cpp +++ b/src/USER-MISC/bond_harmonic_shift_cut.cpp @@ -126,7 +126,7 @@ void BondHarmonicShiftCut::allocate() void BondHarmonicShiftCut::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for bond coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for bond coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -145,7 +145,7 @@ void BondHarmonicShiftCut::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for bond coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-MISC/bond_harmonic_shift_cut.h b/src/USER-MISC/bond_harmonic_shift_cut.h index 7bb63ca64b..6e957d286c 100644 --- a/src/USER-MISC/bond_harmonic_shift_cut.h +++ b/src/USER-MISC/bond_harmonic_shift_cut.h @@ -28,15 +28,15 @@ namespace LAMMPS_NS { class BondHarmonicShiftCut : public Bond { public: BondHarmonicShiftCut(class LAMMPS *); - ~BondHarmonicShiftCut(); - void compute(int, int); + virtual ~BondHarmonicShiftCut(); + virtual void compute(int, int); void coeff(int, char **); double equilibrium_distance(int); void write_restart(FILE *); void read_restart(FILE *); double single(int, double, int, int); - private: + protected: double *k,*r0,*r1; void allocate(); diff --git a/src/USER-MISC/compute_ackland_atom.cpp b/src/USER-MISC/compute_ackland_atom.cpp index fa50b5f9d2..33b2d8a8e0 100644 --- a/src/USER-MISC/compute_ackland_atom.cpp +++ b/src/USER-MISC/compute_ackland_atom.cpp @@ -40,7 +40,7 @@ enum{UNKNOWN,BCC,FCC,HCP,ICO}; ComputeAcklandAtom::ComputeAcklandAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute ackland/atom command"); + if (narg != 3) error->all(FLERR,"Illegal compute ackland/atom command"); peratom_flag = 1; size_peratom_cols = 0; @@ -82,7 +82,7 @@ void ComputeAcklandAtom::init() for (int i = 0; i < modify->ncompute; i++) if (strcmp(modify->compute[i]->style,"ackland/atom") == 0) count++; if (count > 1 && comm->me == 0) - error->warning("More than one compute ackland/atom"); + error->warning(FLERR,"More than one compute ackland/atom"); } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-MISC/compute_temp_rotate.cpp b/src/USER-MISC/compute_temp_rotate.cpp index 60f704e4e2..539683f4f4 100644 --- a/src/USER-MISC/compute_temp_rotate.cpp +++ b/src/USER-MISC/compute_temp_rotate.cpp @@ -32,15 +32,12 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ ComputeTempRotate::ComputeTempRotate(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute temp/rotate command"); + if (narg != 3) error->all(FLERR,"Illegal compute temp/rotate command"); scalar_flag = vector_flag = 1; size_vector = 6; diff --git a/src/USER-MISC/dihedral_cosine_shift_exp.cpp b/src/USER-MISC/dihedral_cosine_shift_exp.cpp index 88258b430c..29e15fe6ce 100644 --- a/src/USER-MISC/dihedral_cosine_shift_exp.cpp +++ b/src/USER-MISC/dihedral_cosine_shift_exp.cpp @@ -144,7 +144,7 @@ void DihedralCosineShiftExp::compute(int eflag, int vflag) sprintf(str,"Dihedral problem: %d " BIGINT_FORMAT " %d %d %d %d", me,update->ntimestep, atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); - error->warning(str,0); + error->warning(FLERR,str,0); fprintf(screen," 1st atom: %d %g %g %g\n", me,x[i1][0],x[i1][1],x[i1][2]); fprintf(screen," 2nd atom: %d %g %g %g\n", @@ -273,7 +273,7 @@ void DihedralCosineShiftExp::allocate() void DihedralCosineShiftExp::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for dihedral coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for dihedral coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -298,7 +298,7 @@ void DihedralCosineShiftExp::coeff(int narg, char **arg) count++; } - if (count == 0) error->all("Incorrect args for dihedral coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for dihedral coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-MISC/dihedral_cosine_shift_exp.h b/src/USER-MISC/dihedral_cosine_shift_exp.h index 5691bff9ad..3e77bf4914 100644 --- a/src/USER-MISC/dihedral_cosine_shift_exp.h +++ b/src/USER-MISC/dihedral_cosine_shift_exp.h @@ -28,13 +28,13 @@ namespace LAMMPS_NS { class DihedralCosineShiftExp : public Dihedral { public: DihedralCosineShiftExp(class LAMMPS *); - ~DihedralCosineShiftExp(); - void compute(int, int); + virtual ~DihedralCosineShiftExp(); + virtual void compute(int, int); void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - private: + protected: bool *doExpansion; double *umin,*a,*opt1; double *sint; diff --git a/src/USER-MISC/fix_addtorque.cpp b/src/USER-MISC/fix_addtorque.cpp index e12a4658b4..bf1a8b58aa 100644 --- a/src/USER-MISC/fix_addtorque.cpp +++ b/src/USER-MISC/fix_addtorque.cpp @@ -39,7 +39,7 @@ enum{NONE,CONSTANT,EQUAL,ATOM}; FixAddTorque::FixAddTorque(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 6) error->all("Illegal fix addtorque command"); + if (narg != 6) error->all(FLERR,"Illegal fix addtorque command"); scalar_flag = 1; vector_flag = 1; @@ -108,21 +108,21 @@ void FixAddTorque::init() if (xstr) { xvar = input->variable->find(xstr); - if (xvar < 0) error->all("Variable name for fix addtorque does not exist"); + if (xvar < 0) error->all(FLERR,"Variable name for fix addtorque does not exist"); if (input->variable->equalstyle(xvar)) xstyle = EQUAL; - else error->all("Variable for fix addtorque is invalid style"); + else error->all(FLERR,"Variable for fix addtorque is invalid style"); } if (ystr) { yvar = input->variable->find(ystr); - if (yvar < 0) error->all("Variable name for fix addtorque does not exist"); + if (yvar < 0) error->all(FLERR,"Variable name for fix addtorque does not exist"); if (input->variable->equalstyle(yvar)) ystyle = EQUAL; - else error->all("Variable for fix addtorque is invalid style"); + else error->all(FLERR,"Variable for fix addtorque is invalid style"); } if (zstr) { zvar = input->variable->find(zstr); - if (zvar < 0) error->all("Variable name for fix addtorque does not exist"); + if (zvar < 0) error->all(FLERR,"Variable name for fix addtorque does not exist"); if (input->variable->equalstyle(zvar)) zstyle = EQUAL; - else error->all("Variable for fix addtorque is invalid style"); + else error->all(FLERR,"Variable for fix addtorque is invalid style"); } if (xstyle == EQUAL || ystyle == EQUAL || zstyle == EQUAL) diff --git a/src/USER-MISC/fix_imd.cpp b/src/USER-MISC/fix_imd.cpp index 3b34ac69b6..462883a207 100644 --- a/src/USER-MISC/fix_imd.cpp +++ b/src/USER-MISC/fix_imd.cpp @@ -444,11 +444,11 @@ FixIMD::FixIMD(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg < 4) - error->all("Illegal fix imd command"); + error->all(FLERR,"Illegal fix imd command"); imd_port = atoi(arg[3]); if (imd_port < 1024) - error->all("Illegal fix imd parameter: port < 1024"); + error->all(FLERR,"Illegal fix imd parameter: port < 1024"); /* default values for optional flags */ unwrap_flag = 0; @@ -477,17 +477,17 @@ FixIMD::FixIMD(LAMMPS *lmp, int narg, char **arg) : } else if (0 == strcmp(arg[argsdone], "trate")) { imd_trate = atoi(arg[argsdone+1]); } else { - error->all("Unknown fix imd parameter"); + error->all(FLERR,"Unknown fix imd parameter"); } ++argsdone; ++argsdone; } /* sanity check on parameters */ if (imd_trate < 1) - error->all("Illegal fix imd parameter. trate < 1."); + error->all(FLERR,"Illegal fix imd parameter. trate < 1."); bigint n = group->count(igroup); - if (n > MAXSMALLINT) error->all("Too many atoms for fix imd"); + if (n > MAXSMALLINT) error->all(FLERR,"Too many atoms for fix imd"); num_coords = static_cast (n); MPI_Comm_rank(world,&me); @@ -522,7 +522,7 @@ FixIMD::FixIMD(LAMMPS *lmp, int narg, char **arg) : } MPI_Bcast(&imd_terminate, 1, MPI_INT, 0, world); if (imd_terminate) - error->all("LAMMPS Terminated on error in IMD."); + error->all(FLERR,"LAMMPS Terminated on error in IMD."); /* storage required to communicate a single coordinate or force. */ size_one = sizeof(struct commdata); @@ -702,7 +702,7 @@ void FixIMD::setup(int) MPI_Bcast(&imd_inactive, 1, MPI_INT, 0, world); MPI_Bcast(&imd_terminate, 1, MPI_INT, 0, world); if (imd_terminate) - error->all("LAMMPS terminated on error in setting up IMD connection."); + error->all(FLERR,"LAMMPS terminated on error in setting up IMD connection."); /* initialize and build hashtable. */ inthash_t *hashtable=new inthash_t; @@ -815,7 +815,7 @@ void FixIMD::post_force(int vflag) MPI_Bcast(&imd_inactive, 1, MPI_INT, 0, world); MPI_Bcast(&imd_terminate, 1, MPI_INT, 0, world); if (imd_terminate) - error->all("LAMMPS terminated on error in setting up IMD connection."); + error->all(FLERR,"LAMMPS terminated on error in setting up IMD connection."); if (imd_inactive) return; /* IMD client has detached and not yet come back. do nothing. */ } @@ -951,7 +951,7 @@ void FixIMD::post_force(int vflag) MPI_Bcast(&imd_forces, 1, MPI_INT, 0, world); MPI_Bcast(&imd_terminate, 1, MPI_INT, 0, world); if (imd_terminate) - error->all("LAMMPS terminated on IMD request."); + error->all(FLERR,"LAMMPS terminated on IMD request."); if (imd_forces > 0) { /* check if we need to readjust the forces comm buffer on the receiving nodes. */ @@ -1234,7 +1234,7 @@ void *imdsock_accept(void * v) { #elif defined(SOCKLEN_T) SOCKLEN_T len; #define _SOCKLEN_TYPE SOCKLEN_T -#elif defined(_POSIX_SOURCE) +#elif defined(_POSIX_SOURCE) || (defined(__APPLE__) && defined(__MACH__)) || defined(__linux) socklen_t len; #define _SOCKLEN_TYPE socklen_t #else diff --git a/src/USER-MISC/fix_smd.cpp b/src/USER-MISC/fix_smd.cpp index 4d251d3fe3..836a11cd64 100644 --- a/src/USER-MISC/fix_smd.cpp +++ b/src/USER-MISC/fix_smd.cpp @@ -57,20 +57,20 @@ FixSMD::FixSMD(LAMMPS *lmp, int narg, char **arg) : int argoffs=3; if (strcmp(arg[argoffs],"cvel") == 0) { - if (narg < argoffs+3) error->all("Illegal fix smd command"); + if (narg < argoffs+3) error->all(FLERR,"Illegal fix smd command"); styleflag |= SMD_CVEL; k_smd = atof(arg[argoffs+1]); v_smd = atof(arg[argoffs+2]); // to be multiplied by update->dt when used. argoffs += 3; } else if (strcmp(arg[argoffs],"cfor") == 0) { - if (narg < argoffs+2) error->all("Illegal fix smd command"); + if (narg < argoffs+2) error->all(FLERR,"Illegal fix smd command"); styleflag |= SMD_CFOR; f_smd = atof(arg[argoffs+1]); argoffs += 2; - } else error->all("Illegal fix smd command"); + } else error->all(FLERR,"Illegal fix smd command"); if (strcmp(arg[argoffs],"tether") == 0) { - if (narg < argoffs+5) error->all("Illegal fix smd command"); + if (narg < argoffs+5) error->all(FLERR,"Illegal fix smd command"); styleflag |= SMD_TETHER; if (strcmp(arg[argoffs+1],"NULL") == 0) xflag = 0; else xc = atof(arg[argoffs+1]); @@ -79,16 +79,16 @@ FixSMD::FixSMD(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[argoffs+3],"NULL") == 0) zflag = 0; else zc = atof(arg[argoffs+3]); r0 = atof(arg[argoffs+4]); - if (r0 < 0) error->all("R0 < 0 for fix smd command"); + if (r0 < 0) error->all(FLERR,"R0 < 0 for fix smd command"); argoffs += 5; } else if (strcmp(arg[argoffs],"couple") == 0) { - if (narg < argoffs+6) error->all("Illegal fix smd command"); + if (narg < argoffs+6) error->all(FLERR,"Illegal fix smd command"); styleflag |= SMD_COUPLE; igroup2 = group->find(arg[argoffs+1]); if (igroup2 == -1) - error->all("Could not find fix smd couple group ID"); + error->all(FLERR,"Could not find fix smd couple group ID"); if (igroup2 == igroup) - error->all("Two groups cannot be the same in fix smd couple"); + error->all(FLERR,"Two groups cannot be the same in fix smd couple"); group2bit = group->bitmask[igroup2]; if (strcmp(arg[argoffs+2],"NULL") == 0) xflag = 0; @@ -102,9 +102,9 @@ FixSMD::FixSMD(LAMMPS *lmp, int narg, char **arg) : else zc = atof(arg[argoffs+4]); r0 = atof(arg[argoffs+5]); - if (r0 < 0) error->all("R0 < 0 for fix smd command"); + if (r0 < 0) error->all(FLERR,"R0 < 0 for fix smd command"); argoffs +=6; - } else error->all("Illegal fix smd command"); + } else error->all(FLERR,"Illegal fix smd command"); force_flag = 0; ftotal[0] = ftotal[1] = ftotal[2] = 0.0; diff --git a/src/USER-MISC/pair_cdeam.cpp b/src/USER-MISC/pair_cdeam.cpp index 2d0e224f1c..4da0065ae7 100644 --- a/src/USER-MISC/pair_cdeam.cpp +++ b/src/USER-MISC/pair_cdeam.cpp @@ -41,7 +41,7 @@ using namespace LAMMPS_NS; inline void my_failure(Error* error, const char* file, int line) { char str[1024]; sprintf(str,"Assertion failure: File %s, line %i", file, line); - error->one(str); + error->one(FLERR,str); } #else #define ASSERT(cond) @@ -52,6 +52,8 @@ using namespace LAMMPS_NS; PairCDEAM::PairCDEAM(LAMMPS *lmp, int _cdeamVersion) : PairEAM(lmp), PairEAMAlloy(lmp), cdeamVersion(_cdeamVersion) { single_enable = 0; + restartinfo = 0; + rhoB = NULL; D_values = NULL; hcoeff = NULL; @@ -66,7 +68,7 @@ PairCDEAM::PairCDEAM(LAMMPS *lmp, int _cdeamVersion) : PairEAM(lmp), PairEAMAllo comm_reverse = 2; } else { - error->all("Invalid CD-EAM potential version."); + error->all(FLERR,"Invalid CD-EAM potential version."); } } @@ -202,7 +204,7 @@ void PairCDEAM::compute(int eflag, int vflag) // //for(i = 0; i < nlocal + atom->nghost; i++) { // if(rho[i] == 0 && (type[i] == speciesA || type[i] == speciesB)) - // error->one("CD-EAM potential routine: Detected atom with zero electron density."); + // error->one(FLERR,"CD-EAM potential routine: Detected atom with zero electron density."); //} // Stage II @@ -421,7 +423,7 @@ void PairCDEAM::coeff(int narg, char **arg) // Make sure the EAM file is a CD-EAM binary alloy. if(setfl->nelements < 2) - error->all("The EAM file must contain at least 2 elements to be used with the eam/cd pair style."); + error->all(FLERR,"The EAM file must contain at least 2 elements to be used with the eam/cd pair style."); // Read in the coefficients of the h polynomial from the end of the EAM file. read_h_coeff(arg[2]); @@ -434,19 +436,19 @@ void PairCDEAM::coeff(int narg, char **arg) for(int i = 1; i <= atom->ntypes; i++) { if(map[i] == 0) { if(speciesA >= 0) - error->all("The first element from the EAM file may only be mapped to a single atom type."); + error->all(FLERR,"The first element from the EAM file may only be mapped to a single atom type."); speciesA = i; } if(map[i] == 1) { if(speciesB >= 0) - error->all("The second element from the EAM file may only be mapped to a single atom type."); + error->all(FLERR,"The second element from the EAM file may only be mapped to a single atom type."); speciesB = i; } } if(speciesA < 0) - error->all("The first element from the EAM file must be mapped to exactly one atom type."); + error->all(FLERR,"The first element from the EAM file must be mapped to exactly one atom type."); if(speciesB < 0) - error->all("The second element from the EAM file must be mapped to exactly one atom type."); + error->all(FLERR,"The second element from the EAM file must be mapped to exactly one atom type."); } /* ---------------------------------------------------------------------- @@ -463,7 +465,7 @@ void PairCDEAM::read_h_coeff(char *filename) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open EAM potential file %s", filename); - error->one(str); + error->one(FLERR,str); } // h coefficients are stored at the end of the file. @@ -480,7 +482,7 @@ void PairCDEAM::read_h_coeff(char *filename) hcoeff[i++] = atof(ptr); } if(i != nhcoeff || nhcoeff < 1) - error->one("Failed to read h(x) function coefficients from EAM file."); + error->one(FLERR,"Failed to read h(x) function coefficients from EAM file."); // Close the potential file. fclose(fp); diff --git a/src/USER-MISC/pair_cdeam.h b/src/USER-MISC/pair_cdeam.h index e39923d568..836ad2fe7c 100644 --- a/src/USER-MISC/pair_cdeam.h +++ b/src/USER-MISC/pair_cdeam.h @@ -35,7 +35,7 @@ public: virtual ~PairCDEAM(); /// Calculates the energies and forces for all atoms in the system. - void compute(int, int); + virtual void compute(int, int); /// Parses the pair_coeff command parameters for this pair style. void coeff(int, char **); @@ -62,7 +62,7 @@ public: v = (v + hcoeff[i]) * x; } return v + hcoeff[0]; - } + }; // Calculates the derivative of the h(x) polynomial. inline double evalHprime(double x) const { @@ -71,7 +71,7 @@ public: v = (v + (double)i * hcoeff[i]) * x; } return v + hcoeff[1]; - } + }; // We have two versions of the CD-EAM potential. The user can choose which one he wants to use: // @@ -124,7 +124,7 @@ public: index.p -= index.m; index.p = index.p <= 1.0 ? index.p : 1.0; return index; - } + }; // Converts a density value to an index value to be used in a spline table lookup. inline EAMTableIndex rhoToTableIndex(double rho) const { @@ -135,43 +135,43 @@ public: index.p -= index.m; index.p = index.p <= 1.0 ? index.p : 1.0; return index; - } + }; // Computes the derivative of rho(r) inline double RhoPrimeOfR(const EAMTableIndex& index, int itype, int jtype) const { const double* coeff = rhor_spline[type2rhor[itype][jtype]][index.m]; return (coeff[0]*index.p + coeff[1])*index.p + coeff[2]; - } + }; // Computes rho(r) inline double RhoOfR(const EAMTableIndex& index, int itype, int jtype) const { const double* coeff = rhor_spline[type2rhor[itype][jtype]][index.m]; return ((coeff[3]*index.p + coeff[4])*index.p + coeff[5])*index.p + coeff[6]; - } + }; // Computes the derivative of F(rho) inline double FPrimeOfRho(const EAMTableIndex& index, int itype) const { const double* coeff = frho_spline[type2frho[itype]][index.m]; return (coeff[0]*index.p + coeff[1])*index.p + coeff[2]; - } + }; // Computes F(rho) inline double FofRho(const EAMTableIndex& index, int itype) const { const double* coeff = frho_spline[type2frho[itype]][index.m]; return ((coeff[3]*index.p + coeff[4])*index.p + coeff[5])*index.p + coeff[6]; - } + }; // Computes the derivative of z2(r) inline double Z2PrimeOfR(const EAMTableIndex& index, int itype, int jtype) const { const double* coeff = z2r_spline[type2z2r[itype][jtype]][index.m]; return (coeff[0]*index.p + coeff[1])*index.p + coeff[2]; - } - + }; + // Computes z2(r) inline double Z2OfR(const EAMTableIndex& index, int itype, int jtype) const { const double* coeff = z2r_spline[type2z2r[itype][jtype]][index.m]; return ((coeff[3]*index.p + coeff[4])*index.p + coeff[5])*index.p + coeff[6]; - } + }; // Computes pair potential V_ij(r). inline double PhiOfR(const EAMTableIndex& index, int itype, int jtype, const double oneOverR) const { @@ -180,7 +180,7 @@ public: const double* coeff = z2r_spline[type2z2r[itype][jtype]][index.m]; const double z2 = ((coeff[3]*index.p + coeff[4])*index.p + coeff[5])*index.p + coeff[6]; return z2 * oneOverR; - } + }; // Computes pair potential V_ij(r) and its derivative. inline double PhiOfR(const EAMTableIndex& index, int itype, int jtype, const double oneOverR, double& phid) const { @@ -194,7 +194,7 @@ public: const double phi = z2 * oneOverR; phid = z2p * oneOverR - phi * oneOverR; return phi; - } + }; // Parameters @@ -224,7 +224,7 @@ public: PairCDEAM_TwoSite(class LAMMPS* lmp) : PairEAM(lmp), PairCDEAM(lmp, 2) {} }; -}; +} #endif #endif diff --git a/src/USER-MISC/pair_dipole_sf.cpp b/src/USER-MISC/pair_dipole_sf.cpp index f437571790..8adf066352 100644 --- a/src/USER-MISC/pair_dipole_sf.cpp +++ b/src/USER-MISC/pair_dipole_sf.cpp @@ -28,9 +28,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairDipoleSF::PairDipoleSF(LAMMPS *lmp) : Pair(lmp) @@ -326,7 +323,7 @@ void PairDipoleSF::allocate() void PairDipoleSF::settings(int narg, char **arg) { if (narg < 1 || narg > 2) - error->all("Incorrect args in pair_style command"); + error->all(FLERR,"Incorrect args in pair_style command"); cut_lj_global = force->numeric(arg[0]); if (narg == 1) cut_coul_global = cut_lj_global; @@ -352,7 +349,7 @@ void PairDipoleSF::settings(int narg, char **arg) void PairDipoleSF::coeff(int narg, char **arg) { if (narg < 4 || narg > 6) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -379,7 +376,7 @@ void PairDipoleSF::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -389,7 +386,7 @@ void PairDipoleSF::coeff(int narg, char **arg) void PairDipoleSF::init_style() { if (!atom->q_flag || !atom->mu_flag || !atom->torque_flag) - error->all("Pair dipole/sf requires atom attributes q, mu, torque"); + error->all(FLERR,"Pair dipole/sf requires atom attributes q, mu, torque"); neighbor->request(this); } diff --git a/src/USER-MISC/pair_dipole_sf.h b/src/USER-MISC/pair_dipole_sf.h index bed71801f4..945f48694c 100644 --- a/src/USER-MISC/pair_dipole_sf.h +++ b/src/USER-MISC/pair_dipole_sf.h @@ -26,9 +26,9 @@ namespace LAMMPS_NS { class PairDipoleSF : public Pair { public: - PairDipoleSF(class LAMMPS *); - ~PairDipoleSF(); - void compute(int, int); + PairDipoleSF(class LAMMPS *); + virtual ~PairDipoleSF(); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); void init_style(); @@ -38,7 +38,7 @@ class PairDipoleSF : public Pair { void write_restart_settings(FILE *); void read_restart_settings(FILE *); - private: + protected: double cut_lj_global,cut_coul_global; double **cut_lj,**cut_ljsq; double **cut_coul,**cut_coulsq; diff --git a/src/USER-MISC/pair_edip.cpp b/src/USER-MISC/pair_edip.cpp new file mode 100755 index 0000000000..1be9d8f74f --- /dev/null +++ b/src/USER-MISC/pair_edip.cpp @@ -0,0 +1,1056 @@ +/* ---------------------------------------------------------------------- + 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: Luca Ferraro (CASPUR) + email: luca.ferraro@caspur.it + + Environment Dependent Interatomic Potential + References: + 1) J. F. Justo, M. Z. Bazant, E. Kaxiras, V. V. Bulatov, S. Yip + Phys. Rev. B 58, 2539 (1998) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "float.h" +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "pair_edip.h" +#include "atom.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "force.h" +#include "comm.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define MAXLINE 1024 +#define DELTA 4 + +/* ---------------------------------------------------------------------- */ + +PairEDIP::PairEDIP(LAMMPS *lmp) : Pair(lmp) +{ + single_enable = 0; + restartinfo = 0; + one_coeff = 1; + + nelements = 0; + elements = NULL; + nparams = maxparam = 0; + params = NULL; + elem2param = NULL; +} + +/* ---------------------------------------------------------------------- + check if allocated, since class can be destructed when incomplete +------------------------------------------------------------------------- */ + +PairEDIP::~PairEDIP() +{ + if (elements) + for (int i = 0; i < nelements; i++) delete [] elements[i]; + delete [] elements; + memory->destroy(params); + memory->destroy(elem2param); + + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + delete [] map; + + deallocateGrids(); + deallocatePreLoops(); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairEDIP::compute(int eflag, int vflag) +{ + int i,j,k,ii,inum,jnum; + int itype,jtype,ktype,ijparam,ikparam,ijkparam; + double xtmp,ytmp,ztmp,evdwl; + int *ilist,*jlist,*numneigh,**firstneigh; + register int preForceCoord_counter; + + double invR_ij; + double invR_ik; + double directorCos_ij_x; + double directorCos_ij_y; + double directorCos_ij_z; + double directorCos_ik_x; + double directorCos_ik_y; + double directorCos_ik_z; + double cosTeta; + + int interpolIDX; + double interpolTMP; + double interpolDeltaX; + double interpolY1; + double interpolY2; + + double invRMinusCutoffA; + double sigmaInvRMinusCutoffA; + double gammInvRMinusCutoffA; + double cosTetaDiff; + double cosTetaDiffCosTetaDiff; + double cutoffFunction_ij; + double exp2B_ij; + double exp2BDerived_ij; + double pow2B_ij; + double pow2BDerived_ij; + double exp3B_ij; + double exp3BDerived_ij; + double exp3B_ik; + double exp3BDerived_ik; + double qFunction; + double qFunctionDerived; + double tauFunction; + double tauFunctionDerived; + double expMinusBetaZeta_iZeta_i; + double qFunctionCosTetaDiffCosTetaDiff; + double expMinusQFunctionCosTetaDiffCosTetaDiff; + double zeta_i; + double zeta_iDerived; + double zeta_iDerivedInvR_ij; + + double forceModCoord_factor; + double forceModCoord; + double forceModCoord_ij; + double forceMod2B; + double forceMod3B_factor1_ij; + double forceMod3B_factor2_ij; + double forceMod3B_factor2; + double forceMod3B_factor1_ik; + double forceMod3B_factor2_ik; + double potentia3B_factor; + double potential2B_factor; + + evdwl = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **f = atom->f; + int *type = atom->type; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over full neighbor list of my atoms + + for (ii = 0; ii < inum; ii++) { + zeta_i = 0.0; + int numForceCoordPairs = 0; + + i = ilist[ii]; + itype = map[type[i]]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // pre-loop to compute environment coordination f(Z) + + for (int neighbor_j = 0; neighbor_j < jnum; neighbor_j++) { + j = jlist[neighbor_j]; + j &= NEIGHMASK; + + double dr_ij[3], r_ij; + + dr_ij[0] = xtmp - x[j][0]; + dr_ij[1] = ytmp - x[j][1]; + dr_ij[2] = ztmp - x[j][2]; + r_ij = dr_ij[0]*dr_ij[0] + dr_ij[1]*dr_ij[1] + dr_ij[2]*dr_ij[2]; + + jtype = map[type[j]]; + ijparam = elem2param[itype][jtype][jtype]; + if (r_ij > params[ijparam].cutsq) continue; + + r_ij = sqrt(r_ij); + + invR_ij = 1.0 / r_ij; + preInvR_ij[neighbor_j] = invR_ij; + + invRMinusCutoffA = 1.0 / (r_ij - cutoffA); + sigmaInvRMinusCutoffA = sigma * invRMinusCutoffA; + gammInvRMinusCutoffA = gamm * invRMinusCutoffA; + + interpolDeltaX = r_ij - GRIDSTART; + interpolTMP = (interpolDeltaX * GRIDDENSITY); + interpolIDX = (int) interpolTMP; + + interpolY1 = exp3B[interpolIDX]; + interpolY2 = exp3B[interpolIDX+1]; + exp3B_ij = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + exp3BDerived_ij = - exp3B_ij * gammInvRMinusCutoffA * invRMinusCutoffA; + + preExp3B_ij[neighbor_j] = exp3B_ij; + preExp3BDerived_ij[neighbor_j] = exp3BDerived_ij; + + interpolY1 = exp2B[interpolIDX]; + interpolY2 = exp2B[interpolIDX+1]; + exp2B_ij = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + exp2BDerived_ij = - exp2B_ij * sigmaInvRMinusCutoffA * invRMinusCutoffA; + + preExp2B_ij[neighbor_j] = exp2B_ij; + preExp2BDerived_ij[neighbor_j] = exp2BDerived_ij; + + interpolY1 = pow2B[interpolIDX]; + interpolY2 = pow2B[interpolIDX+1]; + pow2B_ij = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + prePow2B_ij[neighbor_j] = pow2B_ij; + + // zeta and its derivative + + if (r_ij < cutoffC) zeta_i += 1.0; + else { + interpolY1 = cutoffFunction[interpolIDX]; + interpolY2 = cutoffFunction[interpolIDX+1]; + cutoffFunction_ij = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + zeta_i += cutoffFunction_ij; + + interpolY1 = cutoffFunctionDerived[interpolIDX]; + interpolY2 = cutoffFunctionDerived[interpolIDX+1]; + zeta_iDerived = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + zeta_iDerivedInvR_ij = zeta_iDerived * invR_ij; + + preForceCoord_counter=numForceCoordPairs*5; + preForceCoord[preForceCoord_counter+0]=zeta_iDerivedInvR_ij; + preForceCoord[preForceCoord_counter+1]=dr_ij[0]; + preForceCoord[preForceCoord_counter+2]=dr_ij[1]; + preForceCoord[preForceCoord_counter+3]=dr_ij[2]; + preForceCoord[preForceCoord_counter+4]=j; + numForceCoordPairs++; + } + } + + // quantities depending on zeta_i + + interpolDeltaX = zeta_i; + interpolTMP = (interpolDeltaX * GRIDDENSITY); + interpolIDX = (int) interpolTMP; + + interpolY1 = expMinusBetaZeta_iZeta_iGrid[interpolIDX]; + interpolY2 = expMinusBetaZeta_iZeta_iGrid[interpolIDX+1]; + expMinusBetaZeta_iZeta_i = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + interpolY1 = qFunctionGrid[interpolIDX]; + interpolY2 = qFunctionGrid[interpolIDX+1]; + qFunction = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + interpolY1 = tauFunctionGrid[interpolIDX]; + interpolY2 = tauFunctionGrid[interpolIDX+1]; + tauFunction = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + interpolY1 = tauFunctionDerivedGrid[interpolIDX]; + interpolY2 = tauFunctionDerivedGrid[interpolIDX+1]; + tauFunctionDerived = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + qFunctionDerived = -mu * qFunction; + + forceModCoord_factor = 2.0 * beta * zeta_i * expMinusBetaZeta_iZeta_i; + + forceModCoord = 0.0; + + // two-body interactions, skip half of them + + for (int neighbor_j = 0; neighbor_j < jnum; neighbor_j++) { + double dr_ij[3], r_ij, f_ij[3]; + + j = jlist[neighbor_j]; + j &= NEIGHMASK; + + dr_ij[0] = x[j][0] - xtmp; + dr_ij[1] = x[j][1] - ytmp; + dr_ij[2] = x[j][2] - ztmp; + r_ij = dr_ij[0]*dr_ij[0] + dr_ij[1]*dr_ij[1] + dr_ij[2]*dr_ij[2]; + + jtype = map[type[j]]; + ijparam = elem2param[itype][jtype][jtype]; + if (r_ij > params[ijparam].cutsq) continue; + + r_ij = sqrt(r_ij); + + invR_ij = preInvR_ij[neighbor_j]; + pow2B_ij = prePow2B_ij[neighbor_j]; + + potential2B_factor = pow2B_ij - expMinusBetaZeta_iZeta_i; + + exp2B_ij = preExp2B_ij[neighbor_j]; + + pow2BDerived_ij = - rho * invR_ij * pow2B_ij; + + forceModCoord += (forceModCoord_factor*exp2B_ij); + + exp2BDerived_ij = preExp2BDerived_ij[neighbor_j]; + forceMod2B = exp2BDerived_ij * potential2B_factor + + exp2B_ij * pow2BDerived_ij; + + directorCos_ij_x = invR_ij * dr_ij[0]; + directorCos_ij_y = invR_ij * dr_ij[1]; + directorCos_ij_z = invR_ij * dr_ij[2]; + + exp3B_ij = preExp3B_ij[neighbor_j]; + exp3BDerived_ij = preExp3BDerived_ij[neighbor_j]; + + f_ij[0] = forceMod2B * directorCos_ij_x; + f_ij[1] = forceMod2B * directorCos_ij_y; + f_ij[2] = forceMod2B * directorCos_ij_z; + + f[j][0] -= f_ij[0]; + f[j][1] -= f_ij[1]; + f[j][2] -= f_ij[2]; + + f[i][0] += f_ij[0]; + f[i][1] += f_ij[1]; + f[i][2] += f_ij[2]; + + // potential energy + + evdwl = (exp2B_ij * potential2B_factor); + + if (evflag) ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, + -forceMod2B*invR_ij, dr_ij[0], dr_ij[1], dr_ij[2]); + + // three-body Forces + + for (int neighbor_k = neighbor_j + 1; neighbor_k < jnum; neighbor_k++) { + double dr_ik[3], r_ik, f_ik[3]; + + k = jlist[neighbor_k]; + k &= NEIGHMASK; + ktype = map[type[k]]; + ikparam = elem2param[itype][ktype][ktype]; + ijkparam = elem2param[itype][jtype][ktype]; + + dr_ik[0] = x[k][0] - xtmp; + dr_ik[1] = x[k][1] - ytmp; + dr_ik[2] = x[k][2] - ztmp; + r_ik = dr_ik[0]*dr_ik[0] + dr_ik[1]*dr_ik[1] + dr_ik[2]*dr_ik[2]; + + if (r_ik > params[ikparam].cutsq) continue; + + r_ik = sqrt(r_ik); + + invR_ik = preInvR_ij[neighbor_k]; + + directorCos_ik_x = invR_ik * dr_ik[0]; + directorCos_ik_y = invR_ik * dr_ik[1]; + directorCos_ik_z = invR_ik * dr_ik[2]; + + cosTeta = directorCos_ij_x * directorCos_ik_x + + directorCos_ij_y * directorCos_ik_y + + directorCos_ij_z * directorCos_ik_z; + + cosTetaDiff = cosTeta + tauFunction; + cosTetaDiffCosTetaDiff = cosTetaDiff * cosTetaDiff; + qFunctionCosTetaDiffCosTetaDiff = cosTetaDiffCosTetaDiff * qFunction; + expMinusQFunctionCosTetaDiffCosTetaDiff = + exp(-qFunctionCosTetaDiffCosTetaDiff); + + potentia3B_factor = lambda * + ((1.0 - expMinusQFunctionCosTetaDiffCosTetaDiff) + + eta * qFunctionCosTetaDiffCosTetaDiff); + + exp3B_ik = preExp3B_ij[neighbor_k]; + exp3BDerived_ik = preExp3BDerived_ij[neighbor_k]; + + forceMod3B_factor1_ij = - exp3BDerived_ij * exp3B_ik * + potentia3B_factor; + forceMod3B_factor2 = 2.0 * lambda * exp3B_ij * exp3B_ik * + qFunction * cosTetaDiff * + (eta + expMinusQFunctionCosTetaDiffCosTetaDiff); + forceMod3B_factor2_ij = forceMod3B_factor2 * invR_ij; + + f_ij[0] = forceMod3B_factor1_ij * directorCos_ij_x + + forceMod3B_factor2_ij * + (cosTeta * directorCos_ij_x - directorCos_ik_x); + f_ij[1] = forceMod3B_factor1_ij * directorCos_ij_y + + forceMod3B_factor2_ij * + (cosTeta * directorCos_ij_y - directorCos_ik_y); + f_ij[2] = forceMod3B_factor1_ij * directorCos_ij_z + + forceMod3B_factor2_ij * + (cosTeta * directorCos_ij_z - directorCos_ik_z); + + forceMod3B_factor1_ik = - exp3BDerived_ik * exp3B_ij * + potentia3B_factor; + forceMod3B_factor2_ik = forceMod3B_factor2 * invR_ik; + + f_ik[0] = forceMod3B_factor1_ik * directorCos_ik_x + + forceMod3B_factor2_ik * + (cosTeta * directorCos_ik_x - directorCos_ij_x); + f_ik[1] = forceMod3B_factor1_ik * directorCos_ik_y + + forceMod3B_factor2_ik * + (cosTeta * directorCos_ik_y - directorCos_ij_y); + f_ik[2] = forceMod3B_factor1_ik * directorCos_ik_z + + forceMod3B_factor2_ik * + (cosTeta * directorCos_ik_z - directorCos_ij_z); + + forceModCoord += (forceMod3B_factor2 * + (tauFunctionDerived - 0.5 * mu * cosTetaDiff)); + + f[j][0] += f_ij[0]; + f[j][1] += f_ij[1]; + f[j][2] += f_ij[2]; + + f[k][0] += f_ik[0]; + f[k][1] += f_ik[1]; + f[k][2] += f_ik[2]; + + f[i][0] -= f_ij[0] + f_ik[0]; + f[i][1] -= f_ij[1] + f_ik[1]; + f[i][2] -= f_ij[2] + f_ik[2]; + + // potential energy + + evdwl = (exp3B_ij * exp3B_ik * potentia3B_factor); + + if (evflag) ev_tally3(i,j,k,evdwl,0.0,f_ij,f_ik,dr_ij,dr_ik); + } + } + + // forces due to environment coordination f(Z) + + for (int idx = 0; idx < numForceCoordPairs; idx++) { + double dr_ij[3], f_ij[3]; + + preForceCoord_counter = idx * 5; + zeta_iDerivedInvR_ij=preForceCoord[preForceCoord_counter+0]; + dr_ij[0]=preForceCoord[preForceCoord_counter+1]; + dr_ij[1]=preForceCoord[preForceCoord_counter+2]; + dr_ij[2]=preForceCoord[preForceCoord_counter+3]; + j = static_cast (preForceCoord[preForceCoord_counter+4]); + + forceModCoord_ij = forceModCoord * zeta_iDerivedInvR_ij; + + f_ij[0] = forceModCoord_ij * dr_ij[0]; + f_ij[1] = forceModCoord_ij * dr_ij[1]; + f_ij[2] = forceModCoord_ij * dr_ij[2]; + + f[j][0] -= f_ij[0]; + f[j][1] -= f_ij[1]; + f[j][2] -= f_ij[2]; + + f[i][0] += f_ij[0]; + f[i][1] += f_ij[1]; + f[i][2] += f_ij[2]; + + // potential energy + + evdwl = 0.0; + if (evflag) ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, + forceModCoord_ij, dr_ij[0], dr_ij[1], dr_ij[2]); + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +void PairEDIP::allocateGrids(void) +{ + int numGridPointsOneCutoffFunction; + int numGridPointsNotOneCutoffFunction; + int numGridPointsCutoffFunction; + int numGridPointsR; + int numGridPointsRTotal; + int numGridPointsQFunctionGrid; + int numGridPointsExpMinusBetaZeta_iZeta_i; + int numGridPointsTauFunctionGrid; + double maxArgumentTauFunctionGrid; + double maxArgumentQFunctionGrid; + double maxArgumentExpMinusBetaZeta_iZeta_i; + double const leftLimitToZero = -DBL_MIN * 1000.0; + + // tauFunctionGrid + + maxArgumentTauFunctionGrid = leadDimInteractionList; + numGridPointsTauFunctionGrid = (int) + ((maxArgumentTauFunctionGrid) * GRIDDENSITY) + 2; + + memory->create(tauFunctionGrid,numGridPointsTauFunctionGrid, + "edip:tauFunctionGrid"); + memory->create(tauFunctionDerivedGrid,numGridPointsTauFunctionGrid, + "edip:tauFunctionDerivedGrid"); + + // expMinusBetaZeta_iZeta_iGrid + + maxArgumentExpMinusBetaZeta_iZeta_i = leadDimInteractionList; + numGridPointsExpMinusBetaZeta_iZeta_i = (int) + ((maxArgumentExpMinusBetaZeta_iZeta_i) * GRIDDENSITY) + 2; + memory->create(expMinusBetaZeta_iZeta_iGrid, + numGridPointsExpMinusBetaZeta_iZeta_i, + "edip:expMinusBetaZeta_iZeta_iGrid"); + + // qFunctionGrid + + maxArgumentQFunctionGrid = leadDimInteractionList; + numGridPointsQFunctionGrid = (int) + ((maxArgumentQFunctionGrid) * GRIDDENSITY) + 2; + memory->create(qFunctionGrid,numGridPointsQFunctionGrid,"edip:qFunctionGrid"); + + // cutoffFunction + + numGridPointsOneCutoffFunction = (int) ((cutoffC - GRIDSTART) * GRIDDENSITY); + numGridPointsNotOneCutoffFunction = (int) ((cutoffA-cutoffC) * GRIDDENSITY); + numGridPointsCutoffFunction = numGridPointsOneCutoffFunction + + numGridPointsNotOneCutoffFunction+2; + + memory->create(cutoffFunction,numGridPointsCutoffFunction, + "edip:cutoffFunction"); + memory->create(cutoffFunctionDerived,numGridPointsCutoffFunction, + "edip:cutoffFunctionDerived"); + + // pow2B + + numGridPointsR = (int) + ((cutoffA + leftLimitToZero - GRIDSTART) * GRIDDENSITY); + numGridPointsRTotal = numGridPointsR + 2; + + memory->create(pow2B,numGridPointsRTotal,"edip:pow2B"); + memory->create(exp2B,numGridPointsRTotal,"edip:exp2B"); + memory->create(exp3B,numGridPointsRTotal,"edip:exp3B"); +} + +/* ---------------------------------------------------------------------- + pre-calculated structures +------------------------------------------------------------------------- */ + +void PairEDIP::allocatePreLoops(void) +{ + int nthreads = comm->nthreads; + + memory->create(preInvR_ij,nthreads*leadDimInteractionList,"edip:preInvR_ij"); + memory->create(preExp3B_ij,nthreads*leadDimInteractionList,"edip:preExp3B_ij"); + memory->create(preExp3BDerived_ij,nthreads*leadDimInteractionList, + "edip:preExp3BDerived_ij"); + memory->create(preExp2B_ij,nthreads*leadDimInteractionList,"edip:preExp2B_ij"); + memory->create(preExp2BDerived_ij,nthreads*leadDimInteractionList, + "edip:preExp2BDerived_ij"); + memory->create(prePow2B_ij,nthreads*leadDimInteractionList,"edip:prePow2B_ij"); + memory->create(preForceCoord,5*nthreads*leadDimInteractionList,"edip:preForceCoord"); +} + +/* ---------------------------------------------------------------------- + deallocate grids +------------------------------------------------------------------------- */ + +void PairEDIP::deallocateGrids(void) +{ + memory->destroy(cutoffFunction); + memory->destroy(cutoffFunctionDerived); + memory->destroy(pow2B); + memory->destroy(exp2B); + memory->destroy(exp3B); + memory->destroy(qFunctionGrid); + memory->destroy(expMinusBetaZeta_iZeta_iGrid); + memory->destroy(tauFunctionGrid); + memory->destroy(tauFunctionDerivedGrid); +} + +/* ---------------------------------------------------------------------- + deallocate preLoops +------------------------------------------------------------------------- */ + +void PairEDIP::deallocatePreLoops(void) +{ + memory->destroy(preInvR_ij); + memory->destroy(preExp3B_ij); + memory->destroy(preExp3BDerived_ij); + memory->destroy(preExp2B_ij); + memory->destroy(preExp2BDerived_ij); + memory->destroy(prePow2B_ij); + memory->destroy(preForceCoord); +} + +/* ---------------------------------------------------------------------- */ + +void PairEDIP::allocate() +{ + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + memory->create(cutsq,n+1,n+1,"pair:cutsq"); + + map = new int[n+1]; +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairEDIP::settings(int narg, char **arg) +{ + if (narg != 0) error->all(FLERR,"Illegal pair_style command"); +} + +/* ---------------------------------------------------------------------- */ + +void PairEDIP::initGrids(void) +{ + int l; + int numGridPointsOneCutoffFunction; + int numGridPointsNotOneCutoffFunction; + int numGridPointsCutoffFunction; + int numGridPointsR; + int numGridPointsRTotal; + int numGridPointsQFunctionGrid; + int numGridPointsExpMinusBetaZeta_iZeta_i; + int numGridPointsTauFunctionGrid; + double maxArgumentTauFunctionGrid; + double maxArgumentQFunctionGrid; + double maxArgumentExpMinusBetaZeta_iZeta_i; + double r; + double temp; + double temp3; + double temp4; + double deltaArgumentR; + double deltaArgumentCutoffFunction; + double deltaArgumentQFunctionGrid; + double deltaArgumentTauFunctionGrid; + double deltaArgumentExpMinusBetaZeta_iZeta_i; + double const leftLimitToZero = -DBL_MIN * 1000.0; + + // tauFunctionGrid + + maxArgumentTauFunctionGrid = leadDimInteractionList; + + numGridPointsTauFunctionGrid = (int) + ((maxArgumentTauFunctionGrid) * GRIDDENSITY) + 2; + + r = 0.0; + deltaArgumentTauFunctionGrid = 1.0 / GRIDDENSITY; + + for (l = 0; l < numGridPointsTauFunctionGrid; l++) { + tauFunctionGrid[l] = u1 + u2 * u3 * exp(-u4 * r) - + u2 * exp(-2.0 * u4 * r); + tauFunctionDerivedGrid[l] = - u2 * u3 * u4 * exp(-u4 * r) + + 2.0 * u2 * u4 * exp(-2.0 * u4 * r); + r += deltaArgumentTauFunctionGrid; + } + + // expMinusBetaZeta_iZeta_iGrid + + maxArgumentExpMinusBetaZeta_iZeta_i = leadDimInteractionList; + + numGridPointsExpMinusBetaZeta_iZeta_i = (int) + ((maxArgumentExpMinusBetaZeta_iZeta_i) * GRIDDENSITY) + 2; + + r = 0.0; + deltaArgumentExpMinusBetaZeta_iZeta_i = 1.0 / GRIDDENSITY; + + for (l = 0; l < numGridPointsExpMinusBetaZeta_iZeta_i; l++) { + expMinusBetaZeta_iZeta_iGrid[l] = exp(-beta * r * r); + r += deltaArgumentExpMinusBetaZeta_iZeta_i; + } + + // qFunctionGrid + + maxArgumentQFunctionGrid = leadDimInteractionList; + numGridPointsQFunctionGrid = + (int) ((maxArgumentQFunctionGrid) * GRIDDENSITY) + 2; + + r = 0.0; + deltaArgumentQFunctionGrid = 1.0 / GRIDDENSITY; + + for (l = 0; l < numGridPointsQFunctionGrid; l++) { + qFunctionGrid[l] = Q0 * exp(-mu * r); + r += deltaArgumentQFunctionGrid; + } + + // cutoffFunction + + numGridPointsOneCutoffFunction = + (int) ((cutoffC - GRIDSTART) * GRIDDENSITY); + numGridPointsNotOneCutoffFunction = + (int) ((cutoffA-cutoffC) * GRIDDENSITY); + numGridPointsCutoffFunction = + numGridPointsOneCutoffFunction+numGridPointsNotOneCutoffFunction+2; + + r = GRIDSTART; + deltaArgumentCutoffFunction = 1.0 / GRIDDENSITY; + + for (l = 0; l < numGridPointsOneCutoffFunction; l++) { + cutoffFunction[l] = 1.0; + cutoffFunctionDerived[l] = 0.0; + r += deltaArgumentCutoffFunction; + } + + for (l = numGridPointsOneCutoffFunction; + l < numGridPointsCutoffFunction; l++) { + temp = (cutoffA - cutoffC)/(r - cutoffC); + temp3 = temp * temp * temp; + temp4 = temp3 * temp; + cutoffFunction[l] = exp(alpha/(1.0-temp3)); + cutoffFunctionDerived[l] = (-3*alpha/(cutoffA-cutoffC)) * + (temp4/((1-temp3)*(1-temp3)))*exp(alpha/(1.0-temp3)); + r += deltaArgumentCutoffFunction; + } + + // pow2B + + numGridPointsR = (int) + ((cutoffA + leftLimitToZero - GRIDSTART) * GRIDDENSITY); + numGridPointsRTotal = numGridPointsR + 2; + + r = GRIDSTART; + deltaArgumentR = 1.0 / GRIDDENSITY; + for (l = 0; l < numGridPointsR; l++) { + pow2B[l] = pow((B/r),rho); + exp2B[l] = A * exp(sigma/(r-cutoffA)); + exp3B[l] = exp(gamm/(r-cutoffA)); + r += deltaArgumentR; + } + + pow2B[numGridPointsR] = pow((B/r),rho); + exp2B[numGridPointsR]=0; + exp3B[numGridPointsR]=0; + r += deltaArgumentR; + pow2B[numGridPointsR+1] = pow((B/r),rho); + exp2B[numGridPointsR+1]=0; + exp3B[numGridPointsR+1]=0; +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairEDIP::coeff(int narg, char **arg) +{ + int i,j,n; + + if (!allocated) allocate(); + + if (narg != 3 + atom->ntypes) + error->all(FLERR,"Incorrect args for pair coefficients"); + + // insure I,J args are * * + + if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) + error->all(FLERR,"Incorrect args for pair coefficients"); + + // read args that map atom types to elements in potential file + // map[i] = which element the Ith atom type is, -1 if NULL + // nelements = # of unique elements + // elements = list of element names + + if (elements) { + for (i = 0; i < nelements; i++) delete [] elements[i]; + delete [] elements; + } + elements = new char*[atom->ntypes]; + for (i = 0; i < atom->ntypes; i++) elements[i] = NULL; + + nelements = 0; + for (i = 3; i < narg; i++) { + if (strcmp(arg[i],"NULL") == 0) { + map[i-2] = -1; + continue; + } + for (j = 0; j < nelements; j++) + if (strcmp(arg[i],elements[j]) == 0) break; + map[i-2] = j; + if (j == nelements) { + n = strlen(arg[i]) + 1; + elements[j] = new char[n]; + strcpy(elements[j],arg[i]); + nelements++; + } + } + + // read potential file and initialize potential parameters + + read_file(arg[2]); + setup(); + + // clear setflag since coeff() called once with I,J = * * + + n = atom->ntypes; + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + // set setflag i,j for type pairs where both are mapped to elements + + int count = 0; + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + if (map[i] >= 0 && map[j] >= 0) { + setflag[i][j] = 1; + count++; + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); + + // allocate tables and internal structures + + allocatePreLoops(); + allocateGrids(); + initGrids(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairEDIP::init_style() +{ + if (atom->tag_enable == 0) + error->all(FLERR,"Pair style EDIP requires atom IDs"); + if (force->newton_pair == 0) + error->all(FLERR,"Pair style EDIP requires newton pair on"); + + // need a full neighbor list + + int irequest = neighbor->request(this); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairEDIP::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + + return cutmax; +} + +/* ---------------------------------------------------------------------- */ + +void PairEDIP::read_file(char *file) +{ + int params_per_line = 20; + char **words = new char*[params_per_line+1]; + + memory->sfree(params); + params = NULL; + nparams = maxparam = 0; + + // open file on proc 0 + + FILE *fp; + if (comm->me == 0) { + fp = fopen(file,"r"); + if (fp == NULL) { + char str[128]; + sprintf(str,"Cannot open EDIP potential file %s",file); + error->one(FLERR,str); + } + } + + // read each set of params from potential file + // one set of params can span multiple lines + // store params if all 3 element tags are in element list + + int n,nwords,ielement,jelement,kelement; + char line[MAXLINE],*ptr; + int eof = 0; + + while (1) { + if (comm->me == 0) { + ptr = fgets(line,MAXLINE,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + + // strip comment, skip line if blank + + if ((ptr = strchr(line,'#'))) *ptr = '\0'; + nwords = atom->count_words(line); + if (nwords == 0) continue; + + // concatenate additional lines until have params_per_line words + + while (nwords < params_per_line) { + n = strlen(line); + if (comm->me == 0) { + ptr = fgets(&line[n],MAXLINE-n,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + if ((ptr = strchr(line,'#'))) *ptr = '\0'; + nwords = atom->count_words(line); + } + + if (nwords != params_per_line) + error->all(FLERR,"Incorrect format in EDIP potential file"); + + // words = ptrs to all words in line + + nwords = 0; + words[nwords++] = strtok(line," \t\n\r\f"); + while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; + + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + + for (ielement = 0; ielement < nelements; ielement++) + if (strcmp(words[0],elements[ielement]) == 0) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (strcmp(words[1],elements[jelement]) == 0) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (strcmp(words[2],elements[kelement]) == 0) break; + if (kelement == nelements) continue; + + // load up parameter settings and error check their values + + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } + + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].A = atof(words[3]); + params[nparams].B = atof(words[4]); + params[nparams].cutoffA = atof(words[5]); + params[nparams].cutoffC = atof(words[6]); + params[nparams].alpha = atof(words[7]); + params[nparams].beta = atof(words[8]); + params[nparams].eta = atof(words[9]); + params[nparams].gamm = atof(words[10]); + params[nparams].lambda = atof(words[11]); + params[nparams].mu = atof(words[12]); + params[nparams].rho = atof(words[13]); + params[nparams].sigma = atof(words[14]); + params[nparams].Q0 = atof(words[15]); + params[nparams].u1 = atof(words[16]); + params[nparams].u2 = atof(words[17]); + params[nparams].u3 = atof(words[18]); + params[nparams].u4 = atof(words[19]); + + if (params[nparams].A < 0.0 || params[nparams].B < 0.0 || + params[nparams].cutoffA < 0.0 || params[nparams].cutoffC < 0.0 || + params[nparams].alpha < 0.0 || params[nparams].beta < 0.0 || + params[nparams].eta < 0.0 || params[nparams].gamm < 0.0 || + params[nparams].lambda < 0.0 || params[nparams].mu < 0.0 || + params[nparams].rho < 0.0 || params[nparams].sigma < 0.0) + error->all(FLERR,"Illegal EDIP parameter"); + + nparams++; + } + + delete [] words; +} + +/* ---------------------------------------------------------------------- */ + +void PairEDIP::setup() +{ + int i,j,k,m,n; + double rtmp; + + // set elem2param for all triplet combinations + // must be a single exact match to lines read from file + // do not allow for ACB in place of ABC + + memory->destroy(elem2param); + memory->create(elem2param,nelements,nelements,nelements,"pair:elem2param"); + + for (i = 0; i < nelements; i++) + for (j = 0; j < nelements; j++) + for (k = 0; k < nelements; k++) { + n = -1; + for (m = 0; m < nparams; m++) { + if (i == params[m].ielement && j == params[m].jelement && + k == params[m].kelement) { + if (n >= 0) error->all(FLERR,"Potential file has duplicate entry"); + n = m; + } + } + if (n < 0) error->all(FLERR,"Potential file is missing an entry"); + elem2param[i][j][k] = n; + } + + // set cutoff square + + for (m = 0; m < nparams; m++) { + params[m].cutsq = params[m].cutoffA*params[m].cutoffA; + } + + // set cutmax to max of all params + + cutmax = 0.0; + for (m = 0; m < nparams; m++) { + rtmp = sqrt(params[m].cutsq); + if (rtmp > cutmax) cutmax = rtmp; + } + + // this should be removed for multi species parametrizations + + A = params[0].A; + B = params[0].B; + rho = params[0].rho; + cutoffA = params[0].cutoffA; + cutoffC = params[0].cutoffC; + sigma = params[0].sigma; + lambda = params[0].lambda; + gamm = params[0].gamm; + eta = params[0].eta; + Q0 = params[0].Q0; + mu = params[0].mu; + beta = params[0].beta; + alpha = params[0].alpha; + u1 = params[0].u1; + u2 = params[0].u2; + u3 = params[0].u3; + u4 = params[0].u4; +} diff --git a/src/USER-MISC/pair_edip.h b/src/USER-MISC/pair_edip.h new file mode 100755 index 0000000000..d6cae99b48 --- /dev/null +++ b/src/USER-MISC/pair_edip.h @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------- + 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(edip,PairEDIP) + +#else + +#ifndef LMP_PAIR_EDIP_H +#define LMP_PAIR_EDIP_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairEDIP : public Pair { + public: + PairEDIP(class LAMMPS *); + virtual ~PairEDIP(); + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + double init_one(int, int); + void init_style(); + + protected: + struct Param { + double A, B; + double cutoffA, cutoffC, cutsq; + double alpha, beta; + double eta, gamm, lambda, mu, rho, sigma, Q0; + double u1, u2, u3, u4; + int ielement,jelement,kelement; + }; + + double *preInvR_ij; + double *preExp3B_ij; + double *preExp3BDerived_ij; + double *preExp2B_ij; + double *preExp2BDerived_ij; + double *prePow2B_ij; + double *preForceCoord; + + // grids + + static const int GRIDDENSITY = 8000; + static const double GRIDSTART = 0.1; + + double *cutoffFunction; + double *cutoffFunctionDerived; + double *pow2B; + double *exp2B; + double *exp3B; + double *qFunctionGrid; + double *expMinusBetaZeta_iZeta_iGrid; + double *tauFunctionGrid; + double *tauFunctionDerivedGrid; + + // this should be removed for multi species parametrizations + // since these parameters should be addressed through indexes + // see also the PairEDIP::setup() + + double A; + double B; + double rho; + double cutoffA; + double cutoffC; + double sigma; + double lambda; + double gamm; + double eta; + double Q0; + double mu; + double beta; + double alpha; + double u1; + double u2; + double u3; + double u4; + + double cutmax; // max cutoff for all elements + int nelements; // # of unique elements + char **elements; // names of unique elements + int ***elem2param; // mapping from element triplets to parameters + int *map; // mapping from atom types to elements + int nparams; // # of stored parameter sets + int maxparam; // max # of parameter sets + Param *params; // parameter set for an I-J-K interaction + + // max number of interaction per atom for f(Z) environment potential + + static const int leadDimInteractionList = 64; + + void allocate(); + void allocatePreLoops(void); + void deallocatePreLoops(void); + void allocateGrids(void); + void deallocateGrids(void); + void initGrids(void); + + void read_file(char *); + void setup(); +}; + +} + +#endif +#endif diff --git a/src/USER-MISC/pair_lj_sf.cpp b/src/USER-MISC/pair_lj_sf.cpp index b4a278188a..9745f296be 100644 --- a/src/USER-MISC/pair_lj_sf.cpp +++ b/src/USER-MISC/pair_lj_sf.cpp @@ -28,9 +28,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJShiftedForce::PairLJShiftedForce(LAMMPS *lmp) : Pair(lmp) {} @@ -95,12 +92,8 @@ void PairLJShiftedForce::compute(int eflag, int vflag) for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; - - if (j < nall) factor_lj = 1.0; - else { - factor_lj = special_lj[j/nall]; - j %= nall; - } + factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; @@ -173,12 +166,12 @@ void PairLJShiftedForce::allocate() void PairLJShiftedForce::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); if (cut_global <= 0.0) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); // reset cutoffs that have been explicitly set @@ -196,7 +189,7 @@ void PairLJShiftedForce::settings(int narg, char **arg) void PairLJShiftedForce::coeff(int narg, char **arg) { - if (narg < 4 || narg > 5) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 5) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -210,7 +203,7 @@ void PairLJShiftedForce::coeff(int narg, char **arg) if (narg == 5) cut_one = force->numeric(arg[4]); if (cut_one <= 0.0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); int count = 0; for (int i = ilo; i <= ihi; i++) { @@ -223,7 +216,7 @@ void PairLJShiftedForce::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-OMP/Install.sh b/src/USER-OMP/Install.sh new file mode 100644 index 0000000000..db0beb5218 --- /dev/null +++ b/src/USER-OMP/Install.sh @@ -0,0 +1,20 @@ +# Install/unInstall package files in LAMMPS +# do not install child files if parent does not exist + +for file in *_omp.cpp *_omp.h; do + # let us see if the "rain man" can count the toothpicks... + ofile=`echo $file | sed -e s,\\\\\\(.\\*\\\\\\)_omp\\\\.\\\\\\(h\\\\\\|cpp\\\\\\),\\\\1.\\\\2,` + + if (test $1 = 1) then + if (test $file = "thr_omp.h") || (test $file = "thr_omp.cpp") then + : # always install those files. + elif (test ! -e ../$ofile) then + continue + fi + + cp $file .. + + elif (test $1 = 0) then + rm -f ../$file + fi +done diff --git a/src/USER-OMP/Package.sh b/src/USER-OMP/Package.sh new file mode 100644 index 0000000000..5a004c9187 --- /dev/null +++ b/src/USER-OMP/Package.sh @@ -0,0 +1,28 @@ +# Update package files in LAMMPS +# cp package file to src if doesn't exist or is different +# do not copy certain files if non-OMP versions do not exist +# do remove OpenMP style files that have no matching +# non-OpenMP version installed, e.g. after a package has been removed + +for file in *_omp.cpp *_omp.h; do + # let us see if the "rain man" can count the toothpicks... + ofile=`echo $file | sed -e s,\\\\\\(.\\*\\\\\\)_omp\\\\.\\\\\\(h\\\\\\|cpp\\\\\\),\\\\1.\\\\2,` + if (test $file = "thr_omp.h") || (test $file = "thr_omp.cpp") then + : # always check for those files. + elif (test ! -e ../$ofile) then + if (test -e ../$file) then + echo " removing src/$file" + rm -f ../$file + fi + continue + fi + + if (test ! -e ../$file) then + echo " creating src/$file" + cp $file .. + elif ! cmp -s $file ../$file ; then + echo " updating src/$file" + cp $file .. + fi +done + diff --git a/src/USER-OMP/README b/src/USER-OMP/README new file mode 100644 index 0000000000..b200fee478 --- /dev/null +++ b/src/USER-OMP/README @@ -0,0 +1,10 @@ +This package provides OpenMP multi-threading support and other +optimizations of various LAMMPS pair styles, dihedral styles, and fix +styles. + +See this section of the manual to get started: + +doc/Section_accelerate.html, sub-section 5.2 + +The person who created this package is Axel Kohlmeyer at Temple U +(akohlmey at gmail.com). Contact him directly if you have questions. diff --git a/src/USER-OMP/dihedral_charmm_omp.cpp b/src/USER-OMP/dihedral_charmm_omp.cpp new file mode 100644 index 0000000000..63bfc43270 --- /dev/null +++ b/src/USER-OMP/dihedral_charmm_omp.cpp @@ -0,0 +1,328 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "lmptype.h" +#include "mpi.h" +#include "math.h" +#include "dihedral_charmm_omp.h" +#include "atom.h" +#include "comm.h" +#include "neighbor.h" +#include "domain.h" +#include "force.h" +#include "pair.h" +#include "update.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define TOLERANCE 0.05 +#define SMALL 0.001 + +/* ---------------------------------------------------------------------- */ + +void DihedralCharmmOMP::compute(int eflag, int vflag) +{ + + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = 0; + + // insure pair->ev_tally() will use 1-4 virial contribution + + if (weightflag && vflag_global == 2) + force->pair->vflag_either = force->pair->vflag_global = 1; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = neighbor->ndihedrallist; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_bond) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_bond) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_bond) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + + // reduce contributions to non-bonded energy terms + for (int n = 0; n < nthreads; ++n) { + force->pair->eng_vdwl += eng_vdwl_thr[n]; + force->pair->eng_coul += eng_coul_thr[n]; + } +} + +template +void DihedralCharmmOMP::eval(double **f, int nfrom, int nto, int tid) +{ + + int i1,i2,i3,i4,i,m,n,type; + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double edihedral,f1[3],f2[3],f3[3],f4[3]; + double ax,ay,az,bx,by,bz,rasq,rbsq,rgsq,rg,rginv,ra2inv,rb2inv,rabinv; + double df,df1,ddf1,fg,hg,fga,hgb,gaa,gbb; + double dtfx,dtfy,dtfz,dtgx,dtgy,dtgz,dthx,dthy,dthz; + double c,s,p,sx2,sy2,sz2; + int itype,jtype; + double delx,dely,delz,rsq,r2inv,r6inv; + double forcecoul,forcelj,fpair,ecoul,evdwl; + + edihedral = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *atomtype = atom->type; + int **dihedrallist = neighbor->dihedrallist; + int nlocal = atom->nlocal; + double qqrd2e = force->qqrd2e; + + for (n = nfrom; n < nto; n++) { + i1 = dihedrallist[n][0]; + i2 = dihedrallist[n][1]; + i3 = dihedrallist[n][2]; + i4 = dihedrallist[n][3]; + type = dihedrallist[n][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + domain->minimum_image(vb1x,vb1y,vb1z); + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + domain->minimum_image(vb2x,vb2y,vb2z); + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + domain->minimum_image(vb2xm,vb2ym,vb2zm); + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + domain->minimum_image(vb3x,vb3y,vb3z); + + // c,s calculation + + ax = vb1y*vb2zm - vb1z*vb2ym; + ay = vb1z*vb2xm - vb1x*vb2zm; + az = vb1x*vb2ym - vb1y*vb2xm; + bx = vb3y*vb2zm - vb3z*vb2ym; + by = vb3z*vb2xm - vb3x*vb2zm; + bz = vb3x*vb2ym - vb3y*vb2xm; + + rasq = ax*ax + ay*ay + az*az; + rbsq = bx*bx + by*by + bz*bz; + rgsq = vb2xm*vb2xm + vb2ym*vb2ym + vb2zm*vb2zm; + rg = sqrt(rgsq); + + rginv = ra2inv = rb2inv = 0.0; + if (rg > 0) rginv = 1.0/rg; + if (rasq > 0) ra2inv = 1.0/rasq; + if (rbsq > 0) rb2inv = 1.0/rbsq; + rabinv = sqrt(ra2inv*rb2inv); + + c = (ax*bx + ay*by + az*bz)*rabinv; + s = rg*rabinv*(ax*vb3x + ay*vb3y + az*vb3z); + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) { + int me = comm->me; + + if (screen) { + char str[128]; + sprintf(str,"Dihedral problem: %d/%d " BIGINT_FORMAT " %d %d %d %d", + me,tid,update->ntimestep, + atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); + error->warning(FLERR,str,0); + fprintf(screen," 1st atom: %d %g %g %g\n", + me,x[i1][0],x[i1][1],x[i1][2]); + fprintf(screen," 2nd atom: %d %g %g %g\n", + me,x[i2][0],x[i2][1],x[i2][2]); + fprintf(screen," 3rd atom: %d %g %g %g\n", + me,x[i3][0],x[i3][1],x[i3][2]); + fprintf(screen," 4th atom: %d %g %g %g\n", + me,x[i4][0],x[i4][1],x[i4][2]); + } + } + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + m = multiplicity[type]; + p = 1.0; + df1 = 0.0; + + for (i = 0; i < m; i++) { + ddf1 = p*c - df1*s; + df1 = p*s + df1*c; + p = ddf1; + } + + p = p*cos_shift[type] + df1*sin_shift[type]; + df1 = df1*cos_shift[type] - ddf1*sin_shift[type]; + df1 *= -m; + p += 1.0; + + if (m == 0) { + p = 1.0 + cos_shift[type]; + df1 = 0.0; + } + + if (EFLAG) edihedral = k[type] * p; + + fg = vb1x*vb2xm + vb1y*vb2ym + vb1z*vb2zm; + hg = vb3x*vb2xm + vb3y*vb2ym + vb3z*vb2zm; + fga = fg*ra2inv*rginv; + hgb = hg*rb2inv*rginv; + gaa = -ra2inv*rg; + gbb = rb2inv*rg; + + dtfx = gaa*ax; + dtfy = gaa*ay; + dtfz = gaa*az; + dtgx = fga*ax - hgb*bx; + dtgy = fga*ay - hgb*by; + dtgz = fga*az - hgb*bz; + dthx = gbb*bx; + dthy = gbb*by; + dthz = gbb*bz; + + df = -k[type] * df1; + + sx2 = df*dtgx; + sy2 = df*dtgy; + sz2 = df*dtgz; + + f1[0] = df*dtfx; + f1[1] = df*dtfy; + f1[2] = df*dtfz; + + f2[0] = sx2 - f1[0]; + f2[1] = sy2 - f1[1]; + f2[2] = sz2 - f1[2]; + + f4[0] = df*dthx; + f4[1] = df*dthy; + f4[2] = df*dthz; + + f3[0] = -sx2 - f4[0]; + f3[1] = -sy2 - f4[1]; + f3[2] = -sz2 - f4[2]; + + // apply force to each of 4 atoms + + if (NEWTON_BOND || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (NEWTON_BOND || i2 < nlocal) { + f[i2][0] += f2[0]; + f[i2][1] += f2[1]; + f[i2][2] += f2[2]; + } + + if (NEWTON_BOND || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (NEWTON_BOND || i4 < nlocal) { + f[i4][0] += f4[0]; + f[i4][1] += f4[1]; + f[i4][2] += f4[2]; + } + + if (EVFLAG) + ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,edihedral,f1,f3,f4, + vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,tid); + // 1-4 LJ and Coulomb interactions + // tally energy/virial in pair, using newton_bond as newton flag + + if (weight[type] > 0.0) { + itype = atomtype[i1]; + jtype = atomtype[i4]; + + delx = x[i1][0] - x[i4][0]; + dely = x[i1][1] - x[i4][1]; + delz = x[i1][2] - x[i4][2]; + domain->minimum_image(delx,dely,delz); + rsq = delx*delx + dely*dely + delz*delz; + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + + if (implicit) forcecoul = qqrd2e * q[i1]*q[i4]*r2inv; + else forcecoul = qqrd2e * q[i1]*q[i4]*sqrt(r2inv); + forcelj = r6inv * (lj14_1[itype][jtype]*r6inv - lj14_2[itype][jtype]); + fpair = weight[type] * (forcelj+forcecoul)*r2inv; + + if (EFLAG) { + ecoul = weight[type] * forcecoul; + evdwl = r6inv * (lj14_3[itype][jtype]*r6inv - lj14_4[itype][jtype]); + evdwl *= weight[type]; + } + + if (NEWTON_BOND || i1 < nlocal) { + f[i1][0] += delx*fpair; + f[i1][1] += dely*fpair; + f[i1][2] += delz*fpair; + } + if (NEWTON_BOND || i4 < nlocal) { + f[i4][0] -= delx*fpair; + f[i4][1] -= dely*fpair; + f[i4][2] -= delz*fpair; + } + + if (EVFLAG) ev_tally_thr(force->pair,i1,i4,nlocal,NEWTON_BOND, + evdwl,ecoul,fpair,delx,dely,delz,tid); + } + } +} + diff --git a/src/USER-OMP/dihedral_charmm_omp.h b/src/USER-OMP/dihedral_charmm_omp.h new file mode 100644 index 0000000000..a39ad83f7e --- /dev/null +++ b/src/USER-OMP/dihedral_charmm_omp.h @@ -0,0 +1,48 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef DIHEDRAL_CLASS + +DihedralStyle(charmm/omp,DihedralCharmmOMP) + +#else + +#ifndef LMP_DIHEDRAL_CHARMM_OMP_H +#define LMP_DIHEDRAL_CHARMM_OMP_H + +#include "dihedral_charmm.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class DihedralCharmmOMP : public DihedralCharmm, public ThrOMP { + + public: + DihedralCharmmOMP(class LAMMPS *lmp) : + DihedralCharmm(lmp), ThrOMP(lmp,DIHEDRAL) {}; + + virtual void compute(int, int); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/dihedral_class2_omp.cpp b/src/USER-OMP/dihedral_class2_omp.cpp new file mode 100644 index 0000000000..7348296644 --- /dev/null +++ b/src/USER-OMP/dihedral_class2_omp.cpp @@ -0,0 +1,532 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "lmptype.h" +#include "mpi.h" +#include "math.h" +#include "dihedral_class2_omp.h" +#include "atom.h" +#include "comm.h" +#include "neighbor.h" +#include "domain.h" +#include "force.h" +#include "update.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define TOLERANCE 0.05 +#define SMALL 0.0000001 + +/* ---------------------------------------------------------------------- */ + +void DihedralClass2OMP::compute(int eflag, int vflag) +{ + + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = neighbor->ndihedrallist; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_bond) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_bond) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_bond) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); +} + +template +void DihedralClass2OMP::eval(double **f, int nfrom, int nto, int tid) +{ + + int i1,i2,i3,i4,i,j,k,n,type; + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double edihedral; + double r1mag2,r1,r2mag2,r2,r3mag2,r3; + double sb1,rb1,sb2,rb2,sb3,rb3,c0,r12c1; + double r12c2,costh12,costh13,costh23,sc1,sc2,s1,s2,c; + double cosphi,phi,sinphi,a11,a22,a33,a12,a13,a23,sx1,sx2; + double sx12,sy1,sy2,sy12,sz1,sz2,sz12,dphi1,dphi2,dphi3; + double de_dihedral,t1,t2,t3,t4,cos2phi,cos3phi,bt1,bt2; + double bt3,sumbte,db,sumbtf,at1,at2,at3,da,da1,da2,r1_0; + double r3_0,dr1,dr2,tk1,tk2,s12,sin2; + double dcosphidr[4][3],dphidr[4][3],dbonddr[3][4][3],dthetadr[2][4][3]; + double fabcd[4][3]; + + edihedral = 0.0; + + double **x = atom->x; + int **dihedrallist = neighbor->dihedrallist; + int nlocal = atom->nlocal; + + for (n = nfrom; n < nto; n++) { + i1 = dihedrallist[n][0]; + i2 = dihedrallist[n][1]; + i3 = dihedrallist[n][2]; + i4 = dihedrallist[n][3]; + type = dihedrallist[n][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + domain->minimum_image(vb1x,vb1y,vb1z); + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + domain->minimum_image(vb2x,vb2y,vb2z); + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + domain->minimum_image(vb2xm,vb2ym,vb2zm); + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + domain->minimum_image(vb3x,vb3y,vb3z); + + // distances + + r1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z; + r1 = sqrt(r1mag2); + r2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z; + r2 = sqrt(r2mag2); + r3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z; + r3 = sqrt(r3mag2); + + sb1 = 1.0/r1mag2; + rb1 = 1.0/r1; + sb2 = 1.0/r2mag2; + rb2 = 1.0/r2; + sb3 = 1.0/r3mag2; + rb3 = 1.0/r3; + + c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3; + + // angles + + r12c1 = rb1*rb2; + r12c2 = rb2*rb3; + costh12 = (vb1x*vb2x + vb1y*vb2y + vb1z*vb2z) * r12c1; + costh13 = c0; + costh23 = (vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z) * r12c2; + + // cos and sin of 2 angles and final c + + sin2 = MAX(1.0 - costh12*costh12,0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0/sc1; + + sin2 = MAX(1.0 - costh23*costh23,0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0/sc2; + + s1 = sc1 * sc1; + s2 = sc2 * sc2; + s12 = sc1 * sc2; + c = (c0 + costh12*costh23) * s12; + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) { + int me; + MPI_Comm_rank(world,&me); + if (screen) { + char str[128]; + sprintf(str,"Dihedral problem: %d " BIGINT_FORMAT " %d %d %d %d", + me,update->ntimestep, + atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); + error->warning(FLERR,str,0); + fprintf(screen," 1st atom: %d %g %g %g\n", + me,x[i1][0],x[i1][1],x[i1][2]); + fprintf(screen," 2nd atom: %d %g %g %g\n", + me,x[i2][0],x[i2][1],x[i2][2]); + fprintf(screen," 3rd atom: %d %g %g %g\n", + me,x[i3][0],x[i3][1],x[i3][2]); + fprintf(screen," 4th atom: %d %g %g %g\n", + me,x[i4][0],x[i4][1],x[i4][2]); + } + } + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + cosphi = c; + phi = acos(c); + + sinphi = sqrt(1.0 - c*c); + sinphi = MAX(sinphi,SMALL); + + a11 = -c*sb1*s1; + a22 = sb2 * (2.0*costh13*s12 - c*(s1+s2)); + a33 = -c*sb3*s2; + a12 = r12c1 * (costh12*c*s1 + costh23*s12); + a13 = rb1*rb3*s12; + a23 = r12c2 * (-costh23*c*s2 - costh12*s12); + + sx1 = a11*vb1x + a12*vb2x + a13*vb3x; + sx2 = a12*vb1x + a22*vb2x + a23*vb3x; + sx12 = a13*vb1x + a23*vb2x + a33*vb3x; + sy1 = a11*vb1y + a12*vb2y + a13*vb3y; + sy2 = a12*vb1y + a22*vb2y + a23*vb3y; + sy12 = a13*vb1y + a23*vb2y + a33*vb3y; + sz1 = a11*vb1z + a12*vb2z + a13*vb3z; + sz2 = a12*vb1z + a22*vb2z + a23*vb3z; + sz12 = a13*vb1z + a23*vb2z + a33*vb3z; + + // set up d(cos(phi))/d(r) and dphi/dr arrays + + dcosphidr[0][0] = -sx1; + dcosphidr[0][1] = -sy1; + dcosphidr[0][2] = -sz1; + dcosphidr[1][0] = sx2 + sx1; + dcosphidr[1][1] = sy2 + sy1; + dcosphidr[1][2] = sz2 + sz1; + dcosphidr[2][0] = sx12 - sx2; + dcosphidr[2][1] = sy12 - sy2; + dcosphidr[2][2] = sz12 - sz2; + dcosphidr[3][0] = -sx12; + dcosphidr[3][1] = -sy12; + dcosphidr[3][2] = -sz12; + + for (i = 0; i < 4; i++) + for (j = 0; j < 3; j++) + dphidr[i][j] = -dcosphidr[i][j] / sinphi; + + // energy + + dphi1 = phi - phi1[type]; + dphi2 = 2.0*phi - phi2[type]; + dphi3 = 3.0*phi - phi3[type]; + + if (EFLAG) edihedral = k1[type]*(1.0 - cos(dphi1)) + + k2[type]*(1.0 - cos(dphi2)) + + k3[type]*(1.0 - cos(dphi3)); + + de_dihedral = k1[type]*sin(dphi1) + 2.0*k2[type]*sin(dphi2) + + 3.0*k3[type]*sin(dphi3); + + // torsion forces on all 4 atoms + + for (i = 0; i < 4; i++) + for (j = 0; j < 3; j++) + fabcd[i][j] = de_dihedral*dphidr[i][j]; + + // set up d(bond)/d(r) array + // dbonddr(i,j,k) = bond i, atom j, coordinate k + + for (i = 0; i < 3; i++) + for (j = 0; j < 4; j++) + for (k = 0; k < 3; k++) + dbonddr[i][j][k] = 0.0; + + // bond1 + + dbonddr[0][0][0] = vb1x / r1; + dbonddr[0][0][1] = vb1y / r1; + dbonddr[0][0][2] = vb1z / r1; + dbonddr[0][1][0] = -vb1x / r1; + dbonddr[0][1][1] = -vb1y / r1; + dbonddr[0][1][2] = -vb1z / r1; + + // bond2 + + dbonddr[1][1][0] = vb2x / r2; + dbonddr[1][1][1] = vb2y / r2; + dbonddr[1][1][2] = vb2z / r2; + dbonddr[1][2][0] = -vb2x / r2; + dbonddr[1][2][1] = -vb2y / r2; + dbonddr[1][2][2] = -vb2z / r2; + + // bond3 + + dbonddr[2][2][0] = vb3x / r3; + dbonddr[2][2][1] = vb3y / r3; + dbonddr[2][2][2] = vb3z / r3; + dbonddr[2][3][0] = -vb3x / r3; + dbonddr[2][3][1] = -vb3y / r3; + dbonddr[2][3][2] = -vb3z / r3; + + // set up d(theta)/d(r) array + // dthetadr(i,j,k) = angle i, atom j, coordinate k + + for (i = 0; i < 2; i++) + for (j = 0; j < 4; j++) + for (k = 0; k < 3; k++) + dthetadr[i][j][k] = 0.0; + + t1 = costh12 / r1mag2; + t2 = costh23 / r2mag2; + t3 = costh12 / r2mag2; + t4 = costh23 / r3mag2; + + // angle12 + + dthetadr[0][0][0] = sc1 * ((t1 * vb1x) - (vb2x * r12c1)); + dthetadr[0][0][1] = sc1 * ((t1 * vb1y) - (vb2y * r12c1)); + dthetadr[0][0][2] = sc1 * ((t1 * vb1z) - (vb2z * r12c1)); + + dthetadr[0][1][0] = sc1 * ((-t1 * vb1x) + (vb2x * r12c1) + + (-t3 * vb2x) + (vb1x * r12c1)); + dthetadr[0][1][1] = sc1 * ((-t1 * vb1y) + (vb2y * r12c1) + + (-t3 * vb2y) + (vb1y * r12c1)); + dthetadr[0][1][2] = sc1 * ((-t1 * vb1z) + (vb2z * r12c1) + + (-t3 * vb2z) + (vb1z * r12c1)); + + dthetadr[0][2][0] = sc1 * ((t3 * vb2x) - (vb1x * r12c1)); + dthetadr[0][2][1] = sc1 * ((t3 * vb2y) - (vb1y * r12c1)); + dthetadr[0][2][2] = sc1 * ((t3 * vb2z) - (vb1z * r12c1)); + + // angle23 + + dthetadr[1][1][0] = sc2 * ((t2 * vb2x) + (vb3x * r12c2)); + dthetadr[1][1][1] = sc2 * ((t2 * vb2y) + (vb3y * r12c2)); + dthetadr[1][1][2] = sc2 * ((t2 * vb2z) + (vb3z * r12c2)); + + dthetadr[1][2][0] = sc2 * ((-t2 * vb2x) - (vb3x * r12c2) + + (t4 * vb3x) + (vb2x * r12c2)); + dthetadr[1][2][1] = sc2 * ((-t2 * vb2y) - (vb3y * r12c2) + + (t4 * vb3y) + (vb2y * r12c2)); + dthetadr[1][2][2] = sc2 * ((-t2 * vb2z) - (vb3z * r12c2) + + (t4 * vb3z) + (vb2z * r12c2)); + + dthetadr[1][3][0] = -sc2 * ((t4 * vb3x) + (vb2x * r12c2)); + dthetadr[1][3][1] = -sc2 * ((t4 * vb3y) + (vb2y * r12c2)); + dthetadr[1][3][2] = -sc2 * ((t4 * vb3z) + (vb2z * r12c2)); + + // mid-bond/torsion coupling + // energy on bond2 (middle bond) + + cos2phi = cos(2.0*phi); + cos3phi = cos(3.0*phi); + + bt1 = mbt_f1[type] * cosphi; + bt2 = mbt_f2[type] * cos2phi; + bt3 = mbt_f3[type] * cos3phi; + sumbte = bt1 + bt2 + bt3; + db = r2 - mbt_r0[type]; + if (EFLAG) edihedral += db * sumbte; + + // force on bond2 + + bt1 = -mbt_f1[type] * sinphi; + bt2 = -2.0 * mbt_f2[type] * sin(2.0*phi); + bt3 = -3.0 * mbt_f3[type] * sin(3.0*phi); + sumbtf = bt1 + bt2 + bt3; + + for (i = 0; i < 4; i++) + for (j = 0; j < 3; j++) + fabcd[i][j] += db*sumbtf*dphidr[i][j] + sumbte*dbonddr[1][i][j]; + + // end-bond/torsion coupling + // energy on bond1 (first bond) + + bt1 = ebt_f1_1[type] * cosphi; + bt2 = ebt_f2_1[type] * cos2phi; + bt3 = ebt_f3_1[type] * cos3phi; + sumbte = bt1 + bt2 + bt3; + + db = r1 - ebt_r0_1[type]; + if (EFLAG) edihedral += db * (bt1+bt2+bt3); + + // force on bond1 + + bt1 = ebt_f1_1[type] * sinphi; + bt2 = 2.0 * ebt_f2_1[type] * sin(2.0*phi); + bt3 = 3.0 * ebt_f3_1[type] * sin(3.0*phi); + sumbtf = bt1 + bt2 + bt3; + + for (i = 0; i < 4; i++) + for (j = 0; j < 3; j++) + fabcd[i][j] -= db*sumbtf*dphidr[i][j] + sumbte*dbonddr[0][i][j]; + + // end-bond/torsion coupling + // energy on bond3 (last bond) + + bt1 = ebt_f1_2[type] * cosphi; + bt2 = ebt_f2_2[type] * cos2phi; + bt3 = ebt_f3_2[type] * cos3phi; + sumbte = bt1 + bt2 + bt3; + + db = r3 - ebt_r0_2[type]; + if (EFLAG) edihedral += db * (bt1+bt2+bt3); + + // force on bond3 + + bt1 = -ebt_f1_2[type] * sinphi; + bt2 = -2.0 * ebt_f2_2[type] * sin(2.0*phi); + bt3 = -3.0 * ebt_f3_2[type] * sin(3.0*phi); + sumbtf = bt1 + bt2 + bt3; + + for (i = 0; i < 4; i++) + for (j = 0; j < 3; j++) + fabcd[i][j] += db*sumbtf*dphidr[i][j] + sumbte*dbonddr[2][i][j]; + + // angle/torsion coupling + // energy on angle1 + + at1 = at_f1_1[type] * cosphi; + at2 = at_f2_1[type] * cos2phi; + at3 = at_f3_1[type] * cos3phi; + sumbte = at1 + at2 + at3; + + da = acos(costh12) - at_theta0_1[type]; + if (EFLAG) edihedral += da * (at1+at2+at3); + + // force on angle1 + + bt1 = at_f1_1[type] * sinphi; + bt2 = 2.0 * at_f2_1[type] * sin(2.0*phi); + bt3 = 3.0 * at_f3_1[type] * sin(3.0*phi); + sumbtf = bt1 + bt2 + bt3; + + for (i = 0; i < 4; i++) + for (j = 0; j < 3; j++) + fabcd[i][j] -= da*sumbtf*dphidr[i][j] + sumbte*dthetadr[0][i][j]; + + // energy on angle2 + + at1 = at_f1_2[type] * cosphi; + at2 = at_f2_2[type] * cos2phi; + at3 = at_f3_2[type] * cos3phi; + sumbte = at1 + at2 + at3; + + da = acos(costh23) - at_theta0_2[type]; + if (EFLAG) edihedral += da * (at1+at2+at3); + + // force on angle2 + + bt1 = -at_f1_2[type] * sinphi; + bt2 = -2.0 * at_f2_2[type] * sin(2.0*phi); + bt3 = -3.0 * at_f3_2[type] * sin(3.0*phi); + sumbtf = bt1 + bt2 + bt3; + + for (i = 0; i < 4; i++) + for (j = 0; j < 3; j++) + fabcd[i][j] += da*sumbtf*dphidr[i][j] + sumbte*dthetadr[1][i][j]; + + // angle/angle/torsion coupling + + da1 = acos(costh12) - aat_theta0_1[type]; + da2 = acos(costh23) - aat_theta0_2[type]; + + if (EFLAG) edihedral += aat_k[type]*da1*da2*cosphi; + + for (i = 0; i < 4; i++) + for (j = 0; j < 3; j++) + fabcd[i][j] -= aat_k[type] * + (cosphi * (da2*dthetadr[0][i][j] - da1*dthetadr[1][i][j]) + + sinphi * da1*da2*dphidr[i][j]); + + // bond1/bond3 coupling + + if (fabs(bb13t_k[type]) > SMALL) { + + r1_0 = bb13t_r10[type]; + r3_0 = bb13t_r30[type]; + dr1 = r1 - r1_0; + dr2 = r3 - r3_0; + tk1 = -bb13t_k[type] * dr1 / r3; + tk2 = -bb13t_k[type] * dr2 / r1; + + if (EFLAG) edihedral += bb13t_k[type]*dr1*dr2; + + fabcd[0][0] += tk2 * vb1x; + fabcd[0][1] += tk2 * vb1y; + fabcd[0][2] += tk2 * vb1z; + + fabcd[1][0] -= tk2 * vb1x; + fabcd[1][1] -= tk2 * vb1y; + fabcd[1][2] -= tk2 * vb1z; + + fabcd[2][0] -= tk1 * vb3x; + fabcd[2][1] -= tk1 * vb3y; + fabcd[2][2] -= tk1 * vb3z; + + fabcd[3][0] += tk1 * vb3x; + fabcd[3][1] += tk1 * vb3y; + fabcd[3][2] += tk1 * vb3z; + } + + // apply force to each of 4 atoms + + if (NEWTON_BOND || i1 < nlocal) { + f[i1][0] += fabcd[0][0]; + f[i1][1] += fabcd[0][1]; + f[i1][2] += fabcd[0][2]; + } + + if (NEWTON_BOND || i2 < nlocal) { + f[i2][0] += fabcd[1][0]; + f[i2][1] += fabcd[1][1]; + f[i2][2] += fabcd[1][2]; + } + + if (NEWTON_BOND || i3 < nlocal) { + f[i3][0] += fabcd[2][0]; + f[i3][1] += fabcd[2][1]; + f[i3][2] += fabcd[2][2]; + } + + if (NEWTON_BOND || i4 < nlocal) { + f[i4][0] += fabcd[3][0]; + f[i4][1] += fabcd[3][1]; + f[i4][2] += fabcd[3][2]; + } + + if (EVFLAG) + ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,edihedral, + fabcd[0],fabcd[2],fabcd[3], + vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,tid); + } +} + diff --git a/src/USER-OMP/dihedral_class2_omp.h b/src/USER-OMP/dihedral_class2_omp.h new file mode 100644 index 0000000000..d26f2f8713 --- /dev/null +++ b/src/USER-OMP/dihedral_class2_omp.h @@ -0,0 +1,48 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef DIHEDRAL_CLASS + +DihedralStyle(class2/omp,DihedralClass2OMP) + +#else + +#ifndef LMP_DIHEDRAL_CLASS2_OMP_H +#define LMP_DIHEDRAL_CLASS2_OMP_H + +#include "dihedral_class2.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class DihedralClass2OMP : public DihedralClass2, public ThrOMP { + + public: + DihedralClass2OMP(class LAMMPS *lmp) : + DihedralClass2(lmp), ThrOMP(lmp,DIHEDRAL) {}; + + virtual void compute(int, int); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp b/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp new file mode 100644 index 0000000000..a6c027e92d --- /dev/null +++ b/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp @@ -0,0 +1,263 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "lmptype.h" +#include "mpi.h" +#include "math.h" +#include "dihedral_cosine_shift_exp_omp.h" +#include "atom.h" +#include "comm.h" +#include "neighbor.h" +#include "domain.h" +#include "force.h" +#include "update.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define TOLERANCE 0.05 +#define SMALL 0.001 + +/* ---------------------------------------------------------------------- */ + +void DihedralCosineShiftExpOMP::compute(int eflag, int vflag) +{ + + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = neighbor->ndihedrallist; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_bond) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_bond) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_bond) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); +} + +template +void DihedralCosineShiftExpOMP::eval(double **f, int nfrom, int nto, int tid) +{ + + int i1,i2,i3,i4,n,type; + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double edihedral,f1[3],f2[3],f3[3],f4[3]; + double ax,ay,az,bx,by,bz,rasq,rbsq,rgsq,rg,rginv,ra2inv,rb2inv,rabinv; + double df,fg,hg,fga,hgb,gaa,gbb; + double dtfx,dtfy,dtfz,dtgx,dtgy,dtgz,dthx,dthy,dthz; + double c,s,sx2,sy2,sz2; + double cccpsss,cssmscc,exp2; + + edihedral = 0.0; + + double **x = atom->x; + int **dihedrallist = neighbor->dihedrallist; + int nlocal = atom->nlocal; + + for (n = nfrom; n < nto; n++) { + i1 = dihedrallist[n][0]; + i2 = dihedrallist[n][1]; + i3 = dihedrallist[n][2]; + i4 = dihedrallist[n][3]; + type = dihedrallist[n][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + domain->minimum_image(vb1x,vb1y,vb1z); + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + domain->minimum_image(vb2x,vb2y,vb2z); + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + domain->minimum_image(vb2xm,vb2ym,vb2zm); + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + domain->minimum_image(vb3x,vb3y,vb3z); + + // c,s calculation + + ax = vb1y*vb2zm - vb1z*vb2ym; + ay = vb1z*vb2xm - vb1x*vb2zm; + az = vb1x*vb2ym - vb1y*vb2xm; + bx = vb3y*vb2zm - vb3z*vb2ym; + by = vb3z*vb2xm - vb3x*vb2zm; + bz = vb3x*vb2ym - vb3y*vb2xm; + + rasq = ax*ax + ay*ay + az*az; + rbsq = bx*bx + by*by + bz*bz; + rgsq = vb2xm*vb2xm + vb2ym*vb2ym + vb2zm*vb2zm; + rg = sqrt(rgsq); + + rginv = ra2inv = rb2inv = 0.0; + if (rg > 0) rginv = 1.0/rg; + if (rasq > 0) ra2inv = 1.0/rasq; + if (rbsq > 0) rb2inv = 1.0/rbsq; + rabinv = sqrt(ra2inv*rb2inv); + + c = (ax*bx + ay*by + az*bz)*rabinv; + s = rg*rabinv*(ax*vb3x + ay*vb3y + az*vb3z); + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) { + int me = comm->me; + + if (screen) { + char str[128]; + sprintf(str,"Dihedral problem: %d/%d " BIGINT_FORMAT " %d %d %d %d", + me,tid,update->ntimestep, + atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); + error->warning(FLERR,str,0); + fprintf(screen," 1st atom: %d %g %g %g\n", + me,x[i1][0],x[i1][1],x[i1][2]); + fprintf(screen," 2nd atom: %d %g %g %g\n", + me,x[i2][0],x[i2][1],x[i2][2]); + fprintf(screen," 3rd atom: %d %g %g %g\n", + me,x[i3][0],x[i3][1],x[i3][2]); + fprintf(screen," 4th atom: %d %g %g %g\n", + me,x[i4][0],x[i4][1],x[i4][2]); + } + } + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + double aa=a[type]; + double uumin=umin[type]; + + cccpsss = c*cost[type]+s*sint[type]; + cssmscc = c*sint[type]-s*cost[type]; + + if (doExpansion[type]) { + // |a|<0.001 so use expansions relative precision <1e-5 + if (EFLAG) edihedral = -0.125*(1+cccpsss)*(4+aa*(cccpsss-1))*uumin; + df=0.5*uumin*( cssmscc + 0.5*aa*cccpsss); + } else { + exp2=exp(0.5*aa*(1+cccpsss)); + if (EFLAG) edihedral = opt1[type]*(1-exp2); + df= 0.5*opt1[type]*aa* ( exp2*cssmscc ); + } + + fg = vb1x*vb2xm + vb1y*vb2ym + vb1z*vb2zm; + hg = vb3x*vb2xm + vb3y*vb2ym + vb3z*vb2zm; + fga = fg*ra2inv*rginv; + hgb = hg*rb2inv*rginv; + gaa = -ra2inv*rg; + gbb = rb2inv*rg; + + dtfx = gaa*ax; + dtfy = gaa*ay; + dtfz = gaa*az; + dtgx = fga*ax - hgb*bx; + dtgy = fga*ay - hgb*by; + dtgz = fga*az - hgb*bz; + dthx = gbb*bx; + dthy = gbb*by; + dthz = gbb*bz; + + sx2 = df*dtgx; + sy2 = df*dtgy; + sz2 = df*dtgz; + + f1[0] = df*dtfx; + f1[1] = df*dtfy; + f1[2] = df*dtfz; + + f2[0] = sx2 - f1[0]; + f2[1] = sy2 - f1[1]; + f2[2] = sz2 - f1[2]; + + f4[0] = df*dthx; + f4[1] = df*dthy; + f4[2] = df*dthz; + + f3[0] = -sx2 - f4[0]; + f3[1] = -sy2 - f4[1]; + f3[2] = -sz2 - f4[2]; + + // apply force to each of 4 atoms + + if (NEWTON_BOND || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (NEWTON_BOND || i2 < nlocal) { + f[i2][0] += f2[0]; + f[i2][1] += f2[1]; + f[i2][2] += f2[2]; + } + + if (NEWTON_BOND || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (NEWTON_BOND || i4 < nlocal) { + f[i4][0] += f4[0]; + f[i4][1] += f4[1]; + f[i4][2] += f4[2]; + } + + if (EVFLAG) + ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,edihedral,f1,f3,f4, + vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,tid); + } +} + diff --git a/src/USER-OMP/dihedral_cosine_shift_exp_omp.h b/src/USER-OMP/dihedral_cosine_shift_exp_omp.h new file mode 100644 index 0000000000..eb906ab953 --- /dev/null +++ b/src/USER-OMP/dihedral_cosine_shift_exp_omp.h @@ -0,0 +1,48 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef DIHEDRAL_CLASS + +DihedralStyle(cosine/shift/exp/omp,DihedralCosineShiftExpOMP) + +#else + +#ifndef LMP_DIHEDRAL_COSINE_SHIFT_EXP_OMP_H +#define LMP_DIHEDRAL_COSINE_SHIFT_EXP_OMP_H + +#include "dihedral_cosine_shift_exp.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class DihedralCosineShiftExpOMP : public DihedralCosineShiftExp, public ThrOMP { + + public: + DihedralCosineShiftExpOMP(class LAMMPS *lmp) : + DihedralCosineShiftExp(lmp), ThrOMP(lmp,DIHEDRAL) {}; + + virtual void compute(int, int); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/dihedral_harmonic_omp.cpp b/src/USER-OMP/dihedral_harmonic_omp.cpp new file mode 100644 index 0000000000..0fa24090a7 --- /dev/null +++ b/src/USER-OMP/dihedral_harmonic_omp.cpp @@ -0,0 +1,270 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "lmptype.h" +#include "mpi.h" +#include "math.h" +#include "dihedral_harmonic_omp.h" +#include "atom.h" +#include "comm.h" +#include "neighbor.h" +#include "domain.h" +#include "force.h" +#include "update.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define TOLERANCE 0.05 +#define SMALL 0.001 + +/* ---------------------------------------------------------------------- */ + +void DihedralHarmonicOMP::compute(int eflag, int vflag) +{ + + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = neighbor->ndihedrallist; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_bond) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_bond) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_bond) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); +} + +template +void DihedralHarmonicOMP::eval(double **f, int nfrom, int nto, int tid) +{ + + int i1,i2,i3,i4,i,m,n,type; + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double edihedral,f1[3],f2[3],f3[3],f4[3]; + double ax,ay,az,bx,by,bz,rasq,rbsq,rgsq,rg,rginv,ra2inv,rb2inv,rabinv; + double df,df1,ddf1,fg,hg,fga,hgb,gaa,gbb; + double dtfx,dtfy,dtfz,dtgx,dtgy,dtgz,dthx,dthy,dthz; + double c,s,p,sx2,sy2,sz2; + + edihedral = 0.0; + + double **x = atom->x; + int **dihedrallist = neighbor->dihedrallist; + int nlocal = atom->nlocal; + + for (n = nfrom; n < nto; n++) { + i1 = dihedrallist[n][0]; + i2 = dihedrallist[n][1]; + i3 = dihedrallist[n][2]; + i4 = dihedrallist[n][3]; + type = dihedrallist[n][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + domain->minimum_image(vb1x,vb1y,vb1z); + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + domain->minimum_image(vb2x,vb2y,vb2z); + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + domain->minimum_image(vb2xm,vb2ym,vb2zm); + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + domain->minimum_image(vb3x,vb3y,vb3z); + + // c,s calculation + + ax = vb1y*vb2zm - vb1z*vb2ym; + ay = vb1z*vb2xm - vb1x*vb2zm; + az = vb1x*vb2ym - vb1y*vb2xm; + bx = vb3y*vb2zm - vb3z*vb2ym; + by = vb3z*vb2xm - vb3x*vb2zm; + bz = vb3x*vb2ym - vb3y*vb2xm; + + rasq = ax*ax + ay*ay + az*az; + rbsq = bx*bx + by*by + bz*bz; + rgsq = vb2xm*vb2xm + vb2ym*vb2ym + vb2zm*vb2zm; + rg = sqrt(rgsq); + + rginv = ra2inv = rb2inv = 0.0; + if (rg > 0) rginv = 1.0/rg; + if (rasq > 0) ra2inv = 1.0/rasq; + if (rbsq > 0) rb2inv = 1.0/rbsq; + rabinv = sqrt(ra2inv*rb2inv); + + c = (ax*bx + ay*by + az*bz)*rabinv; + s = rg*rabinv*(ax*vb3x + ay*vb3y + az*vb3z); + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) { + int me = comm->me; + + if (screen) { + char str[128]; + sprintf(str,"Dihedral problem: %d/%d " BIGINT_FORMAT " %d %d %d %d", + me,tid,update->ntimestep, + atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); + error->warning(FLERR,str,0); + fprintf(screen," 1st atom: %d %g %g %g\n", + me,x[i1][0],x[i1][1],x[i1][2]); + fprintf(screen," 2nd atom: %d %g %g %g\n", + me,x[i2][0],x[i2][1],x[i2][2]); + fprintf(screen," 3rd atom: %d %g %g %g\n", + me,x[i3][0],x[i3][1],x[i3][2]); + fprintf(screen," 4th atom: %d %g %g %g\n", + me,x[i4][0],x[i4][1],x[i4][2]); + } + } + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + m = multiplicity[type]; + p = 1.0; + df1 = 0.0; + + for (i = 0; i < m; i++) { + ddf1 = p*c - df1*s; + df1 = p*s + df1*c; + p = ddf1; + } + + p = p*cos_shift[type] + df1*sin_shift[type]; + df1 = df1*cos_shift[type] - ddf1*sin_shift[type]; + df1 *= -m; + p += 1.0; + + if (m == 0) { + p = 1.0 + cos_shift[type]; + df1 = 0.0; + } + + if (EFLAG) edihedral = k[type] * p; + + fg = vb1x*vb2xm + vb1y*vb2ym + vb1z*vb2zm; + hg = vb3x*vb2xm + vb3y*vb2ym + vb3z*vb2zm; + fga = fg*ra2inv*rginv; + hgb = hg*rb2inv*rginv; + gaa = -ra2inv*rg; + gbb = rb2inv*rg; + + dtfx = gaa*ax; + dtfy = gaa*ay; + dtfz = gaa*az; + dtgx = fga*ax - hgb*bx; + dtgy = fga*ay - hgb*by; + dtgz = fga*az - hgb*bz; + dthx = gbb*bx; + dthy = gbb*by; + dthz = gbb*bz; + + df = -k[type] * df1; + + sx2 = df*dtgx; + sy2 = df*dtgy; + sz2 = df*dtgz; + + f1[0] = df*dtfx; + f1[1] = df*dtfy; + f1[2] = df*dtfz; + + f2[0] = sx2 - f1[0]; + f2[1] = sy2 - f1[1]; + f2[2] = sz2 - f1[2]; + + f4[0] = df*dthx; + f4[1] = df*dthy; + f4[2] = df*dthz; + + f3[0] = -sx2 - f4[0]; + f3[1] = -sy2 - f4[1]; + f3[2] = -sz2 - f4[2]; + + // apply force to each of 4 atoms + + if (NEWTON_BOND || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (NEWTON_BOND || i2 < nlocal) { + f[i2][0] += f2[0]; + f[i2][1] += f2[1]; + f[i2][2] += f2[2]; + } + + if (NEWTON_BOND || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (NEWTON_BOND || i4 < nlocal) { + f[i4][0] += f4[0]; + f[i4][1] += f4[1]; + f[i4][2] += f4[2]; + } + + if (EVFLAG) + ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,edihedral,f1,f3,f4, + vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,tid); + } +} + diff --git a/src/USER-OMP/dihedral_harmonic_omp.h b/src/USER-OMP/dihedral_harmonic_omp.h new file mode 100644 index 0000000000..2d7bae64ee --- /dev/null +++ b/src/USER-OMP/dihedral_harmonic_omp.h @@ -0,0 +1,48 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef DIHEDRAL_CLASS + +DihedralStyle(harmonic/omp,DihedralHarmonicOMP) + +#else + +#ifndef LMP_DIHEDRAL_HARMONIC_OMP_H +#define LMP_DIHEDRAL_HARMONIC_OMP_H + +#include "dihedral_harmonic.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class DihedralHarmonicOMP : public DihedralHarmonic, public ThrOMP { + + public: + DihedralHarmonicOMP(class LAMMPS *lmp) : + DihedralHarmonic(lmp), ThrOMP(lmp,DIHEDRAL) {}; + + virtual void compute(int, int); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/dihedral_helix_omp.cpp b/src/USER-OMP/dihedral_helix_omp.cpp new file mode 100644 index 0000000000..4ec701a0cb --- /dev/null +++ b/src/USER-OMP/dihedral_helix_omp.cpp @@ -0,0 +1,282 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "lmptype.h" +#include "mpi.h" +#include "math.h" +#include "dihedral_helix_omp.h" +#include "atom.h" +#include "comm.h" +#include "neighbor.h" +#include "domain.h" +#include "force.h" +#include "update.h" +#include "math_const.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define TOLERANCE 0.05 +#define SMALL 0.001 +#define SMALLER 0.00001 + +/* ---------------------------------------------------------------------- */ + +void DihedralHelixOMP::compute(int eflag, int vflag) +{ + + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = neighbor->ndihedrallist; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_bond) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_bond) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_bond) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); +} + +template +void DihedralHelixOMP::eval(double **f, int nfrom, int nto, int tid) +{ + + int i1,i2,i3,i4,n,type; + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double edihedral,f1[3],f2[3],f3[3],f4[3]; + double sb1,sb2,sb3,rb1,rb3,c0,b1mag2,b1mag,b2mag2; + double b2mag,b3mag2,b3mag,ctmp,r12c1,c1mag,r12c2; + double c2mag,sc1,sc2,s1,s12,c,pd,a,a11,a22; + double a33,a12,a13,a23,sx2,sy2,sz2; + double s2,cx,cy,cz,cmag,dx,phi,si,siinv,sin2; + + edihedral = 0.0; + + double **x = atom->x; + int **dihedrallist = neighbor->dihedrallist; + int nlocal = atom->nlocal; + + for (n = nfrom; n < nto; n++) { + i1 = dihedrallist[n][0]; + i2 = dihedrallist[n][1]; + i3 = dihedrallist[n][2]; + i4 = dihedrallist[n][3]; + type = dihedrallist[n][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + domain->minimum_image(vb1x,vb1y,vb1z); + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + domain->minimum_image(vb2x,vb2y,vb2z); + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + domain->minimum_image(vb2xm,vb2ym,vb2zm); + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + domain->minimum_image(vb3x,vb3y,vb3z); + + // c0 calculation + + sb1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z); + sb2 = 1.0 / (vb2x*vb2x + vb2y*vb2y + vb2z*vb2z); + sb3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3; + + // 1st and 2nd angle + + b1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x*vb2x + vb1y*vb2y + vb1z*vb2z; + r12c1 = 1.0 / (b1mag*b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z; + r12c2 = 1.0 / (b2mag*b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + + sin2 = MAX(1.0 - c1mag*c1mag,0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0/sc1; + + sin2 = MAX(1.0 - c2mag*c2mag,0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0/sc2; + + s1 = sc1 * sc1; + s2 = sc2 * sc2; + s12 = sc1 * sc2; + c = (c0 + c1mag*c2mag) * s12; + + cx = vb1y*vb2z - vb1z*vb2y; + cy = vb1z*vb2x - vb1x*vb2z; + cz = vb1x*vb2y - vb1y*vb2x; + cmag = sqrt(cx*cx + cy*cy + cz*cz); + dx = (cx*vb3x + cy*vb3y + cz*vb3z)/cmag/b3mag; + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) { + int me = comm->me; + if (screen) { + char str[128]; + sprintf(str,"Dihedral problem: %d/%d " BIGINT_FORMAT " %d %d %d %d", + me,tid,update->ntimestep, + atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); + error->warning(FLERR,str,0); + fprintf(screen," 1st atom: %d %g %g %g\n", + me,x[i1][0],x[i1][1],x[i1][2]); + fprintf(screen," 2nd atom: %d %g %g %g\n", + me,x[i2][0],x[i2][1],x[i2][2]); + fprintf(screen," 3rd atom: %d %g %g %g\n", + me,x[i3][0],x[i3][1],x[i3][2]); + fprintf(screen," 4th atom: %d %g %g %g\n", + me,x[i4][0],x[i4][1],x[i4][2]); + } + } + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + phi = acos(c); + if (dx < 0.0) phi *= -1.0; + si = sin(phi); + if (fabs(si) < SMALLER) si = SMALLER; + siinv = 1.0/si; + + pd = -aphi[type] + 3.0*bphi[type]*sin(3.0*phi)*siinv + + cphi[type]*sin(phi + MY_PI4)*siinv; + + if (EFLAG) edihedral = aphi[type]*(1.0 - c) + bphi[type]*(1.0 + cos(3.0*phi)) + + cphi[type]*(1.0 + cos(phi + MY_PI4)); +; + + a = pd; + c = c * a; + s12 = s12 * a; + a11 = c*sb1*s1; + a22 = -sb2 * (2.0*c0*s12 - c*(s1+s2)); + a33 = c*sb3*s2; + a12 = -r12c1 * (c1mag*c*s1 + c2mag*s12); + a13 = -rb1*rb3*s12; + a23 = r12c2 * (c2mag*c*s2 + c1mag*s12); + + sx2 = a12*vb1x + a22*vb2x + a23*vb3x; + sy2 = a12*vb1y + a22*vb2y + a23*vb3y; + sz2 = a12*vb1z + a22*vb2z + a23*vb3z; + + f1[0] = a11*vb1x + a12*vb2x + a13*vb3x; + f1[1] = a11*vb1y + a12*vb2y + a13*vb3y; + f1[2] = a11*vb1z + a12*vb2z + a13*vb3z; + + f2[0] = -sx2 - f1[0]; + f2[1] = -sy2 - f1[1]; + f2[2] = -sz2 - f1[2]; + + f4[0] = a13*vb1x + a23*vb2x + a33*vb3x; + f4[1] = a13*vb1y + a23*vb2y + a33*vb3y; + f4[2] = a13*vb1z + a23*vb2z + a33*vb3z; + + f3[0] = sx2 - f4[0]; + f3[1] = sy2 - f4[1]; + f3[2] = sz2 - f4[2]; + + // apply force to each of 4 atoms + + if (NEWTON_BOND || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (NEWTON_BOND || i2 < nlocal) { + f[i2][0] += f2[0]; + f[i2][1] += f2[1]; + f[i2][2] += f2[2]; + } + + if (NEWTON_BOND || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (NEWTON_BOND || i4 < nlocal) { + f[i4][0] += f4[0]; + f[i4][1] += f4[1]; + f[i4][2] += f4[2]; + } + + if (EVFLAG) + ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,edihedral,f1,f3,f4, + vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,tid); + } +} diff --git a/src/USER-OMP/dihedral_helix_omp.h b/src/USER-OMP/dihedral_helix_omp.h new file mode 100644 index 0000000000..7923197413 --- /dev/null +++ b/src/USER-OMP/dihedral_helix_omp.h @@ -0,0 +1,48 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef DIHEDRAL_CLASS + +DihedralStyle(helix/omp,DihedralHelixOMP) + +#else + +#ifndef LMP_DIHEDRAL_HELIX_OMP_H +#define LMP_DIHEDRAL_HELIX_OMP_H + +#include "dihedral_helix.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class DihedralHelixOMP : public DihedralHelix, public ThrOMP { + + public: + DihedralHelixOMP(class LAMMPS *lmp) : + DihedralHelix(lmp), ThrOMP(lmp,DIHEDRAL) {}; + + virtual void compute(int, int); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/dihedral_multi_harmonic_omp.cpp b/src/USER-OMP/dihedral_multi_harmonic_omp.cpp new file mode 100644 index 0000000000..bde958984e --- /dev/null +++ b/src/USER-OMP/dihedral_multi_harmonic_omp.cpp @@ -0,0 +1,269 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "lmptype.h" +#include "mpi.h" +#include "math.h" +#include "dihedral_multi_harmonic_omp.h" +#include "atom.h" +#include "comm.h" +#include "neighbor.h" +#include "domain.h" +#include "force.h" +#include "update.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define TOLERANCE 0.05 +#define SMALL 0.001 + +/* ---------------------------------------------------------------------- */ + +void DihedralMultiHarmonicOMP::compute(int eflag, int vflag) +{ + + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = neighbor->ndihedrallist; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_bond) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_bond) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_bond) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); +} + +template +void DihedralMultiHarmonicOMP::eval(double **f, int nfrom, int nto, int tid) +{ + + int i1,i2,i3,i4,n,type; + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double edihedral,f1[3],f2[3],f3[3],f4[3]; + double sb1,sb2,sb3,rb1,rb3,c0,b1mag2,b1mag,b2mag2; + double b2mag,b3mag2,b3mag,ctmp,r12c1,c1mag,r12c2; + double c2mag,sc1,sc2,s1,s12,c,pd,a,a11,a22; + double a33,a12,a13,a23,sx2,sy2,sz2; + double s2,sin2; + + edihedral = 0.0; + + double **x = atom->x; + int **dihedrallist = neighbor->dihedrallist; + int nlocal = atom->nlocal; + + for (n = nfrom; n < nto; n++) { + i1 = dihedrallist[n][0]; + i2 = dihedrallist[n][1]; + i3 = dihedrallist[n][2]; + i4 = dihedrallist[n][3]; + type = dihedrallist[n][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + domain->minimum_image(vb1x,vb1y,vb1z); + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + domain->minimum_image(vb2x,vb2y,vb2z); + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + domain->minimum_image(vb2xm,vb2ym,vb2zm); + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + domain->minimum_image(vb3x,vb3y,vb3z); + + // c0 calculation + + sb1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z); + sb2 = 1.0 / (vb2x*vb2x + vb2y*vb2y + vb2z*vb2z); + sb3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3; + + // 1st and 2nd angle + + b1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x*vb2x + vb1y*vb2y + vb1z*vb2z; + r12c1 = 1.0 / (b1mag*b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z; + r12c2 = 1.0 / (b2mag*b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + + sin2 = MAX(1.0 - c1mag*c1mag,0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0/sc1; + + sin2 = MAX(1.0 - c2mag*c2mag,0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0/sc2; + + s1 = sc1 * sc1; + s2 = sc2 * sc2; + s12 = sc1 * sc2; + c = (c0 + c1mag*c2mag) * s12; + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) { + int me = comm->me; + if (screen) { + char str[128]; + sprintf(str,"Dihedral problem: %d/%d " BIGINT_FORMAT " %d %d %d %d", + me,tid,update->ntimestep, + atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); + error->warning(FLERR,str,0); + fprintf(screen," 1st atom: %d %g %g %g\n", + me,x[i1][0],x[i1][1],x[i1][2]); + fprintf(screen," 2nd atom: %d %g %g %g\n", + me,x[i2][0],x[i2][1],x[i2][2]); + fprintf(screen," 3rd atom: %d %g %g %g\n", + me,x[i3][0],x[i3][1],x[i3][2]); + fprintf(screen," 4th atom: %d %g %g %g\n", + me,x[i4][0],x[i4][1],x[i4][2]); + } + } + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + // force & energy + // p = sum (i=1,5) a_i * c**(i-1) + // pd = dp/dc + + pd = a2[type] + c*(2.0*a3[type] + c*(3.0*a4[type] + c*4.0*a5[type])); + + if (EFLAG) + edihedral = a1[type] + c*(a2[type] + c*(a3[type] + c*(a4[type] + c*a5[type]))); + + a = pd; + c = c * a; + s12 = s12 * a; + a11 = c*sb1*s1; + a22 = -sb2 * (2.0*c0*s12 - c*(s1+s2)); + a33 = c*sb3*s2; + a12 = -r12c1*(c1mag*c*s1 + c2mag*s12); + a13 = -rb1*rb3*s12; + a23 = r12c2*(c2mag*c*s2 + c1mag*s12); + + sx2 = a12*vb1x + a22*vb2x + a23*vb3x; + sy2 = a12*vb1y + a22*vb2y + a23*vb3y; + sz2 = a12*vb1z + a22*vb2z + a23*vb3z; + + f1[0] = a11*vb1x + a12*vb2x + a13*vb3x; + f1[1] = a11*vb1y + a12*vb2y + a13*vb3y; + f1[2] = a11*vb1z + a12*vb2z + a13*vb3z; + + f2[0] = -sx2 - f1[0]; + f2[1] = -sy2 - f1[1]; + f2[2] = -sz2 - f1[2]; + + f4[0] = a13*vb1x + a23*vb2x + a33*vb3x; + f4[1] = a13*vb1y + a23*vb2y + a33*vb3y; + f4[2] = a13*vb1z + a23*vb2z + a33*vb3z; + + f3[0] = sx2 - f4[0]; + f3[1] = sy2 - f4[1]; + f3[2] = sz2 - f4[2]; + + // apply force to each of 4 atoms + + if (NEWTON_BOND || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (NEWTON_BOND || i2 < nlocal) { + f[i2][0] += f2[0]; + f[i2][1] += f2[1]; + f[i2][2] += f2[2]; + } + + if (NEWTON_BOND || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (NEWTON_BOND || i4 < nlocal) { + f[i4][0] += f4[0]; + f[i4][1] += f4[1]; + f[i4][2] += f4[2]; + } + + if (EVFLAG) + ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,edihedral,f1,f3,f4, + vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,tid); + } +} diff --git a/src/USER-OMP/dihedral_multi_harmonic_omp.h b/src/USER-OMP/dihedral_multi_harmonic_omp.h new file mode 100644 index 0000000000..da2322f038 --- /dev/null +++ b/src/USER-OMP/dihedral_multi_harmonic_omp.h @@ -0,0 +1,48 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef DIHEDRAL_CLASS + +DihedralStyle(multi/harmonic/omp,DihedralMultiHarmonicOMP) + +#else + +#ifndef LMP_DIHEDRAL_MULTI_HARMONIC_OMP_H +#define LMP_DIHEDRAL_MULTI_HARMONIC_OMP_H + +#include "dihedral_multi_harmonic.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class DihedralMultiHarmonicOMP : public DihedralMultiHarmonic, public ThrOMP { + + public: + DihedralMultiHarmonicOMP(class LAMMPS *lmp) : + DihedralMultiHarmonic(lmp), ThrOMP(lmp,DIHEDRAL) {}; + + virtual void compute(int, int); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/dihedral_opls_omp.cpp b/src/USER-OMP/dihedral_opls_omp.cpp new file mode 100644 index 0000000000..9f59e26d26 --- /dev/null +++ b/src/USER-OMP/dihedral_opls_omp.cpp @@ -0,0 +1,286 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "lmptype.h" +#include "mpi.h" +#include "math.h" +#include "dihedral_opls_omp.h" +#include "atom.h" +#include "comm.h" +#include "neighbor.h" +#include "domain.h" +#include "force.h" +#include "update.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define TOLERANCE 0.05 +#define SMALL 0.001 +#define SMALLER 0.00001 + +/* ---------------------------------------------------------------------- */ + +void DihedralOPLSOMP::compute(int eflag, int vflag) +{ + + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = neighbor->ndihedrallist; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_bond) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_bond) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_bond) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); +} + +template +void DihedralOPLSOMP::eval(double **f, int nfrom, int nto, int tid) +{ + + int i1,i2,i3,i4,n,type; + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double edihedral,f1[3],f2[3],f3[3],f4[3]; + double sb1,sb2,sb3,rb1,rb3,c0,b1mag2,b1mag,b2mag2; + double b2mag,b3mag2,b3mag,ctmp,r12c1,c1mag,r12c2; + double c2mag,sc1,sc2,s1,s12,c,pd,a,a11,a22; + double a33,a12,a13,a23,sx2,sy2,sz2; + double s2,cx,cy,cz,cmag,dx,phi,si,siinv,sin2; + + edihedral = 0.0; + + double **x = atom->x; + int **dihedrallist = neighbor->dihedrallist; + int nlocal = atom->nlocal; + + for (n = nfrom; n < nto; n++) { + i1 = dihedrallist[n][0]; + i2 = dihedrallist[n][1]; + i3 = dihedrallist[n][2]; + i4 = dihedrallist[n][3]; + type = dihedrallist[n][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + domain->minimum_image(vb1x,vb1y,vb1z); + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + domain->minimum_image(vb2x,vb2y,vb2z); + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + domain->minimum_image(vb2xm,vb2ym,vb2zm); + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + domain->minimum_image(vb3x,vb3y,vb3z); + + // c0 calculation + + sb1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z); + sb2 = 1.0 / (vb2x*vb2x + vb2y*vb2y + vb2z*vb2z); + sb3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3; + + // 1st and 2nd angle + + b1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x*vb2x + vb1y*vb2y + vb1z*vb2z; + r12c1 = 1.0 / (b1mag*b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z; + r12c2 = 1.0 / (b2mag*b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + + sin2 = MAX(1.0 - c1mag*c1mag,0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0/sc1; + + sin2 = MAX(1.0 - c2mag*c2mag,0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0/sc2; + + s1 = sc1 * sc1; + s2 = sc2 * sc2; + s12 = sc1 * sc2; + c = (c0 + c1mag*c2mag) * s12; + + cx = vb1y*vb2z - vb1z*vb2y; + cy = vb1z*vb2x - vb1x*vb2z; + cz = vb1x*vb2y - vb1y*vb2x; + cmag = sqrt(cx*cx + cy*cy + cz*cz); + dx = (cx*vb3x + cy*vb3y + cz*vb3z)/cmag/b3mag; + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) { + int me = comm->me; + + if (screen) { + char str[128]; + sprintf(str,"Dihedral problem: %d/%d " BIGINT_FORMAT " %d %d %d %d", + me,tid,update->ntimestep, + atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); + error->warning(FLERR,str,0); + fprintf(screen," 1st atom: %d %g %g %g\n", + me,x[i1][0],x[i1][1],x[i1][2]); + fprintf(screen," 2nd atom: %d %g %g %g\n", + me,x[i2][0],x[i2][1],x[i2][2]); + fprintf(screen," 3rd atom: %d %g %g %g\n", + me,x[i3][0],x[i3][1],x[i3][2]); + fprintf(screen," 4th atom: %d %g %g %g\n", + me,x[i4][0],x[i4][1],x[i4][2]); + } + } + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + // force & energy + // p = sum (i=1,4) k_i * (1 + (-1)**(i+1)*cos(i*phi) ) + // pd = dp/dc + + phi = acos(c); + if (dx < 0.0) phi *= -1.0; + si = sin(phi); + if (fabs(si) < SMALLER) si = SMALLER; + siinv = 1.0/si; + + pd = k1[type] - 2.0*k2[type]*sin(2.0*phi)*siinv + + 3.0*k3[type]*sin(3.0*phi)*siinv - 4.0*k4[type]*sin(4.0*phi)*siinv; + + if (EFLAG) edihedral = k1[type]*(1.0 + c) + k2[type]*(1.0 - cos(2.0*phi)) + + k3[type]*(1.0 + cos(3.0*phi)) + k4[type]*(1.0 - cos(4.0*phi)); + + + a = pd; + c = c * a; + s12 = s12 * a; + a11 = c*sb1*s1; + a22 = -sb2 * (2.0*c0*s12 - c*(s1+s2)); + a33 = c*sb3*s2; + a12 = -r12c1 * (c1mag*c*s1 + c2mag*s12); + a13 = -rb1*rb3*s12; + a23 = r12c2 * (c2mag*c*s2 + c1mag*s12); + + sx2 = a12*vb1x + a22*vb2x + a23*vb3x; + sy2 = a12*vb1y + a22*vb2y + a23*vb3y; + sz2 = a12*vb1z + a22*vb2z + a23*vb3z; + + f1[0] = a11*vb1x + a12*vb2x + a13*vb3x; + f1[1] = a11*vb1y + a12*vb2y + a13*vb3y; + f1[2] = a11*vb1z + a12*vb2z + a13*vb3z; + + f2[0] = -sx2 - f1[0]; + f2[1] = -sy2 - f1[1]; + f2[2] = -sz2 - f1[2]; + + f4[0] = a13*vb1x + a23*vb2x + a33*vb3x; + f4[1] = a13*vb1y + a23*vb2y + a33*vb3y; + f4[2] = a13*vb1z + a23*vb2z + a33*vb3z; + + f3[0] = sx2 - f4[0]; + f3[1] = sy2 - f4[1]; + f3[2] = sz2 - f4[2]; + + // apply force to each of 4 atoms + + if (NEWTON_BOND || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (NEWTON_BOND || i2 < nlocal) { + f[i2][0] += f2[0]; + f[i2][1] += f2[1]; + f[i2][2] += f2[2]; + } + + if (NEWTON_BOND || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (NEWTON_BOND || i4 < nlocal) { + f[i4][0] += f4[0]; + f[i4][1] += f4[1]; + f[i4][2] += f4[2]; + } + + if (EVFLAG) + ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,edihedral,f1,f3,f4, + vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,tid); + } +} + diff --git a/src/USER-OMP/dihedral_opls_omp.h b/src/USER-OMP/dihedral_opls_omp.h new file mode 100644 index 0000000000..58b9920538 --- /dev/null +++ b/src/USER-OMP/dihedral_opls_omp.h @@ -0,0 +1,48 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef DIHEDRAL_CLASS + +DihedralStyle(opls/omp,DihedralOPLSOMP) + +#else + +#ifndef LMP_DIHEDRAL_OPLS_OMP_H +#define LMP_DIHEDRAL_OPLS_OMP_H + +#include "dihedral_opls.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class DihedralOPLSOMP : public DihedralOPLS, public ThrOMP { + + public: + DihedralOPLSOMP(class LAMMPS *lmp) : + DihedralOPLS(lmp), ThrOMP(lmp,DIHEDRAL) {}; + + virtual void compute(int, int); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/fix_gravity_omp.cpp b/src/USER-OMP/fix_gravity_omp.cpp new file mode 100644 index 0000000000..c4f4b39b6c --- /dev/null +++ b/src/USER-OMP/fix_gravity_omp.cpp @@ -0,0 +1,114 @@ +/* ---------------------------------------------------------------------- + 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "fix_gravity_omp.h" +#include "atom.h" +#include "update.h" +#include "domain.h" +#include "respa.h" +#include "error.h" + +using namespace LAMMPS_NS; + +enum{CHUTE,SPHERICAL,GRADIENT,VECTOR}; + +/* ---------------------------------------------------------------------- */ + +FixGravityOMP::FixGravityOMP(LAMMPS *lmp, int narg, char **arg) : + FixGravity(lmp, narg, arg) { } + +/* ---------------------------------------------------------------------- */ + +void FixGravityOMP::post_force(int vflag) +{ + // update direction of gravity vector if gradient style + + if (style == GRADIENT) { + if (domain->dimension == 3) { + double phi_current = degree2rad * + (phi + (update->ntimestep - time_origin)*dt*phigrad*360.0); + double theta_current = degree2rad * + (theta + (update->ntimestep - time_origin)*dt*thetagrad*360.0); + xgrav = sin(theta_current) * cos(phi_current); + ygrav = sin(theta_current) * sin(phi_current); + zgrav = cos(theta_current); + } else { + double theta_current = degree2rad * + (theta + (update->ntimestep - time_origin)*dt*thetagrad*360.0); + xgrav = sin(theta_current); + ygrav = cos(theta_current); + } + xacc = magnitude*xgrav; + yacc = magnitude*ygrav; + zacc = magnitude*zgrav; + } + + const double * const * const x = atom->x; + double * const * const f = atom->f; + double * const rmass = atom->rmass; + double * const mass = atom->mass; + int * const mask = atom->mask; + int * const type = atom->type; + const int nlocal = atom->nlocal; + const double xacc_thr = xacc; + const double yacc_thr = yacc; + const double zacc_thr = zacc; + double massone; + + int i; + eflag = 0; + double grav = 0.0; + + if (rmass) { +#if defined(_OPENMP) +#pragma omp parallel for private(i,massone) default(none) reduction(-:grav) +#endif + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + massone = rmass[i]; + f[i][0] += massone*xacc_thr; + f[i][1] += massone*yacc_thr; + f[i][2] += massone*zacc_thr; + grav -= massone * (xacc_thr*x[i][0] + yacc_thr*x[i][1] + zacc_thr*x[i][2]); + } + } else { +#if defined(_OPENMP) +#pragma omp parallel for private(i,massone) default(none) reduction(-:grav) +#endif + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + massone = mass[type[i]]; + f[i][0] += massone*xacc_thr; + f[i][1] += massone*yacc_thr; + f[i][2] += massone*zacc_thr; + grav -= massone * (xacc_thr*x[i][0] + yacc_thr*x[i][1] + zacc_thr*x[i][2]); + } + } + egrav = grav; +} + +/* ---------------------------------------------------------------------- */ + +void FixGravityOMP::post_force_respa(int vflag, int ilevel, int iloop) +{ + if (ilevel == nlevels_respa-1) post_force(vflag); +} + diff --git a/src/USER-OMP/fix_gravity_omp.h b/src/USER-OMP/fix_gravity_omp.h new file mode 100644 index 0000000000..dd0144410e --- /dev/null +++ b/src/USER-OMP/fix_gravity_omp.h @@ -0,0 +1,38 @@ +/* ---------------------------------------------------------------------- + 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(gravity/omp,FixGravityOMP) + +#else + +#ifndef LMP_FIX_GRAVITY_OMP_H +#define LMP_FIX_GRAVITY_OMP_H + +#include "fix_gravity.h" + +namespace LAMMPS_NS { + +class FixGravityOMP : public FixGravity { + + public: + FixGravityOMP(class LAMMPS *, int, char **); + virtual void post_force(int); + virtual void post_force_respa(int, int, int); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/fix_nve_sphere_omp.cpp b/src/USER-OMP/fix_nve_sphere_omp.cpp new file mode 100644 index 0000000000..a642b21f22 --- /dev/null +++ b/src/USER-OMP/fix_nve_sphere_omp.cpp @@ -0,0 +1,140 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "stdio.h" +#include "string.h" +#include "fix_nve_sphere_omp.h" +#include "atom.h" +#include "atom_vec.h" +#include "update.h" +#include "respa.h" +#include "force.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define INERTIA 0.4 // moment of inertia prefactor for sphere + +enum{NONE,DIPOLE}; + +/* ---------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- */ + +void FixNVESphereOMP::initial_integrate(int vflag) +{ + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double **omega = atom->omega; + double **torque = atom->torque; + double *radius = atom->radius; + double *rmass = atom->rmass; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int i; + + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + // set timestep here since dt may have changed or come via rRESPA + const double dtfrotate = dtf / INERTIA; + + // update v,x,omega for all particles + // d_omega/dt = torque / inertia +#if defined(_OPENMP) +#pragma omp parallel for private(i) default(shared) +#endif + for (i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + const double dtfm = dtf / rmass[i]; + v[i][0] += dtfm * f[i][0]; + v[i][1] += dtfm * f[i][1]; + v[i][2] += dtfm * f[i][2]; + x[i][0] += dtv * v[i][0]; + x[i][1] += dtv * v[i][1]; + x[i][2] += dtv * v[i][2]; + + const double dtirotate = dtfrotate / (radius[i]*radius[i]*rmass[i]); + omega[i][0] += dtirotate * torque[i][0]; + omega[i][1] += dtirotate * torque[i][1]; + omega[i][2] += dtirotate * torque[i][2]; + } + } + + // update mu for dipoles + // d_mu/dt = omega cross mu + // renormalize mu to dipole length + + if (extra == DIPOLE) { + double **mu = atom->mu; +#if defined(_OPENMP) +#pragma omp parallel for private(i) default(shared) +#endif + for (i = 0; i < nlocal; i++) { + double g0,g1,g2,msq,scale; + if (mask[i] & groupbit) { + if (mu[i][3] > 0.0) { + g0 = mu[i][0] + dtv * (omega[i][1]*mu[i][2]-omega[i][2]*mu[i][1]); + g1 = mu[i][1] + dtv * (omega[i][2]*mu[i][0]-omega[i][0]*mu[i][2]); + g2 = mu[i][2] + dtv * (omega[i][0]*mu[i][1]-omega[i][1]*mu[i][0]); + msq = g0*g0 + g1*g1 + g2*g2; + scale = mu[i][3]/sqrt(msq); + mu[i][0] = g0*scale; + mu[i][1] = g1*scale; + mu[i][2] = g2*scale; + } + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNVESphereOMP::final_integrate() +{ + double **v = atom->v; + double **f = atom->f; + double **omega = atom->omega; + double **torque = atom->torque; + double *rmass = atom->rmass; + double *radius = atom->radius; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int i; + + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + // set timestep here since dt may have changed or come via rRESPA + + const double dtfrotate = dtf / INERTIA; + + // update v,omega for all particles + // d_omega/dt = torque / inertia + +#if defined(_OPENMP) +#pragma omp parallel for private(i) default(shared) +#endif + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + const double dtfm = dtf / rmass[i]; + v[i][0] += dtfm * f[i][0]; + v[i][1] += dtfm * f[i][1]; + v[i][2] += dtfm * f[i][2]; + + const double dtirotate = dtfrotate / (radius[i]*radius[i]*rmass[i]); + omega[i][0] += dtirotate * torque[i][0]; + omega[i][1] += dtirotate * torque[i][1]; + omega[i][2] += dtirotate * torque[i][2]; + } +} diff --git a/src/USER-OMP/fix_nve_sphere_omp.h b/src/USER-OMP/fix_nve_sphere_omp.h new file mode 100644 index 0000000000..fe86039b18 --- /dev/null +++ b/src/USER-OMP/fix_nve_sphere_omp.h @@ -0,0 +1,39 @@ +/* ---------------------------------------------------------------------- + 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(nve/sphere/omp,FixNVESphereOMP) + +#else + +#ifndef LMP_FIX_NVE_SPHERE_OMP_H +#define LMP_FIX_NVE_SPHERE_OMP_H + +#include "fix_nve_sphere.h" + +namespace LAMMPS_NS { + +class FixNVESphereOMP : public FixNVESphere { + public: + FixNVESphereOMP(class LAMMPS *lmp, int narg, char **arg) : + FixNVESphere(lmp, narg, arg) {}; + + virtual void initial_integrate(int); + virtual void final_integrate(); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/fix_shear_history_omp.cpp b/src/USER-OMP/fix_shear_history_omp.cpp new file mode 100644 index 0000000000..40781cb407 --- /dev/null +++ b/src/USER-OMP/fix_shear_history_omp.cpp @@ -0,0 +1,150 @@ +/* ---------------------------------------------------------------------- + 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 "string.h" +#include "stdio.h" +#include "fix_shear_history_omp.h" +#include "atom.h" +#include "comm.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "force.h" +#include "pair.h" +#include "update.h" +#include "modify.h" +#include "error.h" + +#if defined(_OPENMP) +#include +#endif + +using namespace LAMMPS_NS; + +#define MAXTOUCH 15 + +/* ---------------------------------------------------------------------- + copy shear partner info from neighbor lists to atom arrays + so can be exchanged with atoms +------------------------------------------------------------------------- */ + +void FixShearHistoryOMP::pre_exchange() +{ + + const int nlocal = atom->nlocal; + const int nghost = atom->nghost; + const int nall = nlocal + nghost; + const int nthreads = comm->nthreads; + + int flag = 0; +#if defined(_OPENMP) +#pragma omp parallel shared(flag) +#endif + { + +#if defined(_OPENMP) + const int tid = omp_get_thread_num(); +#else + const int tid = 0; +#endif + + // each thread works on a fixed chunk of local and ghost atoms. + const int ldelta = 1 + nlocal/nthreads; + const int lfrom = tid*ldelta; + const int lmax = lfrom +ldelta; + const int lto = (lmax > nlocal) ? nlocal : lmax; + + const int gdelta = 1 + nghost/nthreads; + const int gfrom = nlocal + tid*gdelta; + const int gmax = gfrom + gdelta; + const int gto = (gmax > nall) ? nall : gmax; + + + int i,j,ii,jj,m,inum,jnum; + int *ilist,*jlist,*numneigh,**firstneigh; + int *touch,**firsttouch; + double *shear,*allshear,**firstshear; + + // zero npartners for all current atoms + + for (i = lfrom; i < lto; i++) npartner[i] = 0; + + // copy shear info from neighbor list atoms to atom arrays + + int *tag = atom->tag; + + NeighList *list = pair->list; + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + firsttouch = list->listgranhistory->firstneigh; + firstshear = list->listgranhistory->firstdouble; + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + jlist = firstneigh[i]; + allshear = firstshear[i]; + jnum = numneigh[i]; + touch = firsttouch[i]; + + for (jj = 0; jj < jnum; jj++) { + if (touch[jj]) { + j = jlist[jj]; + j &= NEIGHMASK; + shear = &allshear[3*jj]; + + if ((i >= lfrom) && (i < lto)) { + if (npartner[i] < MAXTOUCH) { + m = npartner[i]; + partner[i][m] = tag[j]; + shearpartner[i][m][0] = shear[0]; + shearpartner[i][m][1] = shear[1]; + shearpartner[i][m][2] = shear[2]; + } + npartner[i]++; + } + + if ((j >= lfrom) && (j < lto)) { + if (npartner[j] < MAXTOUCH) { + m = npartner[j]; + partner[j][m] = tag[i]; + shearpartner[j][m][0] = -shear[0]; + shearpartner[j][m][1] = -shear[1]; + shearpartner[j][m][2] = -shear[2]; + } + npartner[j]++; + } + + if ((j >= gfrom) && (j < gto)) { + npartner[j]++; + } + } + } + } + + // test for too many touching neighbors + int myflag = 0; + for (i = lfrom; i < lto; i++) + if (npartner[i] >= MAXTOUCH) myflag = 1; + + if (myflag) +#if defined(_OPENMP) +#pragma omp atomic +#endif + ++flag; + } + + int flag_all; + MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); + if (flag_all) error->all(FLERR,"Too many touching neighbors - boost MAXTOUCH"); +} diff --git a/src/USER-OMP/fix_shear_history_omp.h b/src/USER-OMP/fix_shear_history_omp.h new file mode 100644 index 0000000000..9a360b7923 --- /dev/null +++ b/src/USER-OMP/fix_shear_history_omp.h @@ -0,0 +1,38 @@ +/* ---------------------------------------------------------------------- + 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(SHEAR_HISTORY/omp,FixShearHistoryOMP) + +#else + +#ifndef LMP_FIX_SHEAR_HISTORY_OMP_H +#define LMP_FIX_SHEAR_HISTORY_OMP_H + +#include "fix_shear_history.h" + +namespace LAMMPS_NS { + +class FixShearHistoryOMP : public FixShearHistory { + + public: + FixShearHistoryOMP(class LAMMPS *lmp, int narg, char **argv) + : FixShearHistory(lmp,narg,argv) {}; + virtual void pre_exchange(); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_adp_omp.cpp b/src/USER-OMP/pair_adp_omp.cpp new file mode 100644 index 0000000000..e91642e6ba --- /dev/null +++ b/src/USER-OMP/pair_adp_omp.cpp @@ -0,0 +1,404 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "string.h" + +#include "pair_adp_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "memory.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairADPOMP::PairADPOMP(LAMMPS *lmp) : + PairADP(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairADPOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + // grow energy and fp arrays if necessary + // need to be atom->nmax in length + + if (atom->nmax > nmax) { + memory->destroy(rho); + memory->destroy(fp); + memory->destroy(mu); + memory->destroy(lambda); + nmax = atom->nmax; + memory->create(rho,nthreads*nmax,"pair:rho"); + memory->create(fp,nmax,"pair:fp"); + memory->create(mu,nthreads*nmax,3,"pair:mu"); + memory->create(lambda,nthreads*nmax,6,"pair:lambda"); + } + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, *rho_t, **mu_t, **lambda_t; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + if (force->newton_pair) { + rho_t = rho + tid*nall; + mu_t = mu + tid*nall; + lambda_t = lambda + tid*nall; + } else { + rho_t = rho + tid*atom->nlocal; + mu_t = mu + tid*atom->nlocal; + lambda_t = lambda + tid*atom->nlocal; + } + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, rho_t, mu_t, lambda_t, ifrom, ito, tid); + else eval<1,1,0>(f, rho_t, mu_t, lambda_t, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, rho_t, mu_t, lambda_t, ifrom, ito, tid); + else eval<1,0,0>(f, rho_t, mu_t, lambda_t, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, rho_t, mu_t, lambda_t, ifrom, ito, tid); + else eval<0,0,0>(f, rho_t, mu_t, lambda_t, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairADPOMP::eval(double **f, double *rho_t, double **mu_t, + double **lambda_t, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,m,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r,p,rhoip,rhojp,z2,z2p,recip,phip,psip,phi; + double u2,u2p,w2,w2p,nu; + double *coeff; + int *ilist,*jlist,*numneigh,**firstneigh; + double delmux,delmuy,delmuz,trdelmu,tradellam; + double adpx,adpy,adpz,fx,fy,fz; + double sumlamxx,sumlamyy,sumlamzz,sumlamyz,sumlamxz,sumlamxy; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // zero out density + + if (NEWTON_PAIR) { + memset(rho_t, 0, nall*sizeof(double)); + memset(&(mu_t[0][0]), 0, 3*nall*sizeof(double)); + memset(&(lambda_t[0][0]), 0, 6*nall*sizeof(double)); + } else { + memset(rho_t, 0, nlocal*sizeof(double)); + memset(&(mu_t[0][0]), 0, 3*nlocal*sizeof(double)); + memset(&(lambda_t[0][0]), 0, 6*nlocal*sizeof(double)); + } + + // rho = density at each atom + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < cutforcesq) { + jtype = type[j]; + p = sqrt(rsq)*rdr + 1.0; + m = static_cast (p); + m = MIN(m,nr-1); + p -= m; + p = MIN(p,1.0); + coeff = rhor_spline[type2rhor[jtype][itype]][m]; + rho_t[i] += ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + coeff = u2r_spline[type2u2r[jtype][itype]][m]; + u2 = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + mu_t[i][0] += u2*delx; + mu_t[i][1] += u2*dely; + mu_t[i][2] += u2*delz; + coeff = w2r_spline[type2w2r[jtype][itype]][m]; + w2 = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + lambda_t[i][0] += w2*delx*delx; + lambda_t[i][1] += w2*dely*dely; + lambda_t[i][2] += w2*delz*delz; + lambda_t[i][3] += w2*dely*delz; + lambda_t[i][4] += w2*delx*delz; + lambda_t[i][5] += w2*delx*dely; + + if (NEWTON_PAIR || j < nlocal) { + // verify sign difference for mu and lambda + coeff = rhor_spline[type2rhor[itype][jtype]][m]; + rho_t[j] += ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + coeff = u2r_spline[type2u2r[itype][jtype]][m]; + u2 = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + mu_t[j][0] -= u2*delx; + mu_t[j][1] -= u2*dely; + mu_t[j][2] -= u2*delz; + coeff = w2r_spline[type2w2r[itype][jtype]][m]; + w2 = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + lambda_t[j][0] += w2*delx*delx; + lambda_t[j][1] += w2*dely*dely; + lambda_t[j][2] += w2*delz*delz; + lambda_t[j][3] += w2*dely*delz; + lambda_t[j][4] += w2*delx*delz; + lambda_t[j][5] += w2*delx*dely; + } + } + } + } + + // wait until all threads are done with computation + sync_threads(); + + // communicate and sum densities + + if (NEWTON_PAIR) { + // reduce per thread density + data_reduce_thr(&(rho[0]), nall, comm->nthreads, 1, tid); + data_reduce_thr(&(mu[0][0]), nall, comm->nthreads, 3, tid); + data_reduce_thr(&(lambda[0][0]), nall, comm->nthreads, 6, tid); + + // wait until reduction is complete + sync_threads(); + +#if defined(_OPENMP) +#pragma omp master +#endif + { comm->reverse_comm_pair(this); } + + // wait until master thread is done with communication + sync_threads(); + + } else { + // reduce per thread density + data_reduce_thr(&(rho[0]), nlocal, comm->nthreads, 1, tid); + data_reduce_thr(&(mu[0][0]), nlocal, comm->nthreads, 3, tid); + data_reduce_thr(&(lambda[0][0]), nlocal, comm->nthreads, 6, tid); + + // wait until reduction is complete + sync_threads(); + } + + // fp = derivative of embedding energy at each atom + // phi = embedding energy at each atom + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + p = rho[i]*rdrho + 1.0; + m = static_cast (p); + m = MAX(1,MIN(m,nrho-1)); + p -= m; + p = MIN(p,1.0); + coeff = frho_spline[type2frho[type[i]]][m]; + fp[i] = (coeff[0]*p + coeff[1])*p + coeff[2]; + if (EFLAG) { + phi = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + phi += 0.5*(mu[i][0]*mu[i][0]+mu[i][1]*mu[i][1]+mu[i][2]*mu[i][2]); + phi += 0.5*(lambda[i][0]*lambda[i][0]+lambda[i][1]* + lambda[i][1]+lambda[i][2]*lambda[i][2]); + phi += 1.0*(lambda[i][3]*lambda[i][3]+lambda[i][4]* + lambda[i][4]+lambda[i][5]*lambda[i][5]); + phi -= 1.0/6.0*(lambda[i][0]+lambda[i][1]+lambda[i][2])* + (lambda[i][0]+lambda[i][1]+lambda[i][2]); + if (eflag_global) eng_vdwl_thr[tid] += phi; + if (eflag_atom) eatom_thr[tid][i] += phi; + } + } + + // wait until all theads are done with computation + sync_threads(); + + // communicate derivative of embedding function + // MPI communication only on master thread +#if defined(_OPENMP) +#pragma omp master +#endif + { comm->forward_comm_pair(this); } + + // wait until master thread is done with communication + sync_threads(); + + // compute forces on each atom + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + fxtmp = fytmp = fztmp = 0.0; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < cutforcesq) { + jtype = type[j]; + r = sqrt(rsq); + p = r*rdr + 1.0; + m = static_cast (p); + m = MIN(m,nr-1); + p -= m; + p = MIN(p,1.0); + + // rhoip = derivative of (density at atom j due to atom i) + // rhojp = derivative of (density at atom i due to atom j) + // phi = pair potential energy + // phip = phi' + // z2 = phi * r + // z2p = (phi * r)' = (phi' r) + phi + // u2 = u + // u2p = u' + // w2 = w + // w2p = w' + // psip needs both fp[i] and fp[j] terms since r_ij appears in two + // terms of embed eng: Fi(sum rho_ij) and Fj(sum rho_ji) + // hence embed' = Fi(sum rho_ij) rhojp + Fj(sum rho_ji) rhoip + + coeff = rhor_spline[type2rhor[itype][jtype]][m]; + rhoip = (coeff[0]*p + coeff[1])*p + coeff[2]; + coeff = rhor_spline[type2rhor[jtype][itype]][m]; + rhojp = (coeff[0]*p + coeff[1])*p + coeff[2]; + coeff = z2r_spline[type2z2r[itype][jtype]][m]; + z2p = (coeff[0]*p + coeff[1])*p + coeff[2]; + z2 = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + coeff = u2r_spline[type2u2r[itype][jtype]][m]; + u2p = (coeff[0]*p + coeff[1])*p + coeff[2]; + u2 = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + coeff = w2r_spline[type2w2r[itype][jtype]][m]; + w2p = (coeff[0]*p + coeff[1])*p + coeff[2]; + w2 = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + + recip = 1.0/r; + phi = z2*recip; + phip = z2p*recip - phi*recip; + psip = fp[i]*rhojp + fp[j]*rhoip + phip; + fpair = -psip*recip; + + delmux = mu[i][0]-mu[j][0]; + delmuy = mu[i][1]-mu[j][1]; + delmuz = mu[i][2]-mu[j][2]; + trdelmu = delmux*delx+delmuy*dely+delmuz*delz; + sumlamxx = lambda[i][0]+lambda[j][0]; + sumlamyy = lambda[i][1]+lambda[j][1]; + sumlamzz = lambda[i][2]+lambda[j][2]; + sumlamyz = lambda[i][3]+lambda[j][3]; + sumlamxz = lambda[i][4]+lambda[j][4]; + sumlamxy = lambda[i][5]+lambda[j][5]; + tradellam = sumlamxx*delx*delx+sumlamyy*dely*dely+ + sumlamzz*delz*delz+2.0*sumlamxy*delx*dely+ + 2.0*sumlamxz*delx*delz+2.0*sumlamyz*dely*delz; + nu = sumlamxx+sumlamyy+sumlamzz; + + adpx = delmux*u2 + trdelmu*u2p*delx*recip + + 2.0*w2*(sumlamxx*delx+sumlamxy*dely+sumlamxz*delz) + + w2p*delx*recip*tradellam - 1.0/3.0*nu*(w2p*r+2.0*w2)*delx; + adpy = delmuy*u2 + trdelmu*u2p*dely*recip + + 2.0*w2*(sumlamxy*delx+sumlamyy*dely+sumlamyz*delz) + + w2p*dely*recip*tradellam - 1.0/3.0*nu*(w2p*r+2.0*w2)*dely; + adpz = delmuz*u2 + trdelmu*u2p*delz*recip + + 2.0*w2*(sumlamxz*delx+sumlamyz*dely+sumlamzz*delz) + + w2p*delz*recip*tradellam - 1.0/3.0*nu*(w2p*r+2.0*w2)*delz; + adpx*=-1.0; adpy*=-1.0; adpz*=-1.0; + + fx = delx*fpair+adpx; + fy = dely*fpair+adpy; + fz = delz*fpair+adpz; + + fxtmp += fx; + fytmp += fy; + fztmp += fz; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= fx; + f[j][1] -= fy; + f[j][2] -= fz; + } + + if (EFLAG) evdwl = phi; + if (EVFLAG) ev_tally_xyz_thr(this,i,j,nlocal,NEWTON_PAIR,evdwl,0.0, + fx,fy,fz,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairADPOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairADP::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_adp_omp.h b/src/USER-OMP/pair_adp_omp.h new file mode 100644 index 0000000000..f7d2509cd3 --- /dev/null +++ b/src/USER-OMP/pair_adp_omp.h @@ -0,0 +1,49 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(adp/omp,PairADPOMP) + +#else + +#ifndef LMP_PAIR_ADP_OMP_H +#define LMP_PAIR_ADP_OMP_H + +#include "pair_adp.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairADPOMP : public PairADP, public ThrOMP { + + public: + PairADPOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double *rho_t, double **mu_t, double **lambda_t, + int iifrom, int iito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_born_coul_long_omp.cpp b/src/USER-OMP/pair_born_coul_long_omp.cpp new file mode 100644 index 0000000000..c277a080c0 --- /dev/null +++ b/src/USER-OMP/pair_born_coul_long_omp.cpp @@ -0,0 +1,199 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_born_coul_long_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairBornCoulLongOMP::PairBornCoulLongOMP(LAMMPS *lmp) : + PairBornCoulLong(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairBornCoulLongOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairBornCoulLongOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double rsq,r2inv,r6inv,r,rexp,forcecoul,forceborn,factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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) { + 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; + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + rexp = exp((sigma[itype][jtype]-r)*rhoinv[itype][jtype]); + forceborn = born1[itype][jtype]*r*rexp - born2[itype][jtype]*r6inv + + born3[itype][jtype]*r2inv*r6inv; + } else forceborn = 0.0; + + fpair = (forcecoul + factor_lj*forceborn)*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + ecoul = prefactor*erfc; + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = a[itype][jtype]*rexp - c[itype][jtype]*r6inv + + d[itype][jtype]*r6inv*r2inv - 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,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairBornCoulLongOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairBornCoulLong::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_born_coul_long_omp.h b/src/USER-OMP/pair_born_coul_long_omp.h new file mode 100644 index 0000000000..d6ccbfc680 --- /dev/null +++ b/src/USER-OMP/pair_born_coul_long_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(born/coul/long/omp,PairBornCoulLongOMP) + +#else + +#ifndef LMP_PAIR_BORN_COUL_LONG_OMP_H +#define LMP_PAIR_BORN_COUL_LONG_OMP_H + +#include "pair_born_coul_long.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairBornCoulLongOMP : public PairBornCoulLong, public ThrOMP { + + public: + PairBornCoulLongOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_born_omp.cpp b/src/USER-OMP/pair_born_omp.cpp new file mode 100644 index 0000000000..c39d205c97 --- /dev/null +++ b/src/USER-OMP/pair_born_omp.cpp @@ -0,0 +1,163 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_born_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairBornOMP::PairBornOMP(LAMMPS *lmp) : + PairBorn(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairBornOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairBornOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r6inv,r,rexp,forceborn,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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; + r6inv = r2inv*r2inv*r2inv; + r = sqrt(rsq); + rexp = exp((sigma[itype][jtype]-r)*rhoinv[itype][jtype]); + forceborn = born1[itype][jtype]*r*rexp - born2[itype][jtype]*r6inv + + born3[itype][jtype]*r2inv*r6inv; + fpair = factor_lj*forceborn*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = a[itype][jtype]*rexp - c[itype][jtype]*r6inv + + d[itype][jtype]*r6inv*r2inv - offset[itype][jtype]; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairBornOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairBorn::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_born_omp.h b/src/USER-OMP/pair_born_omp.h new file mode 100644 index 0000000000..b24de4a577 --- /dev/null +++ b/src/USER-OMP/pair_born_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(born/omp,PairBornOMP) + +#else + +#ifndef LMP_PAIR_BORN_OMP_H +#define LMP_PAIR_BORN_OMP_H + +#include "pair_born.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairBornOMP : public PairBorn, public ThrOMP { + + public: + PairBornOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_buck_coul_cut_omp.cpp b/src/USER-OMP/pair_buck_coul_cut_omp.cpp new file mode 100644 index 0000000000..ac47d478a0 --- /dev/null +++ b/src/USER-OMP/pair_buck_coul_cut_omp.cpp @@ -0,0 +1,182 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_buck_coul_cut_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairBuckCoulCutOMP::PairBuckCoulCutOMP(LAMMPS *lmp) : + PairBuckCoulCut(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairBuckCoulCutOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairBuckCoulCutOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double rsq,r2inv,r6inv,r,rexp,forcecoul,forcebuck,factor_coul,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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[itype][jtype]) + forcecoul = qqrd2e * qtmp*q[j]/r; + else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + rexp = exp(-r*rhoinv[itype][jtype]); + forcebuck = buck1[itype][jtype]*r*rexp - buck2[itype][jtype]*r6inv; + } else forcebuck = 0.0; + + fpair = (forcecoul + factor_lj*forcebuck)*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq[itype][jtype]) + ecoul = factor_coul * qqrd2e * qtmp*q[j]/r; + else ecoul = 0.0; + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = a[itype][jtype]*rexp - c[itype][jtype]*r6inv - + 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,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairBuckCoulCutOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairBuckCoulCut::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_buck_coul_cut_omp.h b/src/USER-OMP/pair_buck_coul_cut_omp.h new file mode 100644 index 0000000000..a77f3bad24 --- /dev/null +++ b/src/USER-OMP/pair_buck_coul_cut_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(buck/coul/cut/omp,PairBuckCoulCutOMP) + +#else + +#ifndef LMP_PAIR_BUCK_COUL_CUT_OMP_H +#define LMP_PAIR_BUCK_COUL_CUT_OMP_H + +#include "pair_buck_coul_cut.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairBuckCoulCutOMP : public PairBuckCoulCut, public ThrOMP { + + public: + PairBuckCoulCutOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_buck_coul_long_omp.cpp b/src/USER-OMP/pair_buck_coul_long_omp.cpp new file mode 100644 index 0000000000..6e7398ca44 --- /dev/null +++ b/src/USER-OMP/pair_buck_coul_long_omp.cpp @@ -0,0 +1,198 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_buck_coul_long_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairBuckCoulLongOMP::PairBuckCoulLongOMP(LAMMPS *lmp) : + PairBuckCoulLong(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairBuckCoulLongOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairBuckCoulLongOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double rsq,r2inv,r6inv,r,rexp,forcecoul,forcebuck,factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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) { + 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; + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + rexp = exp(-r*rhoinv[itype][jtype]); + forcebuck = buck1[itype][jtype]*r*rexp - buck2[itype][jtype]*r6inv; + } else forcebuck = 0.0; + + fpair = (forcecoul + factor_lj*forcebuck)*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + ecoul = prefactor*erfc; + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = a[itype][jtype]*rexp - c[itype][jtype]*r6inv - + 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,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairBuckCoulLongOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairBuckCoulLong::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_buck_coul_long_omp.h b/src/USER-OMP/pair_buck_coul_long_omp.h new file mode 100644 index 0000000000..2c87904de8 --- /dev/null +++ b/src/USER-OMP/pair_buck_coul_long_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(buck/coul/long/omp,PairBuckCoulLongOMP) + +#else + +#ifndef LMP_PAIR_BUCK_COUL_LONG_OMP_H +#define LMP_PAIR_BUCK_COUL_LONG_OMP_H + +#include "pair_buck_coul_long.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairBuckCoulLongOMP : public PairBuckCoulLong, public ThrOMP { + + public: + PairBuckCoulLongOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_buck_coul_omp.cpp b/src/USER-OMP/pair_buck_coul_omp.cpp new file mode 100644 index 0000000000..bd171f628a --- /dev/null +++ b/src/USER-OMP/pair_buck_coul_omp.cpp @@ -0,0 +1,230 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_buck_coul_omp.h" +#include "atom.h" +#include "comm.h" +#include "math_vector.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairBuckCoulOMP::PairBuckCoulOMP(LAMMPS *lmp) : + PairBuckCoul(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairBuckCoulOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairBuckCoulOMP::eval(double **f, int iifrom, int iito, int tid) +{ + double evdwl,ecoul,fpair; + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + + double *x0 = x[0]; + double *f0 = f[0], *fi = f0; + + int *ilist = list->ilist; + + // loop over neighbors of my atoms + + int i, ii, j, order1 = ewald_order&(1<<1), order6 = ewald_order&(1<<6); + int *jneigh, *jneighn, typei, typej, ni; + double qi, qri, *cutsqi, *cut_bucksqi, + *buck1i, *buck2i, *buckai, *buckci, *rhoinvi, *offseti; + double r, rsq, r2inv, force_coul, force_buck; + double g2 = g_ewald*g_ewald, g6 = g2*g2*g2, g8 = g6*g2; + vector xi, d; + + for (ii = iifrom; ii < iito; ++ii) { // loop over my atoms + i = ilist[ii]; fi = f0+3*i; + if (order1) qri = (qi = q[i])*qqrd2e; // initialize constants + offseti = offset[typei = type[i]]; + buck1i = buck1[typei]; buck2i = buck2[typei]; + buckai = buck_a[typei]; buckci = buck_c[typei], rhoinvi = rhoinv[typei]; + cutsqi = cutsq[typei]; cut_bucksqi = cut_bucksq[typei]; + memcpy(xi, x0+(i+(i<<1)), sizeof(vector)); + jneighn = (jneigh = list->firstneigh[i])+list->numneigh[i]; + + for (; jneigh= cutsqi[typej = type[j]]) continue; + r2inv = 1.0/rsq; + r = sqrt(rsq); + + if (order1 && (rsq < cut_coulsq)) { // coulombic + if (!ncoultablebits || rsq <= tabinnersq) { // series real space + register double x = g_ewald*r; + register double s = qri*q[j], t = 1.0/(1.0+EWALD_P*x); + if (ni == 0) { + s *= g_ewald*exp(-x*x); + force_coul = (t *= ((((t*A5+A4)*t+A3)*t+A2)*t+A1)*s/x)+EWALD_F*s; + if (EFLAG) ecoul = t; + } else { // special case + register double f = s*(1.0-special_coul[ni])/r; + s *= g_ewald*exp(-x*x); + force_coul = (t *= ((((t*A5+A4)*t+A3)*t+A2)*t+A1)*s/x)+EWALD_F*s-f; + if (EFLAG) ecoul = t-f; + } // table real space + } else { + register union_int_float_t t; + t.f = rsq; + register const int k = (t.i & ncoulmask) >> ncoulshiftbits; + register double f = (rsq-rtable[k])*drtable[k], qiqj = qi*q[j]; + if (ni == 0) { + force_coul = qiqj*(ftable[k]+f*dftable[k]); + if (EFLAG) ecoul = qiqj*(etable[k]+f*detable[k]); + } + else { // special case + t.f = (1.0-special_coul[ni])*(ctable[k]+f*dctable[k]); + force_coul = qiqj*(ftable[k]+f*dftable[k]-t.f); + if (EFLAG) ecoul = qiqj*(etable[k]+f*detable[k]-t.f); + } + } + } else force_coul = ecoul = 0.0; + + if (rsq < cut_bucksqi[typej]) { // buckingham + register double rn = r2inv*r2inv*r2inv, + expr = exp(-r*rhoinvi[typej]); + if (order6) { // long-range + register double x2 = g2*rsq, a2 = 1.0/x2; + x2 = a2*exp(-x2)*buckci[typej]; + if (ni == 0) { + force_buck = + r*expr*buck1i[typej]-g8*(((6.0*a2+6.0)*a2+3.0)*a2+1.0)*x2*rsq; + if (EFLAG) evdwl = expr*buckai[typej]-g6*((a2+1.0)*a2+0.5)*x2; + } else { // special case + register double f = special_lj[ni], t = rn*(1.0-f); + force_buck = f*r*expr*buck1i[typej]- + g8*(((6.0*a2+6.0)*a2+3.0)*a2+1.0)*x2*rsq+t*buck2i[typej]; + if (EFLAG) evdwl = f*expr*buckai[typej] - + g6*((a2+1.0)*a2+0.5)*x2+t*buckci[typej]; + } + } else { // cut + if (ni == 0) { + force_buck = r*expr*buck1i[typej]-rn*buck2i[typej]; + if (EFLAG) evdwl = expr*buckai[typej] - + rn*buckci[typej]-offseti[typej]; + } else { // special case + register double f = special_lj[ni]; + force_buck = f*(r*expr*buck1i[typej]-rn*buck2i[typej]); + if (EFLAG) + evdwl = f*(expr*buckai[typej]-rn*buckci[typej]-offseti[typej]); + } + } + } else force_buck = evdwl = 0.0; + + fpair = (force_coul+force_buck)*r2inv; + + if (NEWTON_PAIR || j < nlocal) { + register double *fj = f0+(j+(j<<1)), f; + fi[0] += f = d[0]*fpair; fj[0] -= f; + fi[1] += f = d[1]*fpair; fj[1] -= f; + fi[2] += f = d[2]*fpair; fj[2] -= f; + } else { + fi[0] += d[0]*fpair; + fi[1] += d[1]*fpair; + fi[2] += d[2]*fpair; + } + + if (EVFLAG) ev_tally_thr(this,i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,d[0],d[1],d[2],tid); + } + } +} + +/* ---------------------------------------------------------------------- */ + +double PairBuckCoulOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairBuckCoul::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_buck_coul_omp.h b/src/USER-OMP/pair_buck_coul_omp.h new file mode 100644 index 0000000000..dbff9b419a --- /dev/null +++ b/src/USER-OMP/pair_buck_coul_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(buck/coul/omp,PairBuckCoulOMP) + +#else + +#ifndef LMP_PAIR_BUCK_COUL_OMP_H +#define LMP_PAIR_BUCK_COUL_OMP_H + +#include "pair_buck_coul.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairBuckCoulOMP : public PairBuckCoul, public ThrOMP { + + public: + PairBuckCoulOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_buck_omp.cpp b/src/USER-OMP/pair_buck_omp.cpp new file mode 100644 index 0000000000..66d8730abd --- /dev/null +++ b/src/USER-OMP/pair_buck_omp.cpp @@ -0,0 +1,165 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_buck_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairBuckOMP::PairBuckOMP(LAMMPS *lmp) : + PairBuck(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairBuckOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairBuckOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r6inv,r,rexp,forcebuck,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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; + r6inv = r2inv*r2inv*r2inv; + r = sqrt(rsq); + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + r = sqrt(rsq); + rexp = exp(-r*rhoinv[itype][jtype]); + forcebuck = buck1[itype][jtype]*r*rexp - buck2[itype][jtype]*r6inv; + fpair = factor_lj*forcebuck*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = a[itype][jtype]*rexp - c[itype][jtype]*r6inv - + offset[itype][jtype]; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairBuckOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairBuck::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_buck_omp.h b/src/USER-OMP/pair_buck_omp.h new file mode 100644 index 0000000000..40b6702e6f --- /dev/null +++ b/src/USER-OMP/pair_buck_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(buck/omp,PairBuckOMP) + +#else + +#ifndef LMP_PAIR_BUCK_OMP_H +#define LMP_PAIR_BUCK_OMP_H + +#include "pair_buck.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairBuckOMP : public PairBuck, public ThrOMP { + + public: + PairBuckOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_cdeam_omp.cpp b/src/USER-OMP/pair_cdeam_omp.cpp new file mode 100644 index 0000000000..01bd5f6eaa --- /dev/null +++ b/src/USER-OMP/pair_cdeam_omp.cpp @@ -0,0 +1,545 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "string.h" + +#include "pair_cdeam_omp.h" +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "memory.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +// This is for debugging purposes. The ASSERT() macro is used in the code to check +// if everything runs as expected. Change this to #if 0 if you don't need the checking. +#if 0 + #define ASSERT(cond) ((!(cond)) ? my_failure(error,__FILE__,__LINE__) : my_noop()) + + inline void my_noop() {} + inline void my_failure(Error* error, const char* file, int line) { + char str[1024]; + sprintf(str,"Assertion failure: File %s, line %i", file, line); + error->one(FLERR,str); + } +#else + #define ASSERT(cond) +#endif + +/* ---------------------------------------------------------------------- */ + +PairCDEAMOMP::PairCDEAMOMP(LAMMPS *lmp, int _cdeamVersion) : + PairCDEAM(lmp,_cdeamVersion), PairEAM(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairCDEAMOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + // grow energy and fp arrays if necessary + // need to be atom->nmax in length + + if (atom->nmax > nmax) { + memory->destroy(rho); + memory->destroy(rhoB); + memory->destroy(D_values); + memory->destroy(fp); + nmax = atom->nmax; + memory->create(rho,nthreads*nmax,"pair:rho"); + memory->create(rhoB,nthreads*nmax,"pair:mu"); + memory->create(D_values,nthreads*nmax,"pair:D_values"); + memory->create(fp,nmax,"pair:fp"); + } + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, *rho_t, *rhoB_t, *D_values_t; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + if (force->newton_pair) { + rho_t = rho + tid*nall; + rhoB_t = rhoB + tid*nall; + D_values_t = D_values + tid*nall; + } else { + rho_t = rho + tid*atom->nlocal; + rhoB_t = rhoB + tid*atom->nlocal; + D_values_t = D_values + tid*atom->nlocal; + } + + switch (cdeamVersion) { + + case 1: + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1,1>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + else eval<1,1,0,1>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1,1>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + else eval<1,0,0,1>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1,1>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + else eval<0,0,0,1>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + } + break; + + case 2: + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1,2>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + else eval<1,1,0,2>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1,2>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + else eval<1,0,0,2>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1,2>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + else eval<0,0,0,2>(f, rho_t, rhoB_t, D_values_t, ifrom, ito, tid); + } + break; + + default: +#if defined(_OPENMP) +#pragma omp master +#endif + error->all(FLERR,"unsupported eam/cd pair style variant"); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairCDEAMOMP::eval(double **f, double *rho_t, double *rhoB_t, + double *D_values_t, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,rhoip,rhojp,recip,phi; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // zero out density + + if (NEWTON_PAIR) { + memset(rho_t, 0, nall*sizeof(double)); + memset(rhoB_t, 0, nall*sizeof(double)); + memset(D_values_t, 0, nall*sizeof(double)); + } else { + memset(rho_t, 0, nlocal*sizeof(double)); + memset(rhoB_t, 0, nlocal*sizeof(double)); + memset(D_values_t, 0, nlocal*sizeof(double)); + } + + // Stage I + + // Compute rho and rhoB at each local atom site. + // Additionally calculate the D_i values here if we are using the one-site formulation. + // For the two-site formulation we have to calculate the D values in an extra loop (Stage II). + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if(rsq < cutforcesq) { + jtype = type[j]; + double r = sqrt(rsq); + const EAMTableIndex index = radiusToTableIndex(r); + double localrho = RhoOfR(index, jtype, itype); + rho_t[i] += localrho; + if(jtype == speciesB) rhoB_t[i] += localrho; + if(NEWTON_PAIR || j < nlocal) { + localrho = RhoOfR(index, itype, jtype); + rho_t[j] += localrho; + if(itype == speciesB) rhoB_t[j] += localrho; + } + + if(CDEAMVERSION == 1 && itype != jtype) { + // Note: if the i-j interaction is not concentration dependent (because either + // i or j are not species A or B) then its contribution to D_i and D_j should + // be ignored. + // This if-clause is only required for a ternary. + if((itype == speciesA && jtype == speciesB) + || (jtype == speciesA && itype == speciesB)) { + double Phi_AB = PhiOfR(index, itype, jtype, 1.0 / r); + D_values_t[i] += Phi_AB; + if(NEWTON_PAIR || j < nlocal) + D_values_t[j] += Phi_AB; + } + } + } + } + } + + // wait until all threads are done with computation + sync_threads(); + + // communicate and sum densities + + if (NEWTON_PAIR) { + // reduce per thread density + data_reduce_thr(&(rho[0]), nall, comm->nthreads, 1, tid); + data_reduce_thr(&(rhoB[0]), nall, comm->nthreads, 1, tid); + if (CDEAMVERSION==1) + data_reduce_thr(&(D_values[0]), nall, comm->nthreads, 1, tid); + + // wait until reduction is complete + sync_threads(); + +#if defined(_OPENMP) +#pragma omp master +#endif + { communicationStage = 1; + comm->reverse_comm_pair(this); } + + // wait until master thread is done with communication + sync_threads(); + + } else { + // reduce per thread density + data_reduce_thr(&(rho[0]), nlocal, comm->nthreads, 1, tid); + data_reduce_thr(&(rhoB[0]), nlocal, comm->nthreads, 1, tid); + if (CDEAMVERSION==1) + data_reduce_thr(&(D_values[0]), nlocal, comm->nthreads, 1, tid); + + // wait until reduction is complete + sync_threads(); + } + + // fp = derivative of embedding energy at each atom + // phi = embedding energy at each atom + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + EAMTableIndex index = rhoToTableIndex(rho[i]); + fp[i] = FPrimeOfRho(index, type[i]); + if(EFLAG) { + phi = FofRho(index, type[i]); + if (eflag_global) eng_vdwl_thr[tid] += phi; + if (eflag_atom) eatom_thr[tid][i] += phi; + } + } + + // wait until all theads are done with computation + sync_threads(); + + // Communicate derivative of embedding function and densities + // and D_values (this for one-site formulation only). +#if defined(_OPENMP) +#pragma omp master +#endif + { communicationStage = 2; + comm->forward_comm_pair(this); } + + // wait until master thread is done with communication + sync_threads(); + + + // The electron densities may not drop to zero because then the concentration would no longer be defined. + // But the concentration is not needed anyway if there is no interaction with another atom, which is the case + // if the electron density is exactly zero. That's why the following lines have been commented out. + // + //for(i = 0; i < nlocal + atom->nghost; i++) { + // if(rho[i] == 0 && (type[i] == speciesA || type[i] == speciesB)) + // error->one(FLERR,"CD-EAM potential routine: Detected atom with zero electron density."); + //} + + // Stage II + // This is only required for the original two-site formulation of the CD-EAM potential. + + if(CDEAMVERSION == 2) { + // Compute intermediate value D_i for each atom. + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // This code line is required for ternary alloys. + if(itype != speciesA && itype != speciesB) continue; + + double x_i = rhoB[i] / rho[i]; // Concentration at atom i. + + for(jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = type[j]; + if(itype == jtype) continue; + + // This code line is required for ternary alloys. + if(jtype != speciesA && jtype != speciesB) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if(rsq < cutforcesq) { + double r = sqrt(rsq); + const EAMTableIndex index = radiusToTableIndex(r); + + // The concentration independent part of the cross pair potential. + double Phi_AB = PhiOfR(index, itype, jtype, 1.0 / r); + + // Average concentration of two sites + double x_ij = 0.5 * (x_i + rhoB[j]/rho[j]); + + // Calculate derivative of h(x_ij) polynomial function. + double h_prime = evalHprime(x_ij); + + D_values_t[i] += h_prime * Phi_AB / (2.0 * rho[i] * rho[i]); + if(NEWTON_PAIR || j < nlocal) + D_values_t[j] += h_prime * Phi_AB / (2.0 * rho[j] * rho[j]); + } + } + } + + if (NEWTON_PAIR) { + data_reduce_thr(&(D_values[0]), nall, comm->nthreads, 1, tid); + + // wait until reduction is complete + sync_threads(); + +#if defined(_OPENMP) +#pragma omp master +#endif + { communicationStage = 3; + comm->reverse_comm_pair(this); } + + // wait until master thread is done with communication + sync_threads(); + + } else { + data_reduce_thr(&(D_values[0]), nlocal, comm->nthreads, 1, tid); + + // wait until reduction is complete + sync_threads(); + } + +#if defined(_OPENMP) +#pragma omp master +#endif + { communicationStage = 4; + comm->forward_comm_pair(this); } + + // wait until master thread is done with communication + sync_threads(); + } + + // Stage III + + // Compute force acting on each atom. + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + fxtmp = fytmp = fztmp = 0.0; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // Concentration at site i + double x_i = -1.0; // The value -1 indicates: no concentration dependence for all interactions of atom i. + // It will be replaced by the concentration at site i if atom i is either A or B. + + double D_i, h_prime_i; + + // This if-clause is only required for ternary alloys. + if((itype == speciesA || itype == speciesB) && rho[i] != 0.0) { + + // Compute local concentration at site i. + x_i = rhoB[i]/rho[i]; + ASSERT(x_i >= 0 && x_i<=1.0); + + if(CDEAMVERSION == 1) { + // Calculate derivative of h(x_i) polynomial function. + h_prime_i = evalHprime(x_i); + D_i = D_values[i] * h_prime_i / (2.0 * rho[i] * rho[i]); + } else if(CDEAMVERSION == 2) { + D_i = D_values[i]; + } else ASSERT(false); + } + + for(jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if(rsq < cutforcesq) { + jtype = type[j]; + double r = sqrt(rsq); + const EAMTableIndex index = radiusToTableIndex(r); + + // rhoip = derivative of (density at atom j due to atom i) + // rhojp = derivative of (density at atom i due to atom j) + // psip needs both fp[i] and fp[j] terms since r_ij appears in two + // terms of embed eng: Fi(sum rho_ij) and Fj(sum rho_ji) + // hence embed' = Fi(sum rho_ij) rhojp + Fj(sum rho_ji) rhoip + rhoip = RhoPrimeOfR(index, itype, jtype); + rhojp = RhoPrimeOfR(index, jtype, itype); + fpair = fp[i]*rhojp + fp[j]*rhoip; + recip = 1.0/r; + + double x_j = -1; // The value -1 indicates: no concentration dependence for this i-j pair + // because atom j is not of species A nor B. + + // This code line is required for ternary alloy. + if(jtype == speciesA || jtype == speciesB) { + ASSERT(rho[i] != 0.0); + ASSERT(rho[j] != 0.0); + + // Compute local concentration at site j. + x_j = rhoB[j]/rho[j]; + ASSERT(x_j >= 0 && x_j<=1.0); + + double D_j; + if(CDEAMVERSION == 1) { + // Calculate derivative of h(x_j) polynomial function. + double h_prime_j = evalHprime(x_j); + D_j = D_values[j] * h_prime_j / (2.0 * rho[j] * rho[j]); + } else if(CDEAMVERSION == 2) { + D_j = D_values[j]; + } else ASSERT(false); + + double t2 = -rhoB[j]; + if(itype == speciesB) t2 += rho[j]; + fpair += D_j * rhoip * t2; + } + + // This if-clause is only required for a ternary alloy. + // Actually we don't need it at all because D_i should be zero anyway if + // atom i has no concentration dependent interactions (because it is not species A or B). + if(x_i != -1.0) { + double t1 = -rhoB[i]; + if(jtype == speciesB) t1 += rho[i]; + fpair += D_i * rhojp * t1; + } + + double phip; + double phi = PhiOfR(index, itype, jtype, recip, phip); + if(itype == jtype || x_i == -1.0 || x_j == -1.0) { + // Case of no concentration dependence. + fpair += phip; + } else { + // We have a concentration dependence for the i-j interaction. + double h; + if(CDEAMVERSION == 1) { + // Calculate h(x_i) polynomial function. + double h_i = evalH(x_i); + // Calculate h(x_j) polynomial function. + double h_j = evalH(x_j); + h = 0.5 * (h_i + h_j); + } else if(CDEAMVERSION == 2) { + // Average concentration. + double x_ij = 0.5 * (x_i + x_j); + // Calculate h(x_ij) polynomial function. + h = evalH(x_ij); + } else ASSERT(false); + + fpair += h * phip; + phi *= h; + } + + // Divide by r_ij and negate to get forces from gradient. + fpair /= -r; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if(NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if(EFLAG) evdwl = phi; + if(EVFLAG) ev_tally_thr(this,i,j,nlocal,NEWTON_PAIR,evdwl,0.0, + fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairCDEAMOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairCDEAM::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_cdeam_omp.h b/src/USER-OMP/pair_cdeam_omp.h new file mode 100644 index 0000000000..85b124cb17 --- /dev/null +++ b/src/USER-OMP/pair_cdeam_omp.h @@ -0,0 +1,66 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(eam/cd/omp,PairCDEAM_OneSiteOMP) +PairStyle(eam/cd/old/omp,PairCDEAM_TwoSiteOMP) + +#else + +#ifndef LMP_PAIR_CDEAM_OMP_H +#define LMP_PAIR_CDEAM_OMP_H + +#include "pair_cdeam.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairCDEAMOMP : public PairCDEAM, public ThrOMP { + + public: + PairCDEAMOMP(class LAMMPS *, int); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double *rho_t, double *rhoB_t, double *D_values_t, + int iifrom, int iito, int tid); +}; + + /// The one-site concentration formulation of CD-EAM. + class PairCDEAM_OneSiteOMP : public PairCDEAMOMP + { + public: + /// Constructor. + PairCDEAM_OneSiteOMP(class LAMMPS* lmp) : PairEAM(lmp), PairCDEAMOMP(lmp, 1) {} + }; + + /// The two-site concentration formulation of CD-EAM. + class PairCDEAM_TwoSiteOMP : public PairCDEAMOMP + { + public: + /// Constructor. + PairCDEAM_TwoSiteOMP(class LAMMPS* lmp) : PairEAM(lmp), PairCDEAMOMP(lmp, 2) {} + }; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_colloid_omp.cpp b/src/USER-OMP/pair_colloid_omp.cpp new file mode 100644 index 0000000000..c8bc74407a --- /dev/null +++ b/src/USER-OMP/pair_colloid_omp.cpp @@ -0,0 +1,223 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_colloid_omp.h" +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairColloidOMP::PairColloidOMP(LAMMPS *lmp) : + PairColloid(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairColloidOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairColloidOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r,r2inv,r6inv,forcelj,factor_lj; + double c1,c2,fR,dUR,dUA,K[9],h[4],g[4]; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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]) continue; + + switch(form[itype][jtype]) { + case SMALL_SMALL: + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + fpair = factor_lj*forcelj*r2inv; + if (EFLAG) + evdwl = r6inv*(r6inv*lj3[itype][jtype]-lj4[itype][jtype]) - + offset[itype][jtype]; + break; + + case SMALL_LARGE: + c2 = a2[itype][jtype]; + K[1] = c2*c2; + K[2] = rsq; + K[0] = K[1] - rsq; + K[4] = rsq*rsq; + K[3] = K[1] - K[2]; + K[3] *= K[3]*K[3]; + K[6] = K[3]*K[3]; + fR = sigma3[itype][jtype]*a12[itype][jtype]*c2*K[1]/K[3]; + fpair = 4.0/15.0*fR*factor_lj * + (2.0*(K[1]+K[2]) * (K[1]*(5.0*K[1]+22.0*K[2])+5.0*K[4]) * + sigma6[itype][jtype]/K[6]-5.0) / K[0]; + if (EFLAG) + evdwl = 2.0/9.0*fR * + (1.0-(K[1]*(K[1]*(K[1]/3.0+3.0*K[2])+4.2*K[4])+K[2]*K[4]) * + sigma6[itype][jtype]/K[6]) - offset[itype][jtype]; + if (rsq <= K[1]) error->one(FLERR,"Overlapping small/large in pair colloid"); + break; + + case LARGE_LARGE: + r = sqrt(rsq); + c1 = a1[itype][jtype]; + c2 = a2[itype][jtype]; + K[0] = c1*c2; + K[1] = c1+c2; + K[2] = c1-c2; + K[3] = K[1]+r; + K[4] = K[1]-r; + K[5] = K[2]+r; + K[6] = K[2]-r; + K[7] = 1.0/(K[3]*K[4]); + K[8] = 1.0/(K[5]*K[6]); + g[0] = pow(K[3],-7.0); + g[1] = pow(K[4],-7.0); + g[2] = pow(K[5],-7.0); + g[3] = pow(K[6],-7.0); + h[0] = ((K[3]+5.0*K[1])*K[3]+30.0*K[0])*g[0]; + h[1] = ((K[4]+5.0*K[1])*K[4]+30.0*K[0])*g[1]; + h[2] = ((K[5]+5.0*K[2])*K[5]-30.0*K[0])*g[2]; + h[3] = ((K[6]+5.0*K[2])*K[6]-30.0*K[0])*g[3]; + g[0] *= 42.0*K[0]/K[3]+6.0*K[1]+K[3]; + g[1] *= 42.0*K[0]/K[4]+6.0*K[1]+K[4]; + g[2] *= -42.0*K[0]/K[5]+6.0*K[2]+K[5]; + g[3] *= -42.0*K[0]/K[6]+6.0*K[2]+K[6]; + + fR = a12[itype][jtype]*sigma6[itype][jtype]/r/37800.0; + evdwl = fR * (h[0]-h[1]-h[2]+h[3]); + dUR = evdwl/r + 5.0*fR*(g[0]+g[1]-g[2]-g[3]); + dUA = -a12[itype][jtype]/3.0*r*((2.0*K[0]*K[7]+1.0)*K[7] + + (2.0*K[0]*K[8]-1.0)*K[8]); + fpair = factor_lj * (dUR+dUA)/r; + if (EFLAG) + evdwl += a12[itype][jtype]/6.0 * + (2.0*K[0]*(K[7]+K[8])-log(K[8]/K[7])) - offset[itype][jtype]; + if (r <= K[1]) error->one(FLERR,"Overlapping large/large in pair colloid"); + break; + } + + if (EFLAG) evdwl *= factor_lj; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairColloidOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairColloid::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_colloid_omp.h b/src/USER-OMP/pair_colloid_omp.h new file mode 100644 index 0000000000..a0be13cbb4 --- /dev/null +++ b/src/USER-OMP/pair_colloid_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(colloid/omp,PairColloidOMP) + +#else + +#ifndef LMP_PAIR_COLLOID_OMP_H +#define LMP_PAIR_COLLOID_OMP_H + +#include "pair_colloid.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairColloidOMP : public PairColloid, public ThrOMP { + + public: + PairColloidOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_coul_cut_omp.cpp b/src/USER-OMP/pair_coul_cut_omp.cpp new file mode 100644 index 0000000000..bb19db3d22 --- /dev/null +++ b/src/USER-OMP/pair_coul_cut_omp.cpp @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_coul_cut_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairCoulCutOMP::PairCoulCutOMP(LAMMPS *lmp) : + PairCoulCut(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairCoulCutOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairCoulCutOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,ecoul,fpair; + double rsq,r2inv,rinv,forcecoul,factor_coul; + int *ilist,*jlist,*numneigh,**firstneigh; + + ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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]) { + r2inv = 1.0/rsq; + rinv = sqrt(r2inv); + forcecoul = qqrd2e * scale[itype][jtype] * qtmp*q[j]*rinv; + fpair = factor_coul*forcecoul * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) + ecoul = factor_coul * qqrd2e * scale[itype][jtype] * qtmp*q[j]*rinv; + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + 0.0,ecoul,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairCoulCutOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairCoulCut::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_coul_cut_omp.h b/src/USER-OMP/pair_coul_cut_omp.h new file mode 100644 index 0000000000..eca9958ff2 --- /dev/null +++ b/src/USER-OMP/pair_coul_cut_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(coul/cut/omp,PairCoulCutOMP) + +#else + +#ifndef LMP_PAIR_COUL_CUT_OMP_H +#define LMP_PAIR_COUL_CUT_OMP_H + +#include "pair_coul_cut.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairCoulCutOMP : public PairCoulCut, public ThrOMP { + + public: + PairCoulCutOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_coul_debye_omp.cpp b/src/USER-OMP/pair_coul_debye_omp.cpp new file mode 100644 index 0000000000..1c2e7b8e07 --- /dev/null +++ b/src/USER-OMP/pair_coul_debye_omp.cpp @@ -0,0 +1,163 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_coul_debye_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairCoulDebyeOMP::PairCoulDebyeOMP(LAMMPS *lmp) : + PairCoulDebye(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairCoulDebyeOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairCoulDebyeOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,ecoul,fpair; + double rsq,r2inv,r,rinv,forcecoul,factor_coul,screening; + int *ilist,*jlist,*numneigh,**firstneigh; + + ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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]) { + r2inv = 1.0/rsq; + r = sqrt(rsq); + rinv = 1.0/r; + screening = exp(-kappa*r); + forcecoul = qqrd2e * qtmp*q[j] * screening * (kappa + rinv); + fpair = factor_coul*forcecoul * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) + ecoul = factor_coul * qqrd2e * qtmp*q[j] * rinv * screening; + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + 0.0,ecoul,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ +double PairCoulDebyeOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairCoulDebye::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_coul_debye_omp.h b/src/USER-OMP/pair_coul_debye_omp.h new file mode 100644 index 0000000000..7ad599bb1b --- /dev/null +++ b/src/USER-OMP/pair_coul_debye_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(coul/debye/omp,PairCoulDebyeOMP) + +#else + +#ifndef LMP_PAIR_COUL_DEBYE_OMP_H +#define LMP_PAIR_COUL_DEBYE_OMP_H + +#include "pair_coul_debye.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairCoulDebyeOMP : public PairCoulDebye, public ThrOMP { + + public: + PairCoulDebyeOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_coul_long_omp.cpp b/src/USER-OMP/pair_coul_long_omp.cpp new file mode 100644 index 0000000000..3a2e051591 --- /dev/null +++ b/src/USER-OMP/pair_coul_long_omp.cpp @@ -0,0 +1,201 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_coul_long_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairCoulLongOMP::PairCoulLongOMP(LAMMPS *lmp) : + PairCoulLong(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairCoulLongOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairCoulLongOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itable,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,ecoul,fpair; + double fraction,table; + double r,r2inv,rsq,forcecoul,factor_coul; + double grij,expm2,prefactor,t,erfc; + int *ilist,*jlist,*numneigh,**firstneigh; + + ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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; + } 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; + 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; + } + } + + fpair = forcecoul * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = scale[itype][jtype] * qtmp*q[j] * table; + } + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + 0.0,ecoul,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairCoulLongOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairCoulLong::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_coul_long_omp.h b/src/USER-OMP/pair_coul_long_omp.h new file mode 100644 index 0000000000..7b63f762f2 --- /dev/null +++ b/src/USER-OMP/pair_coul_long_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(coul/long/omp,PairCoulLongOMP) + +#else + +#ifndef LMP_PAIR_COUL_LONG_OMP_H +#define LMP_PAIR_COUL_LONG_OMP_H + +#include "pair_coul_long.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairCoulLongOMP : public PairCoulLong, public ThrOMP { + + public: + PairCoulLongOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_dipole_cut_omp.cpp b/src/USER-OMP/pair_dipole_cut_omp.cpp new file mode 100644 index 0000000000..9ba93b19b5 --- /dev/null +++ b/src/USER-OMP/pair_dipole_cut_omp.cpp @@ -0,0 +1,288 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_dipole_cut_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairDipoleCutOMP::PairDipoleCutOMP(LAMMPS *lmp) : + PairDipoleCut(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairDipoleCutOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, **torque; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + torque = atom->torque + tid*nall; + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, torque, ifrom, ito, tid); + else eval<1,1,0>(f, torque, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, torque, ifrom, ito, tid); + else eval<1,0,0>(f, torque, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, torque, ifrom, ito, tid); + else eval<0,0,0>(f, torque, ifrom, ito, tid); + } + + // reduce per thread forces and torques into global arrays. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + data_reduce_thr(&(atom->torque[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairDipoleCutOMP::eval(double **f, double **torque, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,qtmp,delx,dely,delz,evdwl,ecoul; + double rsq,rinv,r2inv,r6inv,r3inv,r5inv,r7inv,fx,fy,fz; + double forcecoulx,forcecouly,forcecoulz,crossx,crossy,crossz; + double tixcoul,tiycoul,tizcoul,tjxcoul,tjycoul,tjzcoul; + double fq,pdotp,pidotr,pjdotr,pre1,pre2,pre3,pre4; + double forcelj,factor_coul,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + double *q = atom->q; + double **mu = atom->mu; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp,t1tmp,t2tmp,t3tmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=t1tmp=t2tmp=t3tmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_coul = special_coul[sbmask(j)]; + factor_lj = special_lj[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; + rinv = sqrt(r2inv); + + // atom can have both a charge and dipole + // i,j = charge-charge, dipole-dipole, dipole-charge, or charge-dipole + + forcecoulx = forcecouly = forcecoulz = 0.0; + tixcoul = tiycoul = tizcoul = 0.0; + tjxcoul = tjycoul = tjzcoul = 0.0; + + if (rsq < cut_coulsq[itype][jtype]) { + + if (qtmp != 0.0 && q[j] != 0.0) { + r3inv = r2inv*rinv; + pre1 = qtmp*q[j]*r3inv; + + forcecoulx += pre1*delx; + forcecouly += pre1*dely; + forcecoulz += pre1*delz; + } + + if (mu[i][3] > 0.0 && mu[j][3] > 0.0) { + r3inv = r2inv*rinv; + r5inv = r3inv*r2inv; + r7inv = r5inv*r2inv; + + pdotp = mu[i][0]*mu[j][0] + mu[i][1]*mu[j][1] + mu[i][2]*mu[j][2]; + pidotr = mu[i][0]*delx + mu[i][1]*dely + mu[i][2]*delz; + pjdotr = mu[j][0]*delx + mu[j][1]*dely + mu[j][2]*delz; + + pre1 = 3.0*r5inv*pdotp - 15.0*r7inv*pidotr*pjdotr; + pre2 = 3.0*r5inv*pjdotr; + pre3 = 3.0*r5inv*pidotr; + pre4 = -1.0*r3inv; + + forcecoulx += pre1*delx + pre2*mu[i][0] + pre3*mu[j][0]; + forcecouly += pre1*dely + pre2*mu[i][1] + pre3*mu[j][1]; + forcecoulz += pre1*delz + pre2*mu[i][2] + pre3*mu[j][2]; + + crossx = pre4 * (mu[i][1]*mu[j][2] - mu[i][2]*mu[j][1]); + crossy = pre4 * (mu[i][2]*mu[j][0] - mu[i][0]*mu[j][2]); + crossz = pre4 * (mu[i][0]*mu[j][1] - mu[i][1]*mu[j][0]); + + tixcoul += crossx + pre2 * (mu[i][1]*delz - mu[i][2]*dely); + tiycoul += crossy + pre2 * (mu[i][2]*delx - mu[i][0]*delz); + tizcoul += crossz + pre2 * (mu[i][0]*dely - mu[i][1]*delx); + tjxcoul += -crossx + pre3 * (mu[j][1]*delz - mu[j][2]*dely); + tjycoul += -crossy + pre3 * (mu[j][2]*delx - mu[j][0]*delz); + tjzcoul += -crossz + pre3 * (mu[j][0]*dely - mu[j][1]*delx); + } + + if (mu[i][3] > 0.0 && q[j] != 0.0) { + r3inv = r2inv*rinv; + r5inv = r3inv*r2inv; + pidotr = mu[i][0]*delx + mu[i][1]*dely + mu[i][2]*delz; + pre1 = 3.0*q[j]*r5inv * pidotr; + pre2 = q[j]*r3inv; + + forcecoulx += pre2*mu[i][0] - pre1*delx; + forcecouly += pre2*mu[i][1] - pre1*dely; + forcecoulz += pre2*mu[i][2] - pre1*delz; + tixcoul += pre2 * (mu[i][1]*delz - mu[i][2]*dely); + tiycoul += pre2 * (mu[i][2]*delx - mu[i][0]*delz); + tizcoul += pre2 * (mu[i][0]*dely - mu[i][1]*delx); + } + + if (mu[j][3] > 0.0 && qtmp != 0.0) { + r3inv = r2inv*rinv; + r5inv = r3inv*r2inv; + pjdotr = mu[j][0]*delx + mu[j][1]*dely + mu[j][2]*delz; + pre1 = 3.0*qtmp*r5inv * pjdotr; + pre2 = qtmp*r3inv; + + forcecoulx += pre1*delx - pre2*mu[j][0]; + forcecouly += pre1*dely - pre2*mu[j][1]; + forcecoulz += pre1*delz - pre2*mu[j][2]; + tjxcoul += -pre2 * (mu[j][1]*delz - mu[j][2]*dely); + tjycoul += -pre2 * (mu[j][2]*delx - mu[j][0]*delz); + tjzcoul += -pre2 * (mu[j][0]*dely - mu[j][1]*delx); + } + } + + // LJ interaction + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + forcelj *= factor_lj * r2inv; + } else forcelj = 0.0; + + // total force + + fq = factor_coul*qqrd2e; + fx = fq*forcecoulx + delx*forcelj; + fy = fq*forcecouly + dely*forcelj; + fz = fq*forcecoulz + delz*forcelj; + + // force & torque accumulation + + fxtmp += fx; + fytmp += fy; + fztmp += fz; + t1tmp += fq*tixcoul; + t2tmp += fq*tiycoul; + t3tmp += fq*tizcoul; + + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= fx; + f[j][1] -= fy; + f[j][2] -= fz; + torque[j][0] += fq*tjxcoul; + torque[j][1] += fq*tjycoul; + torque[j][2] += fq*tjzcoul; + } + + if (EFLAG) { + if (rsq < cut_coulsq[itype][jtype]) { + ecoul = qtmp*q[j]*rinv; + if (mu[i][3] > 0.0 && mu[j][3] > 0.0) + ecoul += r3inv*pdotp - 3.0*r5inv*pidotr*pjdotr; + if (mu[i][3] > 0.0 && q[j] != 0.0) + ecoul += -q[j]*r3inv*pidotr; + if (mu[j][3] > 0.0 && qtmp != 0.0) + ecoul += qtmp*r3inv*pjdotr; + ecoul *= factor_coul*qqrd2e; + } 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_xyz_thr(this,i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fx,fy,fz,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + torque[i][0] += t1tmp; + torque[i][1] += t2tmp; + torque[i][2] += t3tmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairDipoleCutOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairDipoleCut::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_dipole_cut_omp.h b/src/USER-OMP/pair_dipole_cut_omp.h new file mode 100644 index 0000000000..832bd4d3be --- /dev/null +++ b/src/USER-OMP/pair_dipole_cut_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(dipole/cut/omp,PairDipoleCutOMP) + +#else + +#ifndef LMP_PAIR_DIPOLE_CUT_OMP_H +#define LMP_PAIR_DIPOLE_CUT_OMP_H + +#include "pair_dipole_cut.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairDipoleCutOMP : public PairDipoleCut, public ThrOMP { + + public: + PairDipoleCutOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double **torque, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_dipole_sf_omp.cpp b/src/USER-OMP/pair_dipole_sf_omp.cpp new file mode 100644 index 0000000000..9ebc72d414 --- /dev/null +++ b/src/USER-OMP/pair_dipole_sf_omp.cpp @@ -0,0 +1,320 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_dipole_sf_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairDipoleSFOMP::PairDipoleSFOMP(LAMMPS *lmp) : + PairDipoleSF(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairDipoleSFOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, **torque; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + torque = atom->torque + tid*nall; + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, torque, ifrom, ito, tid); + else eval<1,1,0>(f, torque, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, torque, ifrom, ito, tid); + else eval<1,0,0>(f, torque, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, torque, ifrom, ito, tid); + else eval<0,0,0>(f, torque, ifrom, ito, tid); + } + + // reduce per thread forces and torques into global arrays. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + data_reduce_thr(&(atom->torque[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairDipoleSFOMP::eval(double **f, double **torque, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,qtmp,delx,dely,delz,evdwl,ecoul; + double rsq,rinv,r2inv,r6inv,r3inv,r5inv,fx,fy,fz; + double forcecoulx,forcecouly,forcecoulz,crossx,crossy,crossz; + double tixcoul,tiycoul,tizcoul,tjxcoul,tjycoul,tjzcoul; + double fq,pdotp,pidotr,pjdotr,pre1,pre2,pre3,pre4; + double forcelj,factor_coul,factor_lj; + double presf,afac,bfac,pqfac,qpfac,forceljcut,forceljsf; + double aforcecoulx,aforcecouly,aforcecoulz; + double bforcecoulx,bforcecouly,bforcecoulz; + double rcutlj2inv, rcutcoul2inv,rcutlj6inv; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + double *q = atom->q; + double **mu = atom->mu; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp,t1tmp,t2tmp,t3tmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=t1tmp=t2tmp=t3tmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_coul = special_coul[sbmask(j)]; + factor_lj = special_lj[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; + rinv = sqrt(r2inv); + + // atom can have both a charge and dipole + // i,j = charge-charge, dipole-dipole, dipole-charge, or charge-dipole + // atom can have both a charge and dipole + // i,j = charge-charge, dipole-dipole, dipole-charge, or charge-dipole + + forcecoulx = forcecouly = forcecoulz = 0.0; + tixcoul = tiycoul = tizcoul = 0.0; + tjxcoul = tjycoul = tjzcoul = 0.0; + + if (rsq < cut_coulsq[itype][jtype]) { + + if (qtmp != 0.0 && q[j] != 0.0) { + pre1 = qtmp*q[j]*rinv*(r2inv-1.0/cut_coulsq[itype][jtype]); + + forcecoulx += pre1*delx; + forcecouly += pre1*dely; + forcecoulz += pre1*delz; + } + + if (mu[i][3] > 0.0 && mu[j][3] > 0.0) { + r3inv = r2inv*rinv; + r5inv = r3inv*r2inv; + rcutcoul2inv=1.0/cut_coulsq[itype][jtype]; + + pdotp = mu[i][0]*mu[j][0] + mu[i][1]*mu[j][1] + mu[i][2]*mu[j][2]; + pidotr = mu[i][0]*delx + mu[i][1]*dely + mu[i][2]*delz; + pjdotr = mu[j][0]*delx + mu[j][1]*dely + mu[j][2]*delz; + + afac = 1.0 - rsq*rsq * rcutcoul2inv*rcutcoul2inv; + pre1 = afac * ( pdotp - 3.0 * r2inv * pidotr * pjdotr ); + aforcecoulx = pre1*delx; + aforcecouly = pre1*dely; + aforcecoulz = pre1*delz; + + bfac = 1.0 - 4.0*rsq*sqrt(rsq)*rcutcoul2inv*sqrt(rcutcoul2inv) + + 3.0*rsq*rsq*rcutcoul2inv*rcutcoul2inv; + presf = 2.0 * r2inv * pidotr * pjdotr; + bforcecoulx = bfac * (pjdotr*mu[i][0]+pidotr*mu[j][0]-presf*delx); + bforcecouly = bfac * (pjdotr*mu[i][1]+pidotr*mu[j][1]-presf*dely); + bforcecoulz = bfac * (pjdotr*mu[i][2]+pidotr*mu[j][2]-presf*delz); + + forcecoulx += 3.0 * r5inv * ( aforcecoulx + bforcecoulx ); + forcecouly += 3.0 * r5inv * ( aforcecouly + bforcecouly ); + forcecoulz += 3.0 * r5inv * ( aforcecoulz + bforcecoulz ); + + pre2 = 3.0 * bfac * r5inv * pjdotr; + pre3 = 3.0 * bfac * r5inv * pidotr; + pre4 = -bfac * r3inv; + + crossx = pre4 * (mu[i][1]*mu[j][2] - mu[i][2]*mu[j][1]); + crossy = pre4 * (mu[i][2]*mu[j][0] - mu[i][0]*mu[j][2]); + crossz = pre4 * (mu[i][0]*mu[j][1] - mu[i][1]*mu[j][0]); + + tixcoul += crossx + pre2 * (mu[i][1]*delz - mu[i][2]*dely); + tiycoul += crossy + pre2 * (mu[i][2]*delx - mu[i][0]*delz); + tizcoul += crossz + pre2 * (mu[i][0]*dely - mu[i][1]*delx); + tjxcoul += -crossx + pre3 * (mu[j][1]*delz - mu[j][2]*dely); + tjycoul += -crossy + pre3 * (mu[j][2]*delx - mu[j][0]*delz); + tjzcoul += -crossz + pre3 * (mu[j][0]*dely - mu[j][1]*delx); + } + + if (mu[i][3] > 0.0 && q[j] != 0.0) { + r3inv = r2inv*rinv; + r5inv = r3inv*r2inv; + pidotr = mu[i][0]*delx + mu[i][1]*dely + mu[i][2]*delz; + rcutcoul2inv=1.0/cut_coulsq[itype][jtype]; + pre1 = 3.0 * q[j] * r5inv * pidotr * (1-rsq*rcutcoul2inv); + pqfac = 1.0 - 3.0*rsq*rcutcoul2inv + + 2.0*rsq*sqrt(rsq)*rcutcoul2inv*sqrt(rcutcoul2inv); + pre2 = q[j] * r3inv * pqfac; + + forcecoulx += pre2*mu[i][0] - pre1*delx; + forcecouly += pre2*mu[i][1] - pre1*dely; + forcecoulz += pre2*mu[i][2] - pre1*delz; + tixcoul += pre2 * (mu[i][1]*delz - mu[i][2]*dely); + tiycoul += pre2 * (mu[i][2]*delx - mu[i][0]*delz); + tizcoul += pre2 * (mu[i][0]*dely - mu[i][1]*delx); + } + + if (mu[j][3] > 0.0 && qtmp != 0.0) { + r3inv = r2inv*rinv; + r5inv = r3inv*r2inv; + pjdotr = mu[j][0]*delx + mu[j][1]*dely + mu[j][2]*delz; + rcutcoul2inv=1.0/cut_coulsq[itype][jtype]; + pre1 = 3.0 * qtmp * r5inv * pjdotr * (1-rsq*rcutcoul2inv); + qpfac = 1.0 - 3.0*rsq*rcutcoul2inv + + 2.0*rsq*sqrt(rsq)*rcutcoul2inv*sqrt(rcutcoul2inv); + pre2 = qtmp * r3inv * qpfac; + + forcecoulx += pre1*delx - pre2*mu[j][0]; + forcecouly += pre1*dely - pre2*mu[j][1]; + forcecoulz += pre1*delz - pre2*mu[j][2]; + tjxcoul += -pre2 * (mu[j][1]*delz - mu[j][2]*dely); + tjycoul += -pre2 * (mu[j][2]*delx - mu[j][0]*delz); + tjzcoul += -pre2 * (mu[j][0]*dely - mu[j][1]*delx); + } + } + + // LJ interaction + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forceljcut = r6inv*(lj1[itype][jtype]*r6inv-lj2[itype][jtype])*r2inv; + + rcutlj2inv = 1.0 / cut_ljsq[itype][jtype]; + rcutlj6inv = rcutlj2inv * rcutlj2inv * rcutlj2inv; + forceljsf = (lj1[itype][jtype]*rcutlj6inv - lj2[itype][jtype]) * + rcutlj6inv * rcutlj2inv; + + forcelj = factor_lj * (forceljcut - forceljsf); + } else forcelj = 0.0; + + // total force + + fq = factor_coul*qqrd2e; + fx = fq*forcecoulx + delx*forcelj; + fy = fq*forcecouly + dely*forcelj; + fz = fq*forcecoulz + delz*forcelj; + + // force & torque accumulation + + fxtmp += fx; + fytmp += fy; + fztmp += fz; + t1tmp += fq*tixcoul; + t2tmp += fq*tiycoul; + t3tmp += fq*tizcoul; + + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= fx; + f[j][1] -= fy; + f[j][2] -= fz; + torque[j][0] += fq*tjxcoul; + torque[j][1] += fq*tjycoul; + torque[j][2] += fq*tjzcoul; + } + + if (EFLAG) { + if (rsq < cut_coulsq[itype][jtype]) { + ecoul = qtmp * q[j] * rinv * + pow((1.0-sqrt(rsq)/sqrt(cut_coulsq[itype][jtype])),2); + if (mu[i][3] > 0.0 && mu[j][3] > 0.0) + ecoul += bfac * (r3inv*pdotp - 3.0*r5inv*pidotr*pjdotr); + if (mu[i][3] > 0.0 && q[j] != 0.0) + ecoul += -q[j] * r3inv * pqfac * pidotr; + if (mu[j][3] > 0.0 && qtmp != 0.0) + ecoul += qtmp * r3inv * qpfac * pjdotr; + ecoul *= factor_coul*qqrd2e; + } else ecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype])+ + rcutlj6inv*(6*lj3[itype][jtype]*rcutlj6inv-3*lj4[itype][jtype])* + rsq*rcutlj2inv+ + rcutlj6inv*(-7*lj3[itype][jtype]*rcutlj6inv+4*lj4[itype][jtype]); + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (EVFLAG) ev_tally_xyz_thr(this,i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fx,fy,fz,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + torque[i][0] += t1tmp; + torque[i][1] += t2tmp; + torque[i][2] += t3tmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairDipoleSFOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairDipoleSF::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_dipole_sf_omp.h b/src/USER-OMP/pair_dipole_sf_omp.h new file mode 100644 index 0000000000..e601e2d569 --- /dev/null +++ b/src/USER-OMP/pair_dipole_sf_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(dipole/sf/omp,PairDipoleSFOMP) + +#else + +#ifndef LMP_PAIR_DIPOLE_SF_OMP_H +#define LMP_PAIR_DIPOLE_SF_OMP_H + +#include "pair_dipole_sf.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairDipoleSFOMP : public PairDipoleSF, public ThrOMP { + + public: + PairDipoleSFOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double **torque, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_dpd_omp.cpp b/src/USER-OMP/pair_dpd_omp.cpp new file mode 100644 index 0000000000..be1e32f37d --- /dev/null +++ b/src/USER-OMP/pair_dpd_omp.cpp @@ -0,0 +1,212 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_dpd_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "update.h" +#include "random_mars.h" + +using namespace LAMMPS_NS; + +#define EPSILON 1.0e-10 + +/* ---------------------------------------------------------------------- */ + +PairDPDOMP::PairDPDOMP(LAMMPS *lmp) : + PairDPD(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; + random_thr = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairDPDOMP::~PairDPDOMP() +{ + if (random_thr) { + for (int i=1; i < comm->nthreads; ++i) + delete random_thr[i]; + + delete[] random_thr; + random_thr = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairDPDOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + if (!random_thr) + random_thr = new RanMars*[nthreads]; + + random_thr[0] = random; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (random_thr && tid > 0) + random_thr[tid] = new RanMars(Pair::lmp, seed + comm->me + + comm->nprocs*tid); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairDPDOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double vxtmp,vytmp,vztmp,delvx,delvy,delvz; + double rsq,r,rinv,dot,wd,randnum,factor_dpd; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + double **v = atom->v; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double dtinvsqrt = 1.0/sqrt(update->dt); + double fxtmp,fytmp,fztmp; + RanMars &rng = *random_thr[tid]; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + vxtmp = v[i][0]; + vytmp = v[i][1]; + vztmp = v[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_dpd = special_lj[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]) { + r = sqrt(rsq); + if (r < EPSILON) continue; // r can be 0.0 in DPD systems + rinv = 1.0/r; + delvx = vxtmp - v[j][0]; + delvy = vytmp - v[j][1]; + delvz = vztmp - v[j][2]; + dot = delx*delvx + dely*delvy + delz*delvz; + wd = 1.0 - r/cut[itype][jtype]; + randnum = rng.gaussian(); + + // conservative force = a0 * wd + // drag force = -gamma * wd^2 * (delx dot delv) / r + // random force = sigma * wd * rnd * dtinvsqrt; + + fpair = a0[itype][jtype]*wd; + fpair -= gamma[itype][jtype]*wd*wd*dot*rinv; + fpair += sigma[itype][jtype]*wd*randnum*dtinvsqrt; + fpair *= factor_dpd*rinv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + // unshifted eng of conservative term: + // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]); + // eng shifted to 0.0 at cutoff + evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd*wd; + evdwl *= factor_dpd; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairDPDOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairDPD::memory_usage(); + bytes += comm->nthreads * sizeof(RanMars*); + bytes += comm->nthreads * sizeof(RanMars); + + return bytes; +} diff --git a/src/USER-OMP/pair_dpd_omp.h b/src/USER-OMP/pair_dpd_omp.h new file mode 100644 index 0000000000..9385e5444f --- /dev/null +++ b/src/USER-OMP/pair_dpd_omp.h @@ -0,0 +1,52 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(dpd/omp,PairDPDOMP) + +#else + +#ifndef LMP_PAIR_DPD_OMP_H +#define LMP_PAIR_DPD_OMP_H + +#include "pair_dpd.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairDPDOMP : public PairDPD, public ThrOMP { + + public: + PairDPDOMP(class LAMMPS *); + virtual ~PairDPDOMP(); + + virtual void compute(int, int); + virtual double memory_usage(); + + protected: + class RanMars **random_thr; + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_dpd_tstat_omp.cpp b/src/USER-OMP/pair_dpd_tstat_omp.cpp new file mode 100644 index 0000000000..7e3fb8b398 --- /dev/null +++ b/src/USER-OMP/pair_dpd_tstat_omp.cpp @@ -0,0 +1,214 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_dpd_tstat_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "update.h" +#include "random_mars.h" + +using namespace LAMMPS_NS; + +#define EPSILON 1.0e-10 + +/* ---------------------------------------------------------------------- */ + +PairDPDTstatOMP::PairDPDTstatOMP(LAMMPS *lmp) : + PairDPDTstat(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; + random_thr = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairDPDTstatOMP::~PairDPDTstatOMP() +{ + if (random_thr) { + for (int i=1; i < comm->nthreads; ++i) + delete random_thr[i]; + + delete[] random_thr; + random_thr = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairDPDTstatOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + if (!random_thr) + random_thr = new RanMars*[nthreads]; + + random_thr[0] = random; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (random_thr && tid > 0) + random_thr[tid] = new RanMars(Pair::lmp, seed + comm->me + + comm->nprocs*tid); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairDPDTstatOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double vxtmp,vytmp,vztmp,delvx,delvy,delvz; + double rsq,r,rinv,dot,wd,randnum,factor_dpd; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + double **v = atom->v; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double dtinvsqrt = 1.0/sqrt(update->dt); + double fxtmp,fytmp,fztmp; + RanMars &rng = *random_thr[tid]; + + // adjust sigma if target T is changing + + if (t_start != t_stop) { + double delta = update->ntimestep - update->beginstep; + delta /= update->endstep - update->beginstep; + temperature = t_start + delta * (t_stop-t_start); + double boltz = force->boltz; + for (i = 1; i <= atom->ntypes; i++) + for (j = i; j <= atom->ntypes; j++) + sigma[i][j] = sigma[j][i] = sqrt(2.0*boltz*temperature*gamma[i][j]); + } + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + vxtmp = v[i][0]; + vytmp = v[i][1]; + vztmp = v[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_dpd = special_lj[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]) { + r = sqrt(rsq); + if (r < EPSILON) continue; // r can be 0.0 in DPD systems + rinv = 1.0/r; + delvx = vxtmp - v[j][0]; + delvy = vytmp - v[j][1]; + delvz = vztmp - v[j][2]; + dot = delx*delvx + dely*delvy + delz*delvz; + wd = 1.0 - r/cut[itype][jtype]; + randnum = rng.gaussian(); + + // drag force = -gamma * wd^2 * (delx dot delv) / r + // random force = sigma * wd * rnd * dtinvsqrt; + + fpair = -gamma[itype][jtype]*wd*wd*dot*rinv; + fpair += sigma[itype][jtype]*wd*randnum*dtinvsqrt; + fpair *= factor_dpd*rinv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + 0.0,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairDPDTstatOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairDPDTstat::memory_usage(); + bytes += comm->nthreads * sizeof(RanMars*); + bytes += comm->nthreads * sizeof(RanMars); + + return bytes; +} diff --git a/src/USER-OMP/pair_dpd_tstat_omp.h b/src/USER-OMP/pair_dpd_tstat_omp.h new file mode 100644 index 0000000000..14f640a925 --- /dev/null +++ b/src/USER-OMP/pair_dpd_tstat_omp.h @@ -0,0 +1,52 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(dpd/tstat/omp,PairDPDTstatOMP) + +#else + +#ifndef LMP_PAIR_DPD_TSTAT_OMP_H +#define LMP_PAIR_DPD_TSTAT_OMP_H + +#include "pair_dpd_tstat.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairDPDTstatOMP : public PairDPDTstat, public ThrOMP { + + public: + PairDPDTstatOMP(class LAMMPS *); + virtual ~PairDPDTstatOMP(); + + virtual void compute(int, int); + virtual double memory_usage(); + + protected: + class RanMars **random_thr; + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_eam_alloy_omp.cpp b/src/USER-OMP/pair_eam_alloy_omp.cpp new file mode 100644 index 0000000000..54be571b7f --- /dev/null +++ b/src/USER-OMP/pair_eam_alloy_omp.cpp @@ -0,0 +1,323 @@ +/* ---------------------------------------------------------------------- + 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: Stephen Foiles (SNL), Murray Daw (SNL) +------------------------------------------------------------------------- */ + +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "pair_eam_alloy_omp.h" +#include "atom.h" +#include "comm.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define MAXLINE 1024 + +/* ---------------------------------------------------------------------- */ + +PairEAMAlloyOMP::PairEAMAlloyOMP(LAMMPS *lmp) : PairEAMOMP(lmp) +{ + one_coeff = 1; +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + read DYNAMO setfl file +------------------------------------------------------------------------- */ + +void PairEAMAlloyOMP::coeff(int narg, char **arg) +{ + int i,j; + + if (!allocated) allocate(); + + if (narg != 3 + atom->ntypes) + error->all(FLERR,"Incorrect args for pair coefficients"); + + // insure I,J args are * * + + if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) + error->all(FLERR,"Incorrect args for pair coefficients"); + + // read EAM setfl file + + if (setfl) { + for (i = 0; i < setfl->nelements; i++) delete [] setfl->elements[i]; + delete [] setfl->elements; + delete [] setfl->mass; + memory->destroy(setfl->frho); + memory->destroy(setfl->rhor); + memory->destroy(setfl->z2r); + delete setfl; + } + setfl = new Setfl(); + read_file(arg[2]); + + // read args that map atom types to elements in potential file + // map[i] = which element the Ith atom type is, -1 if NULL + + for (i = 3; i < narg; i++) { + if (strcmp(arg[i],"NULL") == 0) { + map[i-2] = -1; + continue; + } + for (j = 0; j < setfl->nelements; j++) + if (strcmp(arg[i],setfl->elements[j]) == 0) break; + if (j < setfl->nelements) map[i-2] = j; + else error->all(FLERR,"No matching element in EAM potential file"); + } + + // clear setflag since coeff() called once with I,J = * * + + int n = atom->ntypes; + for (i = 1; i <= n; i++) + for (j = i; j <= n; j++) + setflag[i][j] = 0; + + // set setflag i,j for type pairs where both are mapped to elements + // set mass of atom type if i = j + + int count = 0; + for (i = 1; i <= n; i++) { + for (j = i; j <= n; j++) { + if (map[i] >= 0 && map[j] >= 0) { + setflag[i][j] = 1; + if (i == j) atom->set_mass(i,setfl->mass[map[i]]); + count++; + } + } + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + read a multi-element DYNAMO setfl file +------------------------------------------------------------------------- */ + +void PairEAMAlloyOMP::read_file(char *filename) +{ + Setfl *file = setfl; + + // open potential file + + int me = comm->me; + FILE *fptr; + char line[MAXLINE]; + + if (me == 0) { + fptr = fopen(filename,"r"); + if (fptr == NULL) { + char str[128]; + sprintf(str,"Cannot open EAM potential file %s",filename); + error->one(FLERR,str); + } + } + + // read and broadcast header + // extract element names from nelements line + + int n; + if (me == 0) { + fgets(line,MAXLINE,fptr); + fgets(line,MAXLINE,fptr); + fgets(line,MAXLINE,fptr); + fgets(line,MAXLINE,fptr); + n = strlen(line) + 1; + } + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + + sscanf(line,"%d",&file->nelements); + int nwords = atom->count_words(line); + if (nwords != file->nelements + 1) + error->all(FLERR,"Incorrect element names in EAM potential file"); + + char **words = new char*[file->nelements+1]; + nwords = 0; + strtok(line," \t\n\r\f"); + while (words[nwords++] = strtok(NULL," \t\n\r\f")) continue; + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + n = strlen(words[i]) + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i],words[i]); + } + delete [] words; + + if (me == 0) { + fgets(line,MAXLINE,fptr); + sscanf(line,"%d %lg %d %lg %lg", + &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + } + + MPI_Bcast(&file->nrho,1,MPI_INT,0,world); + MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); + MPI_Bcast(&file->nr,1,MPI_INT,0,world); + MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); + MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + + file->mass = new double[file->nelements]; + memory->create(file->frho,file->nelements,file->nrho+1,"pair:frho"); + memory->create(file->rhor,file->nelements,file->nr+1,"pair:rhor"); + memory->create(file->z2r,file->nelements,file->nelements,file->nr+1, + "pair:z2r"); + + int i,j,tmp; + for (i = 0; i < file->nelements; i++) { + if (me == 0) { + fgets(line,MAXLINE,fptr); + sscanf(line,"%d %lg",&tmp,&file->mass[i]); + } + MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); + + if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); + MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); + if (me == 0) grab(fptr,file->nr,&file->rhor[i][1]); + MPI_Bcast(&file->rhor[i][1],file->nr,MPI_DOUBLE,0,world); + } + + for (i = 0; i < file->nelements; i++) + for (j = 0; j <= i; j++) { + if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); + MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); + } + + // close the potential file + + if (me == 0) fclose(fptr); +} + +/* ---------------------------------------------------------------------- + copy read-in setfl potential to standard array format +------------------------------------------------------------------------- */ + +void PairEAMAlloyOMP::file2array() +{ + int i,j,m,n; + int ntypes = atom->ntypes; + + // set function params directly from setfl file + + nrho = setfl->nrho; + nr = setfl->nr; + drho = setfl->drho; + dr = setfl->dr; + + // ------------------------------------------------------------------ + // setup frho arrays + // ------------------------------------------------------------------ + + // allocate frho arrays + // nfrho = # of setfl elements + 1 for zero array + + nfrho = setfl->nelements + 1; + memory->destroy(frho); + memory->create(frho,nfrho,nrho+1,"pair:frho"); + + // copy each element's frho to global frho + + for (i = 0; i < setfl->nelements; i++) + for (m = 1; m <= nrho; m++) frho[i][m] = setfl->frho[i][m]; + + // add extra frho of zeroes for non-EAM types to point to (pair hybrid) + // this is necessary b/c fp is still computed for non-EAM atoms + + for (m = 1; m <= nrho; m++) frho[nfrho-1][m] = 0.0; + + // type2frho[i] = which frho array (0 to nfrho-1) each atom type maps to + // if atom type doesn't point to element (non-EAM atom in pair hybrid) + // then map it to last frho array of zeroes + + for (i = 1; i <= ntypes; i++) + if (map[i] >= 0) type2frho[i] = map[i]; + else type2frho[i] = nfrho-1; + + // ------------------------------------------------------------------ + // setup rhor arrays + // ------------------------------------------------------------------ + + // allocate rhor arrays + // nrhor = # of setfl elements + + nrhor = setfl->nelements; + memory->destroy(rhor); + memory->create(rhor,nrhor,nr+1,"pair:rhor"); + + // copy each element's rhor to global rhor + + for (i = 0; i < setfl->nelements; i++) + for (m = 1; m <= nr; m++) rhor[i][m] = setfl->rhor[i][m]; + + // type2rhor[i][j] = which rhor array (0 to nrhor-1) each type pair maps to + // for setfl files, I,J mapping only depends on I + // OK if map = -1 (non-EAM atom in pair hybrid) b/c type2rhor not used + + for (i = 1; i <= ntypes; i++) + for (j = 1; j <= ntypes; j++) + type2rhor[i][j] = map[i]; + + // ------------------------------------------------------------------ + // setup z2r arrays + // ------------------------------------------------------------------ + + // allocate z2r arrays + // nz2r = N*(N+1)/2 where N = # of setfl elements + + nz2r = setfl->nelements * (setfl->nelements+1) / 2; + memory->destroy(z2r); + memory->create(z2r,nz2r,nr+1,"pair:z2r"); + + // copy each element pair z2r to global z2r, only for I >= J + + n = 0; + for (i = 0; i < setfl->nelements; i++) + for (j = 0; j <= i; j++) { + for (m = 1; m <= nr; m++) z2r[n][m] = setfl->z2r[i][j][m]; + n++; + } + + // type2z2r[i][j] = which z2r array (0 to nz2r-1) each type pair maps to + // set of z2r arrays only fill lower triangular Nelement matrix + // value = n = sum over rows of lower-triangular matrix until reach irow,icol + // swap indices when irow < icol to stay lower triangular + // if map = -1 (non-EAM atom in pair hybrid): + // type2z2r is not used by non-opt + // but set type2z2r to 0 since accessed by opt + + int irow,icol; + for (i = 1; i <= ntypes; i++) { + for (j = 1; j <= ntypes; j++) { + irow = map[i]; + icol = map[j]; + if (irow == -1 || icol == -1) { + type2z2r[i][j] = 0; + continue; + } + if (irow < icol) { + irow = map[j]; + icol = map[i]; + } + n = 0; + for (m = 0; m < irow; m++) n += m + 1; + n += icol; + type2z2r[i][j] = n; + } + } +} diff --git a/src/USER-OMP/pair_eam_alloy_omp.h b/src/USER-OMP/pair_eam_alloy_omp.h new file mode 100644 index 0000000000..7a71fbc17a --- /dev/null +++ b/src/USER-OMP/pair_eam_alloy_omp.h @@ -0,0 +1,43 @@ +/* ---------------------------------------------------------------------- + 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(eam/alloy/omp,PairEAMAlloyOMP) + +#else + +#ifndef LMP_PAIR_EAM_ALLOY_OMP_H +#define LMP_PAIR_EAM_ALLOY_OMP_H + +#include "pair_eam_omp.h" + +namespace LAMMPS_NS { + +// need virtual public b/c of how eam/alloy/opt inherits from it + +class PairEAMAlloyOMP : virtual public PairEAMOMP { + public: + PairEAMAlloyOMP(class LAMMPS *); + virtual ~PairEAMAlloyOMP() {} + void coeff(int, char **); + + protected: + void read_file(char *); + void file2array(); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_eam_fs_omp.cpp b/src/USER-OMP/pair_eam_fs_omp.cpp new file mode 100644 index 0000000000..d0963fa621 --- /dev/null +++ b/src/USER-OMP/pair_eam_fs_omp.cpp @@ -0,0 +1,332 @@ +/* ---------------------------------------------------------------------- + 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: Tim Lau (MIT) +------------------------------------------------------------------------- */ + +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "pair_eam_fs_omp.h" +#include "atom.h" +#include "comm.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define MAXLINE 1024 + +/* ---------------------------------------------------------------------- */ + +PairEAMFSOMP::PairEAMFSOMP(LAMMPS *lmp) : PairEAMOMP(lmp) +{ + one_coeff = 1; +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + read EAM Finnis-Sinclair file +------------------------------------------------------------------------- */ + +void PairEAMFSOMP::coeff(int narg, char **arg) +{ + int i,j; + + if (!allocated) allocate(); + + if (narg != 3 + atom->ntypes) + error->all(FLERR,"Incorrect args for pair coefficients"); + + // insure I,J args are * * + + if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) + error->all(FLERR,"Incorrect args for pair coefficients"); + + // read EAM Finnis-Sinclair file + + if (fs) { + for (i = 0; i < fs->nelements; i++) delete [] fs->elements[i]; + delete [] fs->elements; + delete [] fs->mass; + memory->destroy(fs->frho); + memory->destroy(fs->rhor); + memory->destroy(fs->z2r); + delete fs; + } + fs = new Fs(); + read_file(arg[2]); + + // read args that map atom types to elements in potential file + // map[i] = which element the Ith atom type is, -1 if NULL + + for (i = 3; i < narg; i++) { + if (strcmp(arg[i],"NULL") == 0) { + map[i-2] = -1; + continue; + } + for (j = 0; j < fs->nelements; j++) + if (strcmp(arg[i],fs->elements[j]) == 0) break; + if (j < fs->nelements) map[i-2] = j; + else error->all(FLERR,"No matching element in EAM potential file"); + } + + // clear setflag since coeff() called once with I,J = * * + + int n = atom->ntypes; + for (i = 1; i <= n; i++) + for (j = i; j <= n; j++) + setflag[i][j] = 0; + + // set setflag i,j for type pairs where both are mapped to elements + // set mass of atom type if i = j + + int count = 0; + for (i = 1; i <= n; i++) { + for (j = i; j <= n; j++) { + if (map[i] >= 0 && map[j] >= 0) { + setflag[i][j] = 1; + if (i == j) atom->set_mass(i,fs->mass[map[i]]); + count++; + } + } + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + read a multi-element DYNAMO setfl file +------------------------------------------------------------------------- */ + +void PairEAMFSOMP::read_file(char *filename) +{ + Fs *file = fs; + + // open potential file + + int me = comm->me; + FILE *fptr; + char line[MAXLINE]; + + if (me == 0) { + fptr = fopen(filename,"r"); + if (fptr == NULL) { + char str[128]; + sprintf(str,"Cannot open EAM potential file %s",filename); + error->one(FLERR,str); + } + } + + // read and broadcast header + // extract element names from nelements line + + int n; + if (me == 0) { + fgets(line,MAXLINE,fptr); + fgets(line,MAXLINE,fptr); + fgets(line,MAXLINE,fptr); + fgets(line,MAXLINE,fptr); + n = strlen(line) + 1; + } + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + + sscanf(line,"%d",&file->nelements); + int nwords = atom->count_words(line); + if (nwords != file->nelements + 1) + error->all(FLERR,"Incorrect element names in EAM potential file"); + + char **words = new char*[file->nelements+1]; + nwords = 0; + strtok(line," \t\n\r\f"); + while (words[nwords++] = strtok(NULL," \t\n\r\f")) continue; + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + n = strlen(words[i]) + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i],words[i]); + } + delete [] words; + + if (me == 0) { + fgets(line,MAXLINE,fptr); + sscanf(line,"%d %lg %d %lg %lg", + &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + } + + MPI_Bcast(&file->nrho,1,MPI_INT,0,world); + MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); + MPI_Bcast(&file->nr,1,MPI_INT,0,world); + MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); + MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + + file->mass = new double[file->nelements]; + memory->create(file->frho,file->nelements,file->nrho+1, + "pair:frho"); + memory->create(file->rhor,file->nelements,file->nelements, + file->nr+1,"pair:rhor"); + memory->create(file->z2r,file->nelements,file->nelements, + file->nr+1,"pair:z2r"); + + int i,j,tmp; + for (i = 0; i < file->nelements; i++) { + if (me == 0) { + fgets(line,MAXLINE,fptr); + sscanf(line,"%d %lg",&tmp,&file->mass[i]); + } + MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); + + if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); + MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); + + for (j = 0; j < file->nelements; j++) { + if (me == 0) grab(fptr,file->nr,&file->rhor[i][j][1]); + MPI_Bcast(&file->rhor[i][j][1],file->nr,MPI_DOUBLE,0,world); + } + } + + for (i = 0; i < file->nelements; i++) + for (j = 0; j <= i; j++) { + if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); + MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); + } + + // close the potential file + + if (me == 0) fclose(fptr); +} + +/* ---------------------------------------------------------------------- + copy read-in setfl potential to standard array format +------------------------------------------------------------------------- */ + +void PairEAMFSOMP::file2array() +{ + int i,j,m,n; + int ntypes = atom->ntypes; + + // set function params directly from fs file + + nrho = fs->nrho; + nr = fs->nr; + drho = fs->drho; + dr = fs->dr; + + // ------------------------------------------------------------------ + // setup frho arrays + // ------------------------------------------------------------------ + + // allocate frho arrays + // nfrho = # of fs elements + 1 for zero array + + nfrho = fs->nelements + 1; + memory->destroy(frho); + memory->create(frho,nfrho,nrho+1,"pair:frho"); + + // copy each element's frho to global frho + + for (i = 0; i < fs->nelements; i++) + for (m = 1; m <= nrho; m++) frho[i][m] = fs->frho[i][m]; + + // add extra frho of zeroes for non-EAM types to point to (pair hybrid) + // this is necessary b/c fp is still computed for non-EAM atoms + + for (m = 1; m <= nrho; m++) frho[nfrho-1][m] = 0.0; + + // type2frho[i] = which frho array (0 to nfrho-1) each atom type maps to + // if atom type doesn't point to element (non-EAM atom in pair hybrid) + // then map it to last frho array of zeroes + + for (i = 1; i <= ntypes; i++) + if (map[i] >= 0) type2frho[i] = map[i]; + else type2frho[i] = nfrho-1; + + // ------------------------------------------------------------------ + // setup rhor arrays + // ------------------------------------------------------------------ + + // allocate rhor arrays + // nrhor = square of # of fs elements + + nrhor = fs->nelements * fs->nelements; + memory->destroy(rhor); + memory->create(rhor,nrhor,nr+1,"pair:rhor"); + + // copy each element pair rhor to global rhor + + n = 0; + for (i = 0; i < fs->nelements; i++) + for (j = 0; j < fs->nelements; j++) { + for (m = 1; m <= nr; m++) rhor[n][m] = fs->rhor[i][j][m]; + n++; + } + + // type2rhor[i][j] = which rhor array (0 to nrhor-1) each type pair maps to + // for fs files, there is a full NxN set of rhor arrays + // OK if map = -1 (non-EAM atom in pair hybrid) b/c type2rhor not used + + for (i = 1; i <= ntypes; i++) + for (j = 1; j <= ntypes; j++) + type2rhor[i][j] = map[i] * fs->nelements + map[j]; + + // ------------------------------------------------------------------ + // setup z2r arrays + // ------------------------------------------------------------------ + + // allocate z2r arrays + // nz2r = N*(N+1)/2 where N = # of fs elements + + nz2r = fs->nelements * (fs->nelements+1) / 2; + memory->destroy(z2r); + memory->create(z2r,nz2r,nr+1,"pair:z2r"); + + // copy each element pair z2r to global z2r, only for I >= J + + n = 0; + for (i = 0; i < fs->nelements; i++) + for (j = 0; j <= i; j++) { + for (m = 1; m <= nr; m++) z2r[n][m] = fs->z2r[i][j][m]; + n++; + } + + // type2z2r[i][j] = which z2r array (0 to nz2r-1) each type pair maps to + // set of z2r arrays only fill lower triangular Nelement matrix + // value = n = sum over rows of lower-triangular matrix until reach irow,icol + // swap indices when irow < icol to stay lower triangular + // if map = -1 (non-EAM atom in pair hybrid): + // type2z2r is not used by non-opt + // but set type2z2r to 0 since accessed by opt + + int irow,icol; + for (i = 1; i <= ntypes; i++) { + for (j = 1; j <= ntypes; j++) { + irow = map[i]; + icol = map[j]; + if (irow == -1 || icol == -1) { + type2z2r[i][j] = 0; + continue; + } + if (irow < icol) { + irow = map[j]; + icol = map[i]; + } + n = 0; + for (m = 0; m < irow; m++) n += m + 1; + n += icol; + type2z2r[i][j] = n; + } + } +} diff --git a/src/USER-OMP/pair_eam_fs_omp.h b/src/USER-OMP/pair_eam_fs_omp.h new file mode 100644 index 0000000000..bee6cef762 --- /dev/null +++ b/src/USER-OMP/pair_eam_fs_omp.h @@ -0,0 +1,43 @@ +/* ---------------------------------------------------------------------- + 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(eam/fs/omp,PairEAMFSOMP) + +#else + +#ifndef LMP_PAIR_EAM_FS_OMP_H +#define LMP_PAIR_EAM_FS_OMP_H + +#include "pair_eam_omp.h" + +namespace LAMMPS_NS { + +// need virtual public b/c of how eam/fs/opt inherits from it + +class PairEAMFSOMP : virtual public PairEAMOMP { + public: + PairEAMFSOMP(class LAMMPS *); + virtual ~PairEAMFSOMP() {} + void coeff(int, char **); + + protected: + void read_file(char *); + void file2array(); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_eam_omp.cpp b/src/USER-OMP/pair_eam_omp.cpp new file mode 100644 index 0000000000..0ae4d54fb7 --- /dev/null +++ b/src/USER-OMP/pair_eam_omp.cpp @@ -0,0 +1,303 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "string.h" + +#include "pair_eam_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "memory.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairEAMOMP::PairEAMOMP(LAMMPS *lmp) : + PairEAM(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairEAMOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + // grow energy and fp arrays if necessary + // need to be atom->nmax in length + + if (atom->nmax > nmax) { + memory->destroy(rho); + memory->destroy(fp); + nmax = atom->nmax; + memory->create(rho,nthreads*nmax,"pair:rho"); + memory->create(fp,nmax,"pair:fp"); + } + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, *rho_t; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + if (force->newton_pair) + rho_t = rho + tid*nall; + else rho_t = rho + tid*atom->nlocal; + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, rho_t, ifrom, ito, tid); + else eval<1,1,0>(f, rho_t, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, rho_t, ifrom, ito, tid); + else eval<1,0,0>(f, rho_t, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, rho_t, ifrom, ito, tid); + else eval<0,0,0>(f, rho_t, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairEAMOMP::eval(double **f, double *rho_t, + int iifrom, int iito, int tid) +{ + int i,j,ii,jj,m,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r,p,rhoip,rhojp,z2,z2p,recip,phip,psip,phi; + double *coeff; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // zero out density + + if (NEWTON_PAIR) memset(rho_t, 0, nall*sizeof(double)); + else memset(rho_t, 0, nlocal*sizeof(double)); + + // rho = density at each atom + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < cutforcesq) { + jtype = type[j]; + p = sqrt(rsq)*rdr + 1.0; + m = static_cast (p); + m = MIN(m,nr-1); + p -= m; + p = MIN(p,1.0); + coeff = rhor_spline[type2rhor[jtype][itype]][m]; + rho_t[i] += ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + if (NEWTON_PAIR || j < nlocal) { + coeff = rhor_spline[type2rhor[itype][jtype]][m]; + rho_t[j] += ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + } + } + } + } + + // wait until all threads are done with computation + sync_threads(); + + // communicate and sum densities + + if (NEWTON_PAIR) { + // reduce per thread density + data_reduce_thr(&(rho[0]), nall, comm->nthreads, 1, tid); + + // wait until reduction is complete + sync_threads(); + +#if defined(_OPENMP) +#pragma omp master +#endif + { comm->reverse_comm_pair(this); } + + // wait until master thread is done with communication + sync_threads(); + + } else { + data_reduce_thr(&(rho[0]), nlocal, comm->nthreads, 1, tid); + + // wait until reduction is complete + sync_threads(); + } + + // fp = derivative of embedding energy at each atom + // phi = embedding energy at each atom + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + p = rho[i]*rdrho + 1.0; + m = static_cast (p); + m = MAX(1,MIN(m,nrho-1)); + p -= m; + p = MIN(p,1.0); + coeff = frho_spline[type2frho[type[i]]][m]; + fp[i] = (coeff[0]*p + coeff[1])*p + coeff[2]; + if (EFLAG) { + phi = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + if (eflag_global) eng_vdwl_thr[tid] += phi; + if (eflag_atom) eatom_thr[tid][i] += phi; + } + } + + // wait until all theads are done with computation + sync_threads(); + + // communicate derivative of embedding function + // MPI communication only on master thread +#if defined(_OPENMP) +#pragma omp master +#endif + { comm->forward_comm_pair(this); } + + // wait until master thread is done with communication + sync_threads(); + + // compute forces on each atom + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + fxtmp = fytmp = fztmp = 0.0; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < cutforcesq) { + jtype = type[j]; + r = sqrt(rsq); + p = r*rdr + 1.0; + m = static_cast (p); + m = MIN(m,nr-1); + p -= m; + p = MIN(p,1.0); + + // rhoip = derivative of (density at atom j due to atom i) + // rhojp = derivative of (density at atom i due to atom j) + // phi = pair potential energy + // phip = phi' + // z2 = phi * r + // z2p = (phi * r)' = (phi' r) + phi + // psip needs both fp[i] and fp[j] terms since r_ij appears in two + // terms of embed eng: Fi(sum rho_ij) and Fj(sum rho_ji) + // hence embed' = Fi(sum rho_ij) rhojp + Fj(sum rho_ji) rhoip + + coeff = rhor_spline[type2rhor[itype][jtype]][m]; + rhoip = (coeff[0]*p + coeff[1])*p + coeff[2]; + coeff = rhor_spline[type2rhor[jtype][itype]][m]; + rhojp = (coeff[0]*p + coeff[1])*p + coeff[2]; + coeff = z2r_spline[type2z2r[itype][jtype]][m]; + z2p = (coeff[0]*p + coeff[1])*p + coeff[2]; + z2 = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + + recip = 1.0/r; + phi = z2*recip; + phip = z2p*recip - phi*recip; + psip = fp[i]*rhojp + fp[j]*rhoip + phip; + fpair = -psip*recip; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) evdwl = phi; + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairEAMOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairEAM::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_eam_omp.h b/src/USER-OMP/pair_eam_omp.h new file mode 100644 index 0000000000..1184cb34bc --- /dev/null +++ b/src/USER-OMP/pair_eam_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(eam/omp,PairEAMOMP) + +#else + +#ifndef LMP_PAIR_EAM_OMP_H +#define LMP_PAIR_EAM_OMP_H + +#include "pair_eam.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairEAMOMP : public PairEAM, public ThrOMP { + + public: + PairEAMOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double *rho_t, int iifrom, int iito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_edip_omp.cpp b/src/USER-OMP/pair_edip_omp.cpp new file mode 100644 index 0000000000..65b05c8143 --- /dev/null +++ b/src/USER-OMP/pair_edip_omp.cpp @@ -0,0 +1,485 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_edip_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairEDIPOMP::PairEDIPOMP(LAMMPS *lmp) : + PairEDIP(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairEDIPOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = vflag_atom = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (vflag_atom) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (vflag_atom) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else eval<0,0,0>(f, ifrom, ito, tid); + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairEDIPOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,k,ii,inum,jnum; + int itype,jtype,ktype,ijparam,ikparam,ijkparam; + double xtmp,ytmp,ztmp,evdwl; + int *ilist,*jlist,*numneigh,**firstneigh; + register int preForceCoord_counter; + + double invR_ij; + double invR_ik; + double directorCos_ij_x; + double directorCos_ij_y; + double directorCos_ij_z; + double directorCos_ik_x; + double directorCos_ik_y; + double directorCos_ik_z; + double cosTeta; + + int interpolIDX; + double interpolTMP; + double interpolDeltaX; + double interpolY1; + double interpolY2; + + double invRMinusCutoffA; + double sigmaInvRMinusCutoffA; + double gammInvRMinusCutoffA; + double cosTetaDiff; + double cosTetaDiffCosTetaDiff; + double cutoffFunction_ij; + double exp2B_ij; + double exp2BDerived_ij; + double pow2B_ij; + double pow2BDerived_ij; + double exp3B_ij; + double exp3BDerived_ij; + double exp3B_ik; + double exp3BDerived_ik; + double qFunction; + double qFunctionDerived; + double tauFunction; + double tauFunctionDerived; + double expMinusBetaZeta_iZeta_i; + double qFunctionCosTetaDiffCosTetaDiff; + double expMinusQFunctionCosTetaDiffCosTetaDiff; + double zeta_i; + double zeta_iDerived; + double zeta_iDerivedInvR_ij; + + double forceModCoord_factor; + double forceModCoord; + double forceModCoord_ij; + double forceMod2B; + double forceMod3B_factor1_ij; + double forceMod3B_factor2_ij; + double forceMod3B_factor2; + double forceMod3B_factor1_ik; + double forceMod3B_factor2_ik; + double potentia3B_factor; + double potential2B_factor; + + double *pre_thrInvR_ij = preInvR_ij + tid * leadDimInteractionList; + double *pre_thrExp3B_ij = preExp3B_ij + tid * leadDimInteractionList; + double *pre_thrExp3BDerived_ij = preExp3BDerived_ij + tid * leadDimInteractionList; + double *pre_thrExp2B_ij = preExp2B_ij + tid * leadDimInteractionList; + double *pre_thrExp2BDerived_ij = preExp2BDerived_ij + tid * leadDimInteractionList; + double *pre_thrPow2B_ij = prePow2B_ij + tid * leadDimInteractionList; + double *pre_thrForceCoord = preForceCoord + tid * leadDimInteractionList; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over full neighbor list of my atoms + + for (ii = iifrom; ii < iito; ii++) { + zeta_i = 0.0; + int numForceCoordPairs = 0; + + i = ilist[ii]; + itype = map[type[i]]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // pre-loop to compute environment coordination f(Z) + + for (int neighbor_j = 0; neighbor_j < jnum; neighbor_j++) { + j = jlist[neighbor_j]; + j &= NEIGHMASK; + + double dr_ij[3], r_ij; + + dr_ij[0] = xtmp - x[j][0]; + dr_ij[1] = ytmp - x[j][1]; + dr_ij[2] = ztmp - x[j][2]; + r_ij = dr_ij[0]*dr_ij[0] + dr_ij[1]*dr_ij[1] + dr_ij[2]*dr_ij[2]; + + jtype = map[type[j]]; + ijparam = elem2param[itype][jtype][jtype]; + if (r_ij > params[ijparam].cutsq) continue; + + r_ij = sqrt(r_ij); + + invR_ij = 1.0 / r_ij; + pre_thrInvR_ij[neighbor_j] = invR_ij; + + invRMinusCutoffA = 1.0 / (r_ij - cutoffA); + sigmaInvRMinusCutoffA = sigma * invRMinusCutoffA; + gammInvRMinusCutoffA = gamm * invRMinusCutoffA; + + interpolDeltaX = r_ij - GRIDSTART; + interpolTMP = (interpolDeltaX * GRIDDENSITY); + interpolIDX = (int) interpolTMP; + + interpolY1 = exp3B[interpolIDX]; + interpolY2 = exp3B[interpolIDX+1]; + exp3B_ij = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + exp3BDerived_ij = - exp3B_ij * gammInvRMinusCutoffA * invRMinusCutoffA; + + pre_thrExp3B_ij[neighbor_j] = exp3B_ij; + pre_thrExp3BDerived_ij[neighbor_j] = exp3BDerived_ij; + + interpolY1 = exp2B[interpolIDX]; + interpolY2 = exp2B[interpolIDX+1]; + exp2B_ij = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + exp2BDerived_ij = - exp2B_ij * sigmaInvRMinusCutoffA * invRMinusCutoffA; + + pre_thrExp2B_ij[neighbor_j] = exp2B_ij; + pre_thrExp2BDerived_ij[neighbor_j] = exp2BDerived_ij; + + interpolY1 = pow2B[interpolIDX]; + interpolY2 = pow2B[interpolIDX+1]; + pow2B_ij = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + pre_thrPow2B_ij[neighbor_j] = pow2B_ij; + + // zeta and its derivative + + if (r_ij < cutoffC) zeta_i += 1.0; + else { + interpolY1 = cutoffFunction[interpolIDX]; + interpolY2 = cutoffFunction[interpolIDX+1]; + cutoffFunction_ij = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + zeta_i += cutoffFunction_ij; + + interpolY1 = cutoffFunctionDerived[interpolIDX]; + interpolY2 = cutoffFunctionDerived[interpolIDX+1]; + zeta_iDerived = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + zeta_iDerivedInvR_ij = zeta_iDerived * invR_ij; + + preForceCoord_counter=numForceCoordPairs*5; + pre_thrForceCoord[preForceCoord_counter+0]=zeta_iDerivedInvR_ij; + pre_thrForceCoord[preForceCoord_counter+1]=dr_ij[0]; + pre_thrForceCoord[preForceCoord_counter+2]=dr_ij[1]; + pre_thrForceCoord[preForceCoord_counter+3]=dr_ij[2]; + pre_thrForceCoord[preForceCoord_counter+4]=j; + numForceCoordPairs++; + } + } + + // quantities depending on zeta_i + + interpolDeltaX = zeta_i; + interpolTMP = (interpolDeltaX * GRIDDENSITY); + interpolIDX = (int) interpolTMP; + + interpolY1 = expMinusBetaZeta_iZeta_iGrid[interpolIDX]; + interpolY2 = expMinusBetaZeta_iZeta_iGrid[interpolIDX+1]; + expMinusBetaZeta_iZeta_i = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + interpolY1 = qFunctionGrid[interpolIDX]; + interpolY2 = qFunctionGrid[interpolIDX+1]; + qFunction = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + interpolY1 = tauFunctionGrid[interpolIDX]; + interpolY2 = tauFunctionGrid[interpolIDX+1]; + tauFunction = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + interpolY1 = tauFunctionDerivedGrid[interpolIDX]; + interpolY2 = tauFunctionDerivedGrid[interpolIDX+1]; + tauFunctionDerived = interpolY1 + (interpolY2 - interpolY1) * + (interpolTMP-interpolIDX); + + qFunctionDerived = -mu * qFunction; + + forceModCoord_factor = 2.0 * beta * zeta_i * expMinusBetaZeta_iZeta_i; + + forceModCoord = 0.0; + + // two-body interactions, skip half of them + + for (int neighbor_j = 0; neighbor_j < jnum; neighbor_j++) { + double dr_ij[3], r_ij, f_ij[3]; + + j = jlist[neighbor_j]; + j &= NEIGHMASK; + + dr_ij[0] = x[j][0] - xtmp; + dr_ij[1] = x[j][1] - ytmp; + dr_ij[2] = x[j][2] - ztmp; + r_ij = dr_ij[0]*dr_ij[0] + dr_ij[1]*dr_ij[1] + dr_ij[2]*dr_ij[2]; + + jtype = map[type[j]]; + ijparam = elem2param[itype][jtype][jtype]; + if (r_ij > params[ijparam].cutsq) continue; + + r_ij = sqrt(r_ij); + + invR_ij = pre_thrInvR_ij[neighbor_j]; + pow2B_ij = pre_thrPow2B_ij[neighbor_j]; + + potential2B_factor = pow2B_ij - expMinusBetaZeta_iZeta_i; + + exp2B_ij = pre_thrExp2B_ij[neighbor_j]; + + pow2BDerived_ij = - rho * invR_ij * pow2B_ij; + + forceModCoord += (forceModCoord_factor*exp2B_ij); + + exp2BDerived_ij = pre_thrExp2BDerived_ij[neighbor_j]; + forceMod2B = exp2BDerived_ij * potential2B_factor + + exp2B_ij * pow2BDerived_ij; + + directorCos_ij_x = invR_ij * dr_ij[0]; + directorCos_ij_y = invR_ij * dr_ij[1]; + directorCos_ij_z = invR_ij * dr_ij[2]; + + exp3B_ij = pre_thrExp3B_ij[neighbor_j]; + exp3BDerived_ij = pre_thrExp3BDerived_ij[neighbor_j]; + + f_ij[0] = forceMod2B * directorCos_ij_x; + f_ij[1] = forceMod2B * directorCos_ij_y; + f_ij[2] = forceMod2B * directorCos_ij_z; + + f[j][0] -= f_ij[0]; + f[j][1] -= f_ij[1]; + f[j][2] -= f_ij[2]; + + f[i][0] += f_ij[0]; + f[i][1] += f_ij[1]; + f[i][2] += f_ij[2]; + + // potential energy + + evdwl = (exp2B_ij * potential2B_factor); + + if (EVFLAG) ev_tally_thr(this,i, j, nlocal, /* newton_pair */ 1, evdwl, 0.0, + -forceMod2B*invR_ij, dr_ij[0], dr_ij[1], dr_ij[2],tid); + + // three-body Forces + + for (int neighbor_k = neighbor_j + 1; neighbor_k < jnum; neighbor_k++) { + double dr_ik[3], r_ik, f_ik[3]; + + k = jlist[neighbor_k]; + k &= NEIGHMASK; + ktype = map[type[k]]; + ikparam = elem2param[itype][ktype][ktype]; + ijkparam = elem2param[itype][jtype][ktype]; + + dr_ik[0] = x[k][0] - xtmp; + dr_ik[1] = x[k][1] - ytmp; + dr_ik[2] = x[k][2] - ztmp; + r_ik = dr_ik[0]*dr_ik[0] + dr_ik[1]*dr_ik[1] + dr_ik[2]*dr_ik[2]; + + if (r_ik > params[ikparam].cutsq) continue; + + r_ik = sqrt(r_ik); + + invR_ik = pre_thrInvR_ij[neighbor_k]; + + directorCos_ik_x = invR_ik * dr_ik[0]; + directorCos_ik_y = invR_ik * dr_ik[1]; + directorCos_ik_z = invR_ik * dr_ik[2]; + + cosTeta = directorCos_ij_x * directorCos_ik_x + + directorCos_ij_y * directorCos_ik_y + + directorCos_ij_z * directorCos_ik_z; + + cosTetaDiff = cosTeta + tauFunction; + cosTetaDiffCosTetaDiff = cosTetaDiff * cosTetaDiff; + qFunctionCosTetaDiffCosTetaDiff = cosTetaDiffCosTetaDiff * qFunction; + expMinusQFunctionCosTetaDiffCosTetaDiff = + exp(-qFunctionCosTetaDiffCosTetaDiff); + + potentia3B_factor = lambda * + ((1.0 - expMinusQFunctionCosTetaDiffCosTetaDiff) + + eta * qFunctionCosTetaDiffCosTetaDiff); + + exp3B_ik = pre_thrExp3B_ij[neighbor_k]; + exp3BDerived_ik = pre_thrExp3BDerived_ij[neighbor_k]; + + forceMod3B_factor1_ij = - exp3BDerived_ij * exp3B_ik * + potentia3B_factor; + forceMod3B_factor2 = 2.0 * lambda * exp3B_ij * exp3B_ik * + qFunction * cosTetaDiff * + (eta + expMinusQFunctionCosTetaDiffCosTetaDiff); + forceMod3B_factor2_ij = forceMod3B_factor2 * invR_ij; + + f_ij[0] = forceMod3B_factor1_ij * directorCos_ij_x + + forceMod3B_factor2_ij * + (cosTeta * directorCos_ij_x - directorCos_ik_x); + f_ij[1] = forceMod3B_factor1_ij * directorCos_ij_y + + forceMod3B_factor2_ij * + (cosTeta * directorCos_ij_y - directorCos_ik_y); + f_ij[2] = forceMod3B_factor1_ij * directorCos_ij_z + + forceMod3B_factor2_ij * + (cosTeta * directorCos_ij_z - directorCos_ik_z); + + forceMod3B_factor1_ik = - exp3BDerived_ik * exp3B_ij * + potentia3B_factor; + forceMod3B_factor2_ik = forceMod3B_factor2 * invR_ik; + + f_ik[0] = forceMod3B_factor1_ik * directorCos_ik_x + + forceMod3B_factor2_ik * + (cosTeta * directorCos_ik_x - directorCos_ij_x); + f_ik[1] = forceMod3B_factor1_ik * directorCos_ik_y + + forceMod3B_factor2_ik * + (cosTeta * directorCos_ik_y - directorCos_ij_y); + f_ik[2] = forceMod3B_factor1_ik * directorCos_ik_z + + forceMod3B_factor2_ik * + (cosTeta * directorCos_ik_z - directorCos_ij_z); + + forceModCoord += (forceMod3B_factor2 * + (tauFunctionDerived - 0.5 * mu * cosTetaDiff)); + + f[j][0] += f_ij[0]; + f[j][1] += f_ij[1]; + f[j][2] += f_ij[2]; + + f[k][0] += f_ik[0]; + f[k][1] += f_ik[1]; + f[k][2] += f_ik[2]; + + f[i][0] -= f_ij[0] + f_ik[0]; + f[i][1] -= f_ij[1] + f_ik[1]; + f[i][2] -= f_ij[2] + f_ik[2]; + + // potential energy + + evdwl = (exp3B_ij * exp3B_ik * potentia3B_factor); + + if (evflag) ev_tally3(i,j,k,evdwl,0.0,f_ij,f_ik,dr_ij,dr_ik); + } + } + + // forces due to environment coordination f(Z) + + for (int idx = 0; idx < numForceCoordPairs; idx++) { + double dr_ij[3], f_ij[3]; + + preForceCoord_counter = idx * 5; + zeta_iDerivedInvR_ij=pre_thrForceCoord[preForceCoord_counter+0]; + dr_ij[0]=pre_thrForceCoord[preForceCoord_counter+1]; + dr_ij[1]=pre_thrForceCoord[preForceCoord_counter+2]; + dr_ij[2]=pre_thrForceCoord[preForceCoord_counter+3]; + j = static_cast (pre_thrForceCoord[preForceCoord_counter+4]); + + forceModCoord_ij = forceModCoord * zeta_iDerivedInvR_ij; + + f_ij[0] = forceModCoord_ij * dr_ij[0]; + f_ij[1] = forceModCoord_ij * dr_ij[1]; + f_ij[2] = forceModCoord_ij * dr_ij[2]; + + f[j][0] -= f_ij[0]; + f[j][1] -= f_ij[1]; + f[j][2] -= f_ij[2]; + + f[i][0] += f_ij[0]; + f[i][1] += f_ij[1]; + f[i][2] += f_ij[2]; + + // potential energy + + evdwl = 0.0; + if (EVFLAG) ev_tally_thr(this,i, j, nlocal, /* newton_pair */ 1, 0.0, 0.0, + forceModCoord_ij, dr_ij[0], dr_ij[1], dr_ij[2],tid); + } + } +} + +/* ---------------------------------------------------------------------- */ + +double PairEDIPOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairEDIP::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_edip_omp.h b/src/USER-OMP/pair_edip_omp.h new file mode 100644 index 0000000000..55c34db345 --- /dev/null +++ b/src/USER-OMP/pair_edip_omp.h @@ -0,0 +1,43 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(edip/omp,PairEDIPOMP) + +#else + +#ifndef LMP_PAIR_EDIP_OMP_H +#define LMP_PAIR_EDIP_OMP_H + +#include "pair_edip.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairEDIPOMP : public PairEDIP, public ThrOMP { + + public: + PairEDIPOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_eim_omp.cpp b/src/USER-OMP/pair_eim_omp.cpp new file mode 100644 index 0000000000..d31ad20120 --- /dev/null +++ b/src/USER-OMP/pair_eim_omp.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 + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "string.h" + +#include "pair_eim_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "memory.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairEIMOMP::PairEIMOMP(LAMMPS *lmp) : + PairEIM(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairEIMOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + // grow energy and fp arrays if necessary + // need to be atom->nmax in length + + if (atom->nmax > nmax) { + memory->destroy(rho); + memory->destroy(fp); + nmax = atom->nmax; + memory->create(rho,nthreads*nmax,"pair:rho"); + memory->create(fp,nthreads*nmax,"pair:fp"); + } + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, *rho_t, *fp_t; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + if (force->newton_pair) { + rho_t = rho + tid*nall; + fp_t = fp + tid*nall; + } else { + rho_t = rho + tid*atom->nlocal; + fp_t = fp + tid*atom->nlocal; + } + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, rho_t, fp_t, ifrom, ito, tid); + else eval<1,1,0>(f, rho_t, fp_t, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, rho_t, fp_t, ifrom, ito, tid); + else eval<1,0,0>(f, rho_t, fp_t, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, rho_t, fp_t, ifrom, ito, tid); + else eval<0,0,0>(f, rho_t, fp_t, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairEIMOMP::eval(double **f, double *rho_t, double *fp_t, + int iifrom, int iito, int tid) +{ + int i,j,ii,jj,m,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r,p,rhoip,rhojp,phip,phi,coul,coulp,recip,psip; + double *coeff; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // zero out density and fp + + if (NEWTON_PAIR) { + memset(rho_t, 0, nall*sizeof(double)); + memset(fp_t, 0, nall*sizeof(double)); + } else { + memset(rho_t, 0, nlocal*sizeof(double)); + memset(fp_t, 0, nlocal*sizeof(double)); + } + + // rho = density at each atom + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = type[j]; + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < cutforcesq[itype][jtype]) { + p = sqrt(rsq)*rdr + 1.0; + m = static_cast (p); + m = MIN(m,nr-1); + p -= m; + p = MIN(p,1.0); + coeff = Fij_spline[type2Fij[itype][jtype]][m]; + rho_t[i] += ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + if (NEWTON_PAIR || j < nlocal) { + coeff = Fij_spline[type2Fij[jtype][itype]][m]; + rho_t[j] += ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + } + } + } + } + + // wait until all threads are done with computation + sync_threads(); + + // communicate and sum densities + if (NEWTON_PAIR) { + // reduce per thread density + data_reduce_thr(&(rho[0]), nall, comm->nthreads, 1, tid); + + // wait until reduction is complete + sync_threads(); + +#if defined(_OPENMP) +#pragma omp master +#endif + { + rhofp = 1; + comm->reverse_comm_pair(this); + } + + } else { + data_reduce_thr(&(rho[0]), nlocal, comm->nthreads, 1, tid); + + // wait until reduction is complete + sync_threads(); + } + +#if defined(_OPENMP) +#pragma omp master +#endif + { + rhofp = 1; + comm->forward_comm_pair(this); + } + + // wait until master is finished communicating + sync_threads(); + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = type[j]; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < cutforcesq[itype][jtype]) { + p = sqrt(rsq)*rdr + 1.0; + m = static_cast (p); + m = MIN(m,nr-1); + p -= m; + p = MIN(p,1.0); + coeff = Gij_spline[type2Gij[itype][jtype]][m]; + fp_t[i] += rho[j]*(((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]); + if (NEWTON_PAIR || j < nlocal) { + fp_t[j] += rho[i]*(((coeff[3]*p + coeff[4])*p + coeff[5])*p + + coeff[6]); + } + } + } + } + + // wait until all threads are done with computation + sync_threads(); + + // communicate and sum modified densities + if (NEWTON_PAIR) { + // reduce per thread density + data_reduce_thr(&(fp[0]), nall, comm->nthreads, 1, tid); + + // wait until reduction is complete + sync_threads(); + +#if defined(_OPENMP) +#pragma omp master +#endif + { + rhofp = 2; + comm->reverse_comm_pair(this); + } + + } else { + data_reduce_thr(&(fp[0]), nlocal, comm->nthreads, 1, tid); + + // wait until reduction is complete + sync_threads(); + } + +#if defined(_OPENMP) +#pragma omp master +#endif + { + rhofp = 2; + comm->forward_comm_pair(this); + } + + // wait until master is finished communicating + sync_threads(); + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + itype = type[i]; + if (EFLAG) { + phi = 0.5*rho[i]*fp[i]; + if (eflag_global) eng_vdwl_thr[tid] += phi; + if (eflag_atom) eatom_thr[tid][i] += phi; + } + } + + // compute forces on each atom + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + fxtmp = fytmp = fztmp = 0.0; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = type[j]; + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < cutforcesq[itype][jtype]) { + r = sqrt(rsq); + p = r*rdr + 1.0; + m = static_cast (p); + m = MIN(m,nr-1); + p -= m; + p = MIN(p,1.0); + + // rhoip = derivative of (density at atom j due to atom i) + // rhojp = derivative of (density at atom i due to atom j) + // phi = pair potential energy + // phip = phi' + + coeff = Fij_spline[type2Fij[jtype][itype]][m]; + rhoip = (coeff[0]*p + coeff[1])*p + coeff[2]; + coeff = Fij_spline[type2Fij[itype][jtype]][m]; + rhojp = (coeff[0]*p + coeff[1])*p + coeff[2]; + coeff = phiij_spline[type2phiij[itype][jtype]][m]; + phip = (coeff[0]*p + coeff[1])*p + coeff[2]; + phi = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + coeff = Gij_spline[type2Gij[itype][jtype]][m]; + coul = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; + coulp = (coeff[0]*p + coeff[1])*p + coeff[2]; + psip = phip + (rho[i]*rho[j]-q0[itype]*q0[jtype])*coulp + + fp[i]*rhojp + fp[j]*rhoip; + recip = 1.0/r; + fpair = -psip*recip; + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) evdwl = phi-q0[itype]*q0[jtype]*coul; + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairEIMOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairEIM::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_eim_omp.h b/src/USER-OMP/pair_eim_omp.h new file mode 100644 index 0000000000..3693492e09 --- /dev/null +++ b/src/USER-OMP/pair_eim_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(eim/omp,PairEIMOMP) + +#else + +#ifndef LMP_PAIR_EIM_OMP_H +#define LMP_PAIR_EIM_OMP_H + +#include "pair_eim.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairEIMOMP : public PairEIM, public ThrOMP { + + public: + PairEIMOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double *rho_t, double *fp_t, int iifrom, int iito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_gauss_omp.cpp b/src/USER-OMP/pair_gauss_omp.cpp new file mode 100644 index 0000000000..e8b255d0b7 --- /dev/null +++ b/src/USER-OMP/pair_gauss_omp.cpp @@ -0,0 +1,170 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_gauss_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#define EPSILON 1.0e-10 +/* ---------------------------------------------------------------------- */ + +PairGaussOMP::PairGaussOMP(LAMMPS *lmp) : + PairGauss(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairGaussOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairGaussOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double r,rsq,r2inv,forcelj,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + int occ = 0; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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]; + + // define a Gaussian well to be occupied if + // the site it interacts with is within the force maximum + + if (EFLAG) + if (eflag_global && rsq < 0.5/b[itype][jtype]) occ++; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0/rsq; + r = sqrt(rsq); + forcelj = - 2.0*a[itype][jtype]*b[itype][jtype] * rsq * + exp(-b[itype][jtype]*rsq); + fpair = factor_lj*forcelj*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = -(a[itype][jtype]*exp(-b[itype][jtype]*rsq) - + offset[itype][jtype]); + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } + if (eflag_global) pvector[0] = occ; +} + +/* ---------------------------------------------------------------------- */ + +double PairGaussOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairGauss::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_gauss_omp.h b/src/USER-OMP/pair_gauss_omp.h new file mode 100644 index 0000000000..7f8fc9a85b --- /dev/null +++ b/src/USER-OMP/pair_gauss_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(gauss/omp,PairGaussOMP) + +#else + +#ifndef LMP_PAIR_GAUSS_OMP_H +#define LMP_PAIR_GAUSS_OMP_H + +#include "pair_gauss.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairGaussOMP : public PairGauss, public ThrOMP { + + public: + PairGaussOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_gayberne_omp.cpp b/src/USER-OMP/pair_gayberne_omp.cpp new file mode 100644 index 0000000000..ff115e8ef7 --- /dev/null +++ b/src/USER-OMP/pair_gayberne_omp.cpp @@ -0,0 +1,227 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_gayberne_omp.h" +#include "math_extra.h" +#include "atom.h" +#include "comm.h" +#include "atom_vec_ellipsoid.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairGayBerneOMP::PairGayBerneOMP(LAMMPS *lmp) : + PairGayBerne(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairGayBerneOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, **torque; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + torque = atom->torque + tid*nall; + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, torque, ifrom, ito, tid); + else eval<1,1,0>(f, torque, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, torque, ifrom, ito, tid); + else eval<1,0,0>(f, torque, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, torque, ifrom, ito, tid); + else eval<0,0,0>(f, torque, ifrom, ito, tid); + } + + // reduce per thread forces and torques into global arrays. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + data_reduce_thr(&(atom->torque[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairGayBerneOMP::eval(double **f, double **tor, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double evdwl,one_eng,rsq,r2inv,r6inv,forcelj,factor_lj; + double fforce[3],ttor[3],rtor[3],r12[3]; + double a1[3][3],b1[3][3],g1[3][3],a2[3][3],b2[3][3],g2[3][3],temp[3][3]; + int *ilist,*jlist,*numneigh,**firstneigh; + double *iquat,*jquat; + + double **x = atom->x; + int *ellipsoid = atom->ellipsoid; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + + AtomVecEllipsoid::Bonus *bonus = avec->bonus; + + double fxtmp,fytmp,fztmp,t1tmp,t2tmp,t3tmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + itype = type[i]; + + if (form[itype][itype] == ELLIPSE_ELLIPSE) { + iquat = bonus[ellipsoid[i]].quat; + MathExtra::quat_to_mat_trans(iquat,a1); + MathExtra::diag_times3(well[itype],a1,temp); + MathExtra::transpose_times3(a1,temp,b1); + MathExtra::diag_times3(shape2[itype],a1,temp); + MathExtra::transpose_times3(a1,temp,g1); + } + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + // r12 = center to center vector + + r12[0] = x[j][0]-x[i][0]; + r12[1] = x[j][1]-x[i][1]; + r12[2] = x[j][2]-x[i][2]; + rsq = MathExtra::dot3(r12,r12); + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + + switch (form[itype][jtype]) { + case SPHERE_SPHERE: + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + forcelj *= -r2inv; + if (EFLAG) + one_eng = r6inv*(r6inv*lj3[itype][jtype]-lj4[itype][jtype]) - + offset[itype][jtype]; + fforce[0] = r12[0]*forcelj; + fforce[1] = r12[1]*forcelj; + fforce[2] = r12[2]*forcelj; + ttor[0] = ttor[1] = ttor[2] = 0.0; + rtor[0] = rtor[1] = rtor[2] = 0.0; + break; + + case SPHERE_ELLIPSE: + jquat = bonus[ellipsoid[j]].quat; + MathExtra::quat_to_mat_trans(jquat,a2); + MathExtra::diag_times3(well[jtype],a2,temp); + MathExtra::transpose_times3(a2,temp,b2); + MathExtra::diag_times3(shape2[jtype],a2,temp); + MathExtra::transpose_times3(a2,temp,g2); + one_eng = gayberne_lj(j,i,a2,b2,g2,r12,rsq,fforce,rtor); + ttor[0] = ttor[1] = ttor[2] = 0.0; + break; + + case ELLIPSE_SPHERE: + one_eng = gayberne_lj(i,j,a1,b1,g1,r12,rsq,fforce,ttor); + rtor[0] = rtor[1] = rtor[2] = 0.0; + break; + + default: + jquat = bonus[ellipsoid[j]].quat; + MathExtra::quat_to_mat_trans(jquat,a2); + MathExtra::diag_times3(well[jtype],a2,temp); + MathExtra::transpose_times3(a2,temp,b2); + MathExtra::diag_times3(shape2[jtype],a2,temp); + MathExtra::transpose_times3(a2,temp,g2); + one_eng = gayberne_analytic(i,j,a1,a2,b1,b2,g1,g2,r12,rsq, + fforce,ttor,rtor); + break; + } + + fforce[0] *= factor_lj; + fforce[1] *= factor_lj; + fforce[2] *= factor_lj; + ttor[0] *= factor_lj; + ttor[1] *= factor_lj; + ttor[2] *= factor_lj; + + f[i][0] += fforce[0]; + f[i][1] += fforce[1]; + f[i][2] += fforce[2]; + tor[i][0] += ttor[0]; + tor[i][1] += ttor[1]; + tor[i][2] += ttor[2]; + + if (NEWTON_PAIR || j < nlocal) { + rtor[0] *= factor_lj; + rtor[1] *= factor_lj; + rtor[2] *= factor_lj; + f[j][0] -= fforce[0]; + f[j][1] -= fforce[1]; + f[j][2] -= fforce[2]; + tor[j][0] += rtor[0]; + tor[j][1] += rtor[1]; + tor[j][2] += rtor[2]; + } + + if (EFLAG) evdwl = factor_lj*one_eng; + + if (EVFLAG) ev_tally_xyz_thr(this,i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fforce[0],fforce[1],fforce[2], + -r12[0],-r12[1],-r12[2],tid); + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +double PairGayBerneOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairGayBerne::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_gayberne_omp.h b/src/USER-OMP/pair_gayberne_omp.h new file mode 100644 index 0000000000..737b4ec67d --- /dev/null +++ b/src/USER-OMP/pair_gayberne_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(gayberne/omp,PairGayBerneOMP) + +#else + +#ifndef LMP_PAIR_GAYBERNE_OMP_H +#define LMP_PAIR_GAYBERNE_OMP_H + +#include "pair_gayberne.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairGayBerneOMP : public PairGayBerne, public ThrOMP { + + public: + PairGayBerneOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double **torque, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_gran_hertz_history_omp.cpp b/src/USER-OMP/pair_gran_hertz_history_omp.cpp new file mode 100644 index 0000000000..1866833afe --- /dev/null +++ b/src/USER-OMP/pair_gran_hertz_history_omp.cpp @@ -0,0 +1,298 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_gran_hertz_history_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "update.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairGranHertzHistoryOMP::PairGranHertzHistoryOMP(LAMMPS *lmp) : + PairGranHertzHistory(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairGranHertzHistoryOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int shearupdate = (update->ntimestep > laststep) ? 1 : 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, **torque; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + torque = atom->torque + tid*nall; + + if (evflag) + if (shearupdate) eval<1,1>(f, torque, ifrom, ito, tid); + else eval<1,0>(f, torque, ifrom, ito, tid); + else + if (shearupdate) eval<0,1>(f, torque, ifrom, ito, tid); + else eval<0,0>(f, torque, ifrom, ito, tid); + + // reduce per thread forces and torque into global arrays. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + data_reduce_thr(&(atom->torque[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + + laststep = update->ntimestep; +} + +template +void PairGranHertzHistoryOMP::eval(double **f, double **torque, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,fx,fy,fz; + double radi,radj,radsum,rsq,r,rinv,rsqinv; + double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3; + double wr1,wr2,wr3; + double vtr1,vtr2,vtr3,vrel; + double meff,damp,ccel,tor1,tor2,tor3; + double fn,fs,fs1,fs2,fs3; + double shrmag,rsht,polyhertz; + int *ilist,*jlist,*numneigh,**firstneigh; + int *touch,**firsttouch; + double *shear,*allshear,**firstshear; + + double **x = atom->x; + double **v = atom->v; + double **omega = atom->omega; + double *radius = atom->radius; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double fxtmp,fytmp,fztmp; + double t1tmp,t2tmp,t3tmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + firsttouch = list->listgranhistory->firstneigh; + firstshear = list->listgranhistory->firstdouble; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + radi = radius[i]; + touch = firsttouch[i]; + allshear = firstshear[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=t1tmp=t2tmp=t3tmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + radj = radius[j]; + radsum = radi + radj; + + if (rsq >= radsum*radsum) { + + // unset non-touching neighbors + + touch[jj] = 0; + shear = &allshear[3*jj]; + shear[0] = 0.0; + shear[1] = 0.0; + shear[2] = 0.0; + + } else { + r = sqrt(rsq); + rinv = 1.0/r; + rsqinv = 1.0/rsq; + + // relative translational velocity + + vr1 = v[i][0] - v[j][0]; + vr2 = v[i][1] - v[j][1]; + vr3 = v[i][2] - v[j][2]; + + // normal component + + vnnr = vr1*delx + vr2*dely + vr3*delz; + vn1 = delx*vnnr * rsqinv; + vn2 = dely*vnnr * rsqinv; + vn3 = delz*vnnr * rsqinv; + + // tangential component + + vt1 = vr1 - vn1; + vt2 = vr2 - vn2; + vt3 = vr3 - vn3; + + // relative rotational velocity + + wr1 = (radi*omega[i][0] + radj*omega[j][0]) * rinv; + wr2 = (radi*omega[i][1] + radj*omega[j][1]) * rinv; + wr3 = (radi*omega[i][2] + radj*omega[j][2]) * rinv; + + // normal force = Hertzian contact + normal velocity damping + + if (rmass) { + meff = rmass[i]*rmass[j] / (rmass[i]+rmass[j]); + if (mask[i] & freeze_group_bit) meff = rmass[j]; + if (mask[j] & freeze_group_bit) meff = rmass[i]; + } else { + itype = type[i]; + jtype = type[j]; + meff = mass[itype]*mass[jtype] / (mass[itype]+mass[jtype]); + if (mask[i] & freeze_group_bit) meff = mass[jtype]; + if (mask[j] & freeze_group_bit) meff = mass[itype]; + } + + damp = meff*gamman*vnnr*rsqinv; + ccel = kn*(radsum-r)*rinv - damp; + polyhertz = sqrt((radsum-r)*radi*radj / radsum); + ccel *= polyhertz; + + // relative velocities + + vtr1 = vt1 - (delz*wr2-dely*wr3); + vtr2 = vt2 - (delx*wr3-delz*wr1); + vtr3 = vt3 - (dely*wr1-delx*wr2); + vrel = vtr1*vtr1 + vtr2*vtr2 + vtr3*vtr3; + vrel = sqrt(vrel); + + // shear history effects + + touch[jj] = 1; + shear = &allshear[3*jj]; + + if (SHEARUPDATE) { + shear[0] += vtr1*dt; + shear[1] += vtr2*dt; + shear[2] += vtr3*dt; + } + shrmag = sqrt(shear[0]*shear[0] + shear[1]*shear[1] + + shear[2]*shear[2]); + + // rotate shear displacements + + rsht = shear[0]*delx + shear[1]*dely + shear[2]*delz; + rsht *= rsqinv; + if (SHEARUPDATE) { + shear[0] -= rsht*delx; + shear[1] -= rsht*dely; + shear[2] -= rsht*delz; + } + + // tangential forces = shear + tangential velocity damping + + fs1 = -polyhertz * (kt*shear[0] + meff*gammat*vtr1); + fs2 = -polyhertz * (kt*shear[1] + meff*gammat*vtr2); + fs3 = -polyhertz * (kt*shear[2] + meff*gammat*vtr3); + + // rescale frictional displacements and forces if needed + + fs = sqrt(fs1*fs1 + fs2*fs2 + fs3*fs3); + fn = xmu * fabs(ccel*r); + + if (fs > fn) { + if (shrmag != 0.0) { + const double fnfs = fn/fs; + const double mgkt = meff*gammat/kt; + shear[0] = fnfs * (shear[0] + mgkt*vtr1) - mgkt*vtr1; + shear[1] = fnfs * (shear[1] + mgkt*vtr2) - mgkt*vtr2; + shear[2] = fnfs * (shear[2] + mgkt*vtr3) - mgkt*vtr3; + fs1 *= fnfs; + fs2 *= fnfs; + fs3 *= fnfs; + } else fs1 = fs2 = fs3 = 0.0; + } + + // forces & torques + + fx = delx*ccel + fs1; + fy = dely*ccel + fs2; + fz = delz*ccel + fs3; + fxtmp += fx; + fytmp += fy; + fztmp += fz; + + tor1 = rinv * (dely*fs3 - delz*fs2); + tor2 = rinv * (delz*fs1 - delx*fs3); + tor3 = rinv * (delx*fs2 - dely*fs1); + t1tmp -= radi*tor1; + t2tmp -= radi*tor2; + t3tmp -= radi*tor3; + + if (j < nlocal) { + f[j][0] -= fx; + f[j][1] -= fy; + f[j][2] -= fz; + torque[j][0] -= radj*tor1; + torque[j][1] -= radj*tor2; + torque[j][2] -= radj*tor3; + } + + if (EVFLAG) ev_tally_xyz_thr(this,i,j,nlocal,/* newton_pair */ 0, + 0.0,0.0,fx,fy,fz,delx,dely,delz,tid); + + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + torque[i][0] += t1tmp; + torque[i][1] += t2tmp; + torque[i][2] += t3tmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairGranHertzHistoryOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairGranHertzHistory::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_gran_hertz_history_omp.h b/src/USER-OMP/pair_gran_hertz_history_omp.h new file mode 100644 index 0000000000..66d7bc0fa5 --- /dev/null +++ b/src/USER-OMP/pair_gran_hertz_history_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(gran/hertz/history/omp,PairGranHertzHistoryOMP) + +#else + +#ifndef LMP_PAIR_GRAN_HERTZ_HISTORY_OMP_H +#define LMP_PAIR_GRAN_HERTZ_HISTORY_OMP_H + +#include "pair_gran_hertz_history.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairGranHertzHistoryOMP : public PairGranHertzHistory, public ThrOMP { + + public: + PairGranHertzHistoryOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double **torque, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_gran_hooke_history_omp.cpp b/src/USER-OMP/pair_gran_hooke_history_omp.cpp new file mode 100644 index 0000000000..ad0537b516 --- /dev/null +++ b/src/USER-OMP/pair_gran_hooke_history_omp.cpp @@ -0,0 +1,301 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_gran_hooke_history_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "update.h" + +#include "string.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairGranHookeHistoryOMP::PairGranHookeHistoryOMP(LAMMPS *lmp) : + PairGranHookeHistory(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; + // trigger use of OpenMP version of FixShearHistory + suffix = new char[4]; + memcpy(suffix,"omp",4); +} + +/* ---------------------------------------------------------------------- */ + +void PairGranHookeHistoryOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int shearupdate = (update->ntimestep > laststep) ? 1 : 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, **torque; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + torque = atom->torque + tid*nall; + + if (evflag) + if (shearupdate) eval<1,1>(f, torque, ifrom, ito, tid); + else eval<1,0>(f, torque, ifrom, ito, tid); + else + if (shearupdate) eval<0,1>(f, torque, ifrom, ito, tid); + else eval<0,0>(f, torque, ifrom, ito, tid); + + // reduce per thread forces and torque into global arrays. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + data_reduce_thr(&(atom->torque[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + + laststep = update->ntimestep; +} + +template +void PairGranHookeHistoryOMP::eval(double **f, double **torque, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,fx,fy,fz; + double radi,radj,radsum,rsq,r,rinv,rsqinv; + double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3; + double wr1,wr2,wr3; + double vtr1,vtr2,vtr3,vrel; + double meff,damp,ccel,tor1,tor2,tor3; + double fn,fs,fs1,fs2,fs3; + double shrmag,rsht; + int *ilist,*jlist,*numneigh,**firstneigh; + int *touch,**firsttouch; + double *shear,*allshear,**firstshear; + + double **x = atom->x; + double **v = atom->v; + double **omega = atom->omega; + double *radius = atom->radius; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double fxtmp,fytmp,fztmp; + double t1tmp,t2tmp,t3tmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + firsttouch = listgranhistory->firstneigh; + firstshear = listgranhistory->firstdouble; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + radi = radius[i]; + touch = firsttouch[i]; + allshear = firstshear[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=t1tmp=t2tmp=t3tmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + radj = radius[j]; + radsum = radi + radj; + + if (rsq >= radsum*radsum) { + + // unset non-touching neighbors + + touch[jj] = 0; + shear = &allshear[3*jj]; + shear[0] = 0.0; + shear[1] = 0.0; + shear[2] = 0.0; + + } else { + r = sqrt(rsq); + rinv = 1.0/r; + rsqinv = 1.0/rsq; + + // relative translational velocity + + vr1 = v[i][0] - v[j][0]; + vr2 = v[i][1] - v[j][1]; + vr3 = v[i][2] - v[j][2]; + + // normal component + + vnnr = vr1*delx + vr2*dely + vr3*delz; + vn1 = delx*vnnr * rsqinv; + vn2 = dely*vnnr * rsqinv; + vn3 = delz*vnnr * rsqinv; + + // tangential component + + vt1 = vr1 - vn1; + vt2 = vr2 - vn2; + vt3 = vr3 - vn3; + + // relative rotational velocity + + wr1 = (radi*omega[i][0] + radj*omega[j][0]) * rinv; + wr2 = (radi*omega[i][1] + radj*omega[j][1]) * rinv; + wr3 = (radi*omega[i][2] + radj*omega[j][2]) * rinv; + + // normal forces = Hookian contact + normal velocity damping + + if (rmass) { + meff = rmass[i]*rmass[j] / (rmass[i]+rmass[j]); + if (mask[i] & freeze_group_bit) meff = rmass[j]; + if (mask[j] & freeze_group_bit) meff = rmass[i]; + } else { + itype = type[i]; + jtype = type[j]; + meff = mass[itype]*mass[jtype] / (mass[itype]+mass[jtype]); + if (mask[i] & freeze_group_bit) meff = mass[jtype]; + if (mask[j] & freeze_group_bit) meff = mass[itype]; + } + + damp = meff*gamman*vnnr*rsqinv; + ccel = kn*(radsum-r)*rinv - damp; + + // relative velocities + + vtr1 = vt1 - (delz*wr2-dely*wr3); + vtr2 = vt2 - (delx*wr3-delz*wr1); + vtr3 = vt3 - (dely*wr1-delx*wr2); + vrel = vtr1*vtr1 + vtr2*vtr2 + vtr3*vtr3; + vrel = sqrt(vrel); + + // shear history effects + + touch[jj] = 1; + shear = &allshear[3*jj]; + + if (SHEARUPDATE) { + shear[0] += vtr1*dt; + shear[1] += vtr2*dt; + shear[2] += vtr3*dt; + } + shrmag = sqrt(shear[0]*shear[0] + shear[1]*shear[1] + + shear[2]*shear[2]); + + // rotate shear displacements + + rsht = shear[0]*delx + shear[1]*dely + shear[2]*delz; + rsht *= rsqinv; + if (SHEARUPDATE) { + shear[0] -= rsht*delx; + shear[1] -= rsht*dely; + shear[2] -= rsht*delz; + } + + // tangential forces = shear + tangential velocity damping + + fs1 = - (kt*shear[0] + meff*gammat*vtr1); + fs2 = - (kt*shear[1] + meff*gammat*vtr2); + fs3 = - (kt*shear[2] + meff*gammat*vtr3); + + // rescale frictional displacements and forces if needed + + fs = sqrt(fs1*fs1 + fs2*fs2 + fs3*fs3); + fn = xmu * fabs(ccel*r); + + if (fs > fn) { + if (shrmag != 0.0) { + const double fnfs = fn/fs; + const double mgkt = meff*gammat/kt; + shear[0] = fnfs * (shear[0] + mgkt*vtr1) - mgkt*vtr1; + shear[1] = fnfs * (shear[1] + mgkt*vtr2) - mgkt*vtr2; + shear[2] = fnfs * (shear[2] + mgkt*vtr3) - mgkt*vtr3; + fs1 *= fnfs; + fs2 *= fnfs; + fs3 *= fnfs; + } else fs1 = fs2 = fs3 = 0.0; + } + + // forces & torques + + fx = delx*ccel + fs1; + fy = dely*ccel + fs2; + fz = delz*ccel + fs3; + fxtmp += fx; + fytmp += fy; + fztmp += fz; + + tor1 = rinv * (dely*fs3 - delz*fs2); + tor2 = rinv * (delz*fs1 - delx*fs3); + tor3 = rinv * (delx*fs2 - dely*fs1); + t1tmp -= radi*tor1; + t2tmp -= radi*tor2; + t3tmp -= radi*tor3; + + if (j < nlocal) { + f[j][0] -= fx; + f[j][1] -= fy; + f[j][2] -= fz; + torque[j][0] -= radj*tor1; + torque[j][1] -= radj*tor2; + torque[j][2] -= radj*tor3; + } + + if (EVFLAG) ev_tally_xyz_thr(this,i,j,nlocal,/* newton_pair */ 0, + 0.0,0.0,fx,fy,fz,delx,dely,delz,tid); + + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + torque[i][0] += t1tmp; + torque[i][1] += t2tmp; + torque[i][2] += t3tmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairGranHookeHistoryOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairGranHookeHistory::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_gran_hooke_history_omp.h b/src/USER-OMP/pair_gran_hooke_history_omp.h new file mode 100644 index 0000000000..33325025fc --- /dev/null +++ b/src/USER-OMP/pair_gran_hooke_history_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(gran/hooke/history/omp,PairGranHookeHistoryOMP) + +#else + +#ifndef LMP_PAIR_GRAN_HOOKE_HISTORY_OMP_H +#define LMP_PAIR_GRAN_HOOKE_HISTORY_OMP_H + +#include "pair_gran_hooke_history.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairGranHookeHistoryOMP : public PairGranHookeHistory, public ThrOMP { + + public: + PairGranHookeHistoryOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double **torque, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_gran_hooke_omp.cpp b/src/USER-OMP/pair_gran_hooke_omp.cpp new file mode 100644 index 0000000000..d6991fa453 --- /dev/null +++ b/src/USER-OMP/pair_gran_hooke_omp.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 + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_gran_hooke_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairGranHookeOMP::PairGranHookeOMP(LAMMPS *lmp) : + PairGranHooke(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairGranHookeOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, **torque; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + torque = atom->torque + tid*nall; + + if (evflag) + if (force->newton_pair) eval<1,1>(f, torque, ifrom, ito, tid); + else eval<1,0>(f, torque, ifrom, ito, tid); + else + if (force->newton_pair) eval<0,1>(f, torque, ifrom, ito, tid); + else eval<0,0>(f, torque, ifrom, ito, tid); + + // reduce per thread forces and torque into global arrays. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + data_reduce_thr(&(atom->torque[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); +} + +template +void PairGranHookeOMP::eval(double **f, double **torque, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,fx,fy,fz; + double radi,radj,radsum,rsq,r,rinv,rsqinv; + double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3; + double wr1,wr2,wr3; + double vtr1,vtr2,vtr3,vrel; + double meff,damp,ccel,tor1,tor2,tor3; + double fn,fs,ft,fs1,fs2,fs3; + int *ilist,*jlist,*numneigh,**firstneigh; + + double **x = atom->x; + double **v = atom->v; + double **omega = atom->omega; + double *radius = atom->radius; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double fxtmp,fytmp,fztmp; + double t1tmp,t2tmp,t3tmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + radi = radius[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=t1tmp=t2tmp=t3tmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + radj = radius[j]; + radsum = radi + radj; + + if (rsq < radsum*radsum) { + r = sqrt(rsq); + rinv = 1.0/r; + rsqinv = 1.0/rsq; + + // relative translational velocity + + vr1 = v[i][0] - v[j][0]; + vr2 = v[i][1] - v[j][1]; + vr3 = v[i][2] - v[j][2]; + + // normal component + + vnnr = vr1*delx + vr2*dely + vr3*delz; + vn1 = delx*vnnr * rsqinv; + vn2 = dely*vnnr * rsqinv; + vn3 = delz*vnnr * rsqinv; + + // tangential component + + vt1 = vr1 - vn1; + vt2 = vr2 - vn2; + vt3 = vr3 - vn3; + + // relative rotational velocity + + wr1 = (radi*omega[i][0] + radj*omega[j][0]) * rinv; + wr2 = (radi*omega[i][1] + radj*omega[j][1]) * rinv; + wr3 = (radi*omega[i][2] + radj*omega[j][2]) * rinv; + + // normal forces = Hookian contact + normal velocity damping + + if (rmass) { + meff = rmass[i]*rmass[j] / (rmass[i]+rmass[j]); + if (mask[i] & freeze_group_bit) meff = rmass[j]; + if (mask[j] & freeze_group_bit) meff = rmass[i]; + } else { + itype = type[i]; + jtype = type[j]; + meff = mass[itype]*mass[jtype] / (mass[itype]+mass[jtype]); + if (mask[i] & freeze_group_bit) meff = mass[jtype]; + if (mask[j] & freeze_group_bit) meff = mass[itype]; + } + + damp = meff*gamman*vnnr*rsqinv; + ccel = kn*(radsum-r)*rinv - damp; + + // relative velocities + + vtr1 = vt1 - (delz*wr2-dely*wr3); + vtr2 = vt2 - (delx*wr3-delz*wr1); + vtr3 = vt3 - (dely*wr1-delx*wr2); + vrel = vtr1*vtr1 + vtr2*vtr2 + vtr3*vtr3; + vrel = sqrt(vrel); + + // force normalization + + fn = xmu * fabs(ccel*r); + fs = meff*gammat*vrel; + if (vrel != 0.0) ft = MIN(fn,fs) / vrel; + else ft = 0.0; + + // tangential force due to tangential velocity damping + + fs1 = -ft*vtr1; + fs2 = -ft*vtr2; + fs3 = -ft*vtr3; + + // forces & torques + + fx = delx*ccel + fs1; + fy = dely*ccel + fs2; + fz = delz*ccel + fs3; + fxtmp += fx; + fytmp += fy; + fztmp += fz; + + tor1 = rinv * (dely*fs3 - delz*fs2); + tor2 = rinv * (delz*fs1 - delx*fs3); + tor3 = rinv * (delx*fs2 - dely*fs1); + t1tmp -= radi*tor1; + t2tmp -= radi*tor2; + t3tmp -= radi*tor3; + + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= fx; + f[j][1] -= fy; + f[j][2] -= fz; + torque[j][0] -= radj*tor1; + torque[j][1] -= radj*tor2; + torque[j][2] -= radj*tor3; + } + + if (EVFLAG) ev_tally_xyz_thr(this,i,j,nlocal,NEWTON_PAIR, + 0.0,0.0,fx,fy,fz,delx,dely,delz,tid); + + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + torque[i][0] += t1tmp; + torque[i][1] += t2tmp; + torque[i][2] += t3tmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairGranHookeOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairGranHooke::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_gran_hooke_omp.h b/src/USER-OMP/pair_gran_hooke_omp.h new file mode 100644 index 0000000000..f2b093778c --- /dev/null +++ b/src/USER-OMP/pair_gran_hooke_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(gran/hooke/omp,PairGranHookeOMP) + +#else + +#ifndef LMP_PAIR_GRAN_HOOKE_OMP_H +#define LMP_PAIR_GRAN_HOOKE_OMP_H + +#include "pair_gran_hooke.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairGranHookeOMP : public PairGranHooke, public ThrOMP { + + public: + PairGranHookeOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double **torque, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp b/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp new file mode 100644 index 0000000000..012fd596b3 --- /dev/null +++ b/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp @@ -0,0 +1,299 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_hbond_dreiding_lj_omp.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define SMALL 0.001 + +/* ---------------------------------------------------------------------- */ + +PairHbondDreidingLJOMP::PairHbondDreidingLJOMP(LAMMPS *lmp) : + PairHbondDreidingLJ(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; + hbcount_thr = hbeng_thr = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairHbondDreidingLJOMP::~PairHbondDreidingLJOMP() +{ + respa_enable = 0; + if (hbcount_thr) { + delete[] hbcount_thr; + delete[] hbeng_thr; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairHbondDreidingLJOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + if (!hbcount_thr) { + hbcount_thr = new double[nthreads]; + hbeng_thr = new double[nthreads]; + } + + for (int i=0; i < nthreads; ++i) { + hbcount_thr[i] = 0.0; + hbeng_thr[i] = 0.0; + } + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); + + // reduce per thread hbond data + if (eflag_global) { + pvector[0] = 0.0; + pvector[1] = 0.0; + for (int i=0; i < nthreads; ++i) { + pvector[0] += hbcount_thr[i]; + pvector[1] += hbeng_thr[i]; + } + } +} + +template +void PairHbondDreidingLJOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,k,m,ii,jj,kk,jnum,knum,itype,jtype,ktype; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq,rsq1,rsq2,r1,r2; + double factor_hb,force_angle,force_kernel,evdwl,eng_lj; + double c,s,a,b,ac,a11,a12,a22,vx1,vx2,vy1,vy2,vz1,vz2; + double fi[3],fj[3],delr1[3],delr2[3]; + double r2inv,r10inv; + double switch1,switch2; + int *ilist,*jlist,*klist,*numneigh,**firstneigh; + Param *pm; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int **special = atom->special; + int **nspecial = atom->nspecial; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + + // ii = loop over donors + // jj = loop over acceptors + // kk = loop over hydrogens bonded to donor + + int hbcount = 0; + double hbeng = 0.0; + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + itype = type[i]; + if (!donor[itype]) continue; + + klist = special[i]; + knum = nspecial[i][0]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_hb = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + jtype = type[j]; + if (!acceptor[jtype]) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + for (kk = 0; kk < knum; kk++) { + k = atom->map(klist[kk]); + if (k < 0) continue; + ktype = type[k]; + m = type2param[itype][jtype][ktype]; + if (m < 0) continue; + pm = ¶ms[m]; + + if (rsq < pm->cut_outersq) { + delr1[0] = xtmp - x[k][0]; + delr1[1] = ytmp - x[k][1]; + delr1[2] = ztmp - x[k][2]; + domain->minimum_image(delr1); + rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2]; + r1 = sqrt(rsq1); + + delr2[0] = x[j][0] - x[k][0]; + delr2[1] = x[j][1] - x[k][1]; + delr2[2] = x[j][2] - x[k][2]; + domain->minimum_image(delr2); + rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2]; + r2 = sqrt(rsq2); + + // angle (cos and sin) + + c = delr1[0]*delr2[0] + delr1[1]*delr2[1] + delr1[2]*delr2[2]; + c /= r1*r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + ac = acos(c); + + if (ac > pm->cut_angle && ac < (2.0*MY_PI - pm->cut_angle)) { + s = sqrt(1.0 - c*c); + if (s < SMALL) s = SMALL; + + // LJ-specific kernel + + r2inv = 1.0/rsq; + r10inv = r2inv*r2inv*r2inv*r2inv*r2inv; + force_kernel = r10inv*(pm->lj1*r2inv - pm->lj2)*r2inv * + pow(c,pm->ap); + force_angle = pm->ap * r10inv*(pm->lj3*r2inv - pm->lj4) * + pow(c,pm->ap-1)*s; + + eng_lj = r10inv*(pm->lj3*r2inv - pm->lj4); + if (rsq > pm->cut_innersq) { + switch1 = (pm->cut_outersq-rsq) * (pm->cut_outersq-rsq) * + (pm->cut_outersq + 2.0*rsq - 3.0*pm->cut_innersq) / + pm->denom_vdw; + switch2 = 12.0*rsq * (pm->cut_outersq-rsq) * + (rsq-pm->cut_innersq) / pm->denom_vdw; + force_kernel = force_kernel*switch1 + eng_lj*switch2; + eng_lj *= switch1; + } + + if (EFLAG) { + evdwl = eng_lj * pow(c,pm->ap); + evdwl *= factor_hb; + } + + a = factor_hb*force_angle/s; + b = factor_hb*force_kernel; + + a11 = a*c / rsq1; + a12 = -a / (r1*r2); + a22 = a*c / rsq2; + + vx1 = a11*delr1[0] + a12*delr2[0]; + vx2 = a22*delr2[0] + a12*delr1[0]; + vy1 = a11*delr1[1] + a12*delr2[1]; + vy2 = a22*delr2[1] + a12*delr1[1]; + vz1 = a11*delr1[2] + a12*delr2[2]; + vz2 = a22*delr2[2] + a12*delr1[2]; + + fi[0] = vx1 + b*delx; + fi[1] = vy1 + b*dely; + fi[2] = vz1 + b*delz; + fj[0] = vx2 - b*delx; + fj[1] = vy2 - b*dely; + fj[2] = vz2 - b*delz; + + fxtmp += fi[0]; + fytmp += fi[1]; + fztmp += fi[2]; + + f[j][0] += fj[0]; + f[j][1] += fj[1]; + f[j][2] += fj[2]; + + f[k][0] -= vx1 + vx2; + f[k][1] -= vy1 + vy2; + f[k][2] -= vz1 + vz2; + + // KIJ instead of IJK b/c delr1/delr2 are both with respect to k + + if (EVFLAG) ev_tally3_thr(this,k,i,j,evdwl,0.0,fi,fj,delr1,delr2,tid); + if (EFLAG) { + hbcount++; + hbeng += evdwl; + } + } + } + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } + hbcount_thr[tid] = static_cast(hbcount); + hbeng_thr[tid] = hbeng; +} + +/* ---------------------------------------------------------------------- */ + +double PairHbondDreidingLJOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += comm->nthreads * 2 * sizeof(double); + bytes += PairHbondDreidingLJ::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_hbond_dreiding_lj_omp.h b/src/USER-OMP/pair_hbond_dreiding_lj_omp.h new file mode 100644 index 0000000000..1aef78490c --- /dev/null +++ b/src/USER-OMP/pair_hbond_dreiding_lj_omp.h @@ -0,0 +1,52 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(hbond/dreiding/lj/omp,PairHbondDreidingLJOMP) + +#else + +#ifndef LMP_PAIR_HBOND_DREIDING_LJ_OMP_H +#define LMP_PAIR_HBOND_DREIDING_LJ_OMP_H + +#include "pair_hbond_dreiding_lj.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairHbondDreidingLJOMP : public PairHbondDreidingLJ, public ThrOMP { + + public: + PairHbondDreidingLJOMP(class LAMMPS *); + virtual ~PairHbondDreidingLJOMP(); + + virtual void compute(int, int); + virtual double memory_usage(); + + protected: + double *hbcount_thr, *hbeng_thr; + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp b/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp new file mode 100644 index 0000000000..b6c966f8c7 --- /dev/null +++ b/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp @@ -0,0 +1,297 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_hbond_dreiding_morse_omp.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define SMALL 0.001 + +/* ---------------------------------------------------------------------- */ + +PairHbondDreidingMorseOMP::PairHbondDreidingMorseOMP(LAMMPS *lmp) : + PairHbondDreidingMorse(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; + hbcount_thr = hbeng_thr = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairHbondDreidingMorseOMP::~PairHbondDreidingMorseOMP() +{ + respa_enable = 0; + if (hbcount_thr) { + delete[] hbcount_thr; + delete[] hbeng_thr; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairHbondDreidingMorseOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + if (!hbcount_thr) { + hbcount_thr = new double[nthreads]; + hbeng_thr = new double[nthreads]; + } + + for (int i=0; i < nthreads; ++i) { + hbcount_thr[i] = 0.0; + hbeng_thr[i] = 0.0; + } + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); + + // reduce per thread hbond data + if (eflag_global) { + pvector[0] = 0.0; + pvector[1] = 0.0; + for (int i=0; i < nthreads; ++i) { + pvector[0] += hbcount_thr[i]; + pvector[1] += hbeng_thr[i]; + } + } +} + +template +void PairHbondDreidingMorseOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,k,m,ii,jj,kk,jnum,knum,itype,jtype,ktype; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq,rsq1,rsq2,r1,r2; + double factor_hb,force_angle,force_kernel,evdwl; + double c,s,a,b,ac,a11,a12,a22,vx1,vx2,vy1,vy2,vz1,vz2; + double fi[3],fj[3],delr1[3],delr2[3]; + double r,dr,dexp,eng_morse,switch1,switch2; + int *ilist,*jlist,*klist,*numneigh,**firstneigh; + Param *pm; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int **special = atom->special; + int **nspecial = atom->nspecial; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + + // ii = loop over donors + // jj = loop over acceptors + // kk = loop over hydrogens bonded to donor + + int hbcount = 0; + double hbeng = 0.0; + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + itype = type[i]; + if (!donor[itype]) continue; + + klist = special[i]; + knum = nspecial[i][0]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_hb = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + jtype = type[j]; + if (!acceptor[jtype]) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + for (kk = 0; kk < knum; kk++) { + k = atom->map(klist[kk]); + if (k < 0) continue; + ktype = type[k]; + m = type2param[itype][jtype][ktype]; + if (m < 0) continue; + pm = ¶ms[m]; + + if (rsq < pm->cut_outersq) { + delr1[0] = xtmp - x[k][0]; + delr1[1] = ytmp - x[k][1]; + delr1[2] = ztmp - x[k][2]; + domain->minimum_image(delr1); + rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2]; + r1 = sqrt(rsq1); + + delr2[0] = x[j][0] - x[k][0]; + delr2[1] = x[j][1] - x[k][1]; + delr2[2] = x[j][2] - x[k][2]; + domain->minimum_image(delr2); + rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2]; + r2 = sqrt(rsq2); + + // angle (cos and sin) + + c = delr1[0]*delr2[0] + delr1[1]*delr2[1] + delr1[2]*delr2[2]; + c /= r1*r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + ac = acos(c); + + if (ac > pm->cut_angle && ac < (2.0*MY_PI - pm->cut_angle)) { + s = sqrt(1.0 - c*c); + if (s < SMALL) s = SMALL; + + // Morse-specific kernel + + r = sqrt(rsq); + dr = r - pm->r0; + dexp = exp(-pm->alpha * dr); + force_kernel = pm->morse1*(dexp*dexp - dexp)/r * pow(c,pm->ap); + force_angle = pm->ap * eng_morse * pow(c,pm->ap-1)*s; + + eng_morse = pm->d0 * (dexp*dexp - 2.0*dexp); + if (rsq > pm->cut_innersq) { + switch1 = (pm->cut_outersq-rsq) * (pm->cut_outersq-rsq) * + (pm->cut_outersq + 2.0*rsq - 3.0*pm->cut_innersq) / + pm->denom_vdw; + switch2 = 12.0*rsq * (pm->cut_outersq-rsq) * + (rsq-pm->cut_innersq) / pm->denom_vdw; + force_kernel = force_kernel*switch1 + eng_morse*switch2; + eng_morse *= switch1; + } + + if (EFLAG) { + evdwl = eng_morse * pow(c,params[m].ap); + evdwl *= factor_hb; + } + + a = factor_hb*force_angle/s; + b = factor_hb*force_kernel; + + a11 = a*c / rsq1; + a12 = -a / (r1*r2); + a22 = a*c / rsq2; + + vx1 = a11*delr1[0] + a12*delr2[0]; + vx2 = a22*delr2[0] + a12*delr1[0]; + vy1 = a11*delr1[1] + a12*delr2[1]; + vy2 = a22*delr2[1] + a12*delr1[1]; + vz1 = a11*delr1[2] + a12*delr2[2]; + vz2 = a22*delr2[2] + a12*delr1[2]; + + fi[0] = vx1 + b*delx; + fi[1] = vy1 + b*dely; + fi[2] = vz1 + b*delz; + fj[0] = vx2 - b*delx; + fj[1] = vy2 - b*dely; + fj[2] = vz2 - b*delz; + + fxtmp += fi[0]; + fytmp += fi[1]; + fztmp += fi[2]; + + f[j][0] += fj[0]; + f[j][1] += fj[1]; + f[j][2] += fj[2]; + + f[k][0] -= vx1 + vx2; + f[k][1] -= vy1 + vy2; + f[k][2] -= vz1 + vz2; + + // KIJ instead of IJK b/c delr1/delr2 are both with respect to k + + if (EVFLAG) ev_tally3_thr(this,k,i,j,evdwl,0.0,fi,fj,delr1,delr2,tid); + if (EFLAG) { + hbcount++; + hbeng += evdwl; + } + } + } + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } + hbcount_thr[tid] = static_cast(hbcount); + hbeng_thr[tid] = hbeng; +} + +/* ---------------------------------------------------------------------- */ + +double PairHbondDreidingMorseOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += comm->nthreads * 2 * sizeof(double); + bytes += PairHbondDreidingMorse::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_hbond_dreiding_morse_omp.h b/src/USER-OMP/pair_hbond_dreiding_morse_omp.h new file mode 100644 index 0000000000..2a13c618c6 --- /dev/null +++ b/src/USER-OMP/pair_hbond_dreiding_morse_omp.h @@ -0,0 +1,52 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(hbond/dreiding/morse/omp,PairHbondDreidingMorseOMP) + +#else + +#ifndef LMP_PAIR_HBOND_DREIDING_MORSE_OMP_H +#define LMP_PAIR_HBOND_DREIDING_MORSE_OMP_H + +#include "pair_hbond_dreiding_morse.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairHbondDreidingMorseOMP : public PairHbondDreidingMorse, public ThrOMP { + + public: + PairHbondDreidingMorseOMP(class LAMMPS *); + virtual ~PairHbondDreidingMorseOMP(); + + virtual void compute(int, int); + virtual double memory_usage(); + + protected: + double *hbcount_thr, *hbeng_thr; + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj96_cut_omp.cpp b/src/USER-OMP/pair_lj96_cut_omp.cpp new file mode 100644 index 0000000000..f0998363e1 --- /dev/null +++ b/src/USER-OMP/pair_lj96_cut_omp.cpp @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj96_cut_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJ96CutOMP::PairLJ96CutOMP(LAMMPS *lmp) : + PairLJ96Cut(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJ96CutOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairLJ96CutOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r3inv,r6inv,forcelj,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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; + r6inv = r2inv*r2inv*r2inv; + r3inv = sqrt(r6inv); + + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + fpair = factor_lj*forcelj*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = r6inv*(lj3[itype][jtype]*r3inv-lj4[itype][jtype]) + - offset[itype][jtype]; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJ96CutOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJ96Cut::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj96_cut_omp.h b/src/USER-OMP/pair_lj96_cut_omp.h new file mode 100644 index 0000000000..333212303d --- /dev/null +++ b/src/USER-OMP/pair_lj96_cut_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj96/cut/omp,PairLJ96CutOMP) + +#else + +#ifndef LMP_PAIR_LJ96_CUT_OMP_H +#define LMP_PAIR_LJ96_CUT_OMP_H + +#include "pair_lj96_cut.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJ96CutOMP : public PairLJ96Cut, public ThrOMP { + + public: + PairLJ96CutOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp new file mode 100644 index 0000000000..32ad05acda --- /dev/null +++ b/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp @@ -0,0 +1,213 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_charmm_coul_charmm_implicit_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJCharmmCoulCharmmImplicitOMP::PairLJCharmmCoulCharmmImplicitOMP(LAMMPS *lmp) : + PairLJCharmmCoulCharmmImplicit(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCharmmCoulCharmmImplicitOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCharmmCoulCharmmImplicitOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double philj,switch1,switch2; + double invdenom_coul,invdenom_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + invdenom_coul = (denom_coul != 0.0) ? 1.0/denom_coul : 0.0; + invdenom_lj = (denom_lj != 0.0) ? 1.0/denom_lj : 0.0; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + qtmp = q[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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 < cut_bothsq) { + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq) { + forcecoul = 2.0 * qqrd2e * qtmp*q[j]*r2inv; + if (rsq > cut_coul_innersq) { + switch1 = (cut_coulsq-rsq) * (cut_coulsq-rsq) * + (cut_coulsq + 2.0*rsq - 3.0*cut_coul_innersq) * invdenom_coul; + switch2 = 12.0*rsq * (cut_coulsq-rsq) * + (rsq-cut_coul_innersq) * invdenom_coul; + forcecoul *= switch1 + switch2; + } + forcecoul *= factor_coul; + } else forcecoul = 0.0; + + if (rsq < cut_ljsq) { + r6inv = r2inv*r2inv*r2inv; + jtype = type[j]; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (cut_ljsq + 2.0*rsq - 3.0*cut_lj_innersq) * invdenom_lj; + switch2 = 12.0*rsq * (cut_ljsq-rsq) * + (rsq-cut_lj_innersq) * invdenom_lj; + philj = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + forcelj = forcelj*switch1 + philj*switch2; + } + forcelj *= factor_lj; + } else forcelj = 0.0; + + fpair = (forcecoul + forcelj) * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + ecoul = qqrd2e * qtmp*q[j]*r2inv; + if (rsq > cut_coul_innersq) { + switch1 = (cut_coulsq-rsq) * (cut_coulsq-rsq) * + (cut_coulsq + 2.0*rsq - 3.0*cut_coul_innersq) * + invdenom_coul; + ecoul *= switch1; + } + ecoul *= factor_coul; + } else ecoul = 0.0; + if (rsq < cut_ljsq) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]); + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (cut_ljsq + 2.0*rsq - 3.0*cut_lj_innersq) * invdenom_lj; + evdwl *= switch1; + } + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCharmmCoulCharmmImplicitOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJCharmmCoulCharmmImplicit::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.h b/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.h new file mode 100644 index 0000000000..ba016d7d3d --- /dev/null +++ b/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/charmm/coul/charmm/implicit/omp,PairLJCharmmCoulCharmmImplicitOMP) + +#else + +#ifndef LMP_PAIR_LJ_CHARMM_COUL_CHARMM_IMPLICIT_OMP_H +#define LMP_PAIR_LJ_CHARMM_COUL_CHARMM_IMPLICIT_OMP_H + +#include "pair_lj_charmm_coul_charmm_implicit.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCharmmCoulCharmmImplicitOMP : public PairLJCharmmCoulCharmmImplicit, public ThrOMP { + + public: + PairLJCharmmCoulCharmmImplicitOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp new file mode 100644 index 0000000000..6dac7a17f6 --- /dev/null +++ b/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp @@ -0,0 +1,213 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_charmm_coul_charmm_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJCharmmCoulCharmmOMP::PairLJCharmmCoulCharmmOMP(LAMMPS *lmp) : + PairLJCharmmCoulCharmm(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCharmmCoulCharmmOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCharmmCoulCharmmOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double philj,switch1,switch2; + double invdenom_coul,invdenom_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + invdenom_coul = (denom_coul != 0.0) ? 1.0/denom_coul : 0.0; + invdenom_lj = (denom_lj != 0.0) ? 1.0/denom_lj : 0.0; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + qtmp = q[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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 < cut_bothsq) { + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq) { + forcecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv); + if (rsq > cut_coul_innersq) { + switch1 = (cut_coulsq-rsq) * (cut_coulsq-rsq) * + (cut_coulsq + 2.0*rsq - 3.0*cut_coul_innersq) * invdenom_coul; + switch2 = 12.0*rsq * (cut_coulsq-rsq) * + (rsq-cut_coul_innersq) * invdenom_coul; + forcecoul *= switch1 + switch2; + } + forcecoul *= factor_coul; + } else forcecoul = 0.0; + + if (rsq < cut_ljsq) { + r6inv = r2inv*r2inv*r2inv; + jtype = type[j]; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (cut_ljsq + 2.0*rsq - 3.0*cut_lj_innersq) * invdenom_lj; + switch2 = 12.0*rsq * (cut_ljsq-rsq) * + (rsq-cut_lj_innersq) * invdenom_lj; + philj = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + forcelj = forcelj*switch1 + philj*switch2; + } + forcelj *= factor_lj; + } else forcelj = 0.0; + + fpair = (forcecoul + forcelj) * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + ecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv); + if (rsq > cut_coul_innersq) { + switch1 = (cut_coulsq-rsq) * (cut_coulsq-rsq) * + (cut_coulsq + 2.0*rsq - 3.0*cut_coul_innersq) * + invdenom_coul; + ecoul *= switch1; + } + ecoul *= factor_coul; + } else ecoul = 0.0; + if (rsq < cut_ljsq) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]); + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (cut_ljsq + 2.0*rsq - 3.0*cut_lj_innersq) * invdenom_lj; + evdwl *= switch1; + } + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCharmmCoulCharmmOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJCharmmCoulCharmm::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.h b/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.h new file mode 100644 index 0000000000..f2889b05fe --- /dev/null +++ b/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/charmm/coul/charmm/omp,PairLJCharmmCoulCharmmOMP) + +#else + +#ifndef LMP_PAIR_LJ_CHARMM_COUL_CHARMM_OMP_H +#define LMP_PAIR_LJ_CHARMM_COUL_CHARMM_OMP_H + +#include "pair_lj_charmm_coul_charmm.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCharmmCoulCharmmOMP : public PairLJCharmmCoulCharmm, public ThrOMP { + + public: + PairLJCharmmCoulCharmmOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp new file mode 100644 index 0000000000..c99f27f2e1 --- /dev/null +++ b/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp @@ -0,0 +1,234 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_charmm_coul_long_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairLJCharmmCoulLongOMP::PairLJCharmmCoulLongOMP(LAMMPS *lmp) : + PairLJCharmmCoulLong(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCharmmCoulLongOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCharmmCoulLongOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype,itable; + double qtmp,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; + double philj,switch1,switch2; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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) { + 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; + } 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; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else forcecoul = 0.0; + + if (rsq < cut_ljsq) { + r6inv = r2inv*r2inv*r2inv; + jtype = type[j]; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (cut_ljsq + 2.0*rsq - 3.0*cut_lj_innersq) / denom_lj; + switch2 = 12.0*rsq * (cut_ljsq-rsq) * + (rsq-cut_lj_innersq) / denom_lj; + philj = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + forcelj = forcelj*switch1 + philj*switch2; + } + forcelj *= factor_lj; + } else forcelj = 0.0; + + fpair = (forcecoul + forcelj) * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j] * table; + } + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + + if (rsq < cut_ljsq) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]); + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (cut_ljsq + 2.0*rsq - 3.0*cut_lj_innersq) / denom_lj; + evdwl *= switch1; + } + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCharmmCoulLongOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJCharmmCoulLong::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_charmm_coul_long_omp.h b/src/USER-OMP/pair_lj_charmm_coul_long_omp.h new file mode 100644 index 0000000000..b14e4c1fe4 --- /dev/null +++ b/src/USER-OMP/pair_lj_charmm_coul_long_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/charmm/coul/long/omp,PairLJCharmmCoulLongOMP) + +#else + +#ifndef LMP_PAIR_LJ_CHARMM_COUL_LONG_OMP_H +#define LMP_PAIR_LJ_CHARMM_COUL_LONG_OMP_H + +#include "pair_lj_charmm_coul_long.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCharmmCoulLongOMP : public PairLJCharmmCoulLong, public ThrOMP { + + public: + PairLJCharmmCoulLongOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp b/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp new file mode 100644 index 0000000000..0321882793 --- /dev/null +++ b/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp @@ -0,0 +1,185 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_class2_coul_cut_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJClass2CoulCutOMP::PairLJClass2CoulCutOMP(LAMMPS *lmp) : + PairLJClass2CoulCut(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2CoulCutOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJClass2CoulCutOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double rsq,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj; + double factor_coul,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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; + rinv = sqrt(r2inv); + + if (rsq < cut_coulsq[itype][jtype]) { + forcecoul = qqrd2e * qtmp*q[j]*rinv; + forcecoul *= factor_coul; + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + forcelj *= factor_lj; + } else forcelj = 0.0; + + fpair = (forcecoul + forcelj) * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq[itype][jtype]) + ecoul = factor_coul * qqrd2e * qtmp*q[j]*rinv; + else ecoul = 0.0; + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = r6inv*(lj3[itype][jtype]*r3inv-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,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJClass2CoulCutOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJClass2CoulCut::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_class2_coul_cut_omp.h b/src/USER-OMP/pair_lj_class2_coul_cut_omp.h new file mode 100644 index 0000000000..5fe4895691 --- /dev/null +++ b/src/USER-OMP/pair_lj_class2_coul_cut_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/class2/coul/cut/omp,PairLJClass2CoulCutOMP) + +#else + +#ifndef LMP_PAIR_LJ_CLASS2_COUL_CUT_OMP_H +#define LMP_PAIR_LJ_CLASS2_COUL_CUT_OMP_H + +#include "pair_lj_class2_coul_cut.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJClass2CoulCutOMP : public PairLJClass2CoulCut, public ThrOMP { + + public: + PairLJClass2CoulCutOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp b/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp new file mode 100644 index 0000000000..84d26ceb14 --- /dev/null +++ b/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp @@ -0,0 +1,201 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_class2_coul_long_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairLJClass2CoulLongOMP::PairLJClass2CoulLongOMP(LAMMPS *lmp) : + PairLJClass2CoulLong(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2CoulLongOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJClass2CoulLongOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double r,rsq,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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) { + 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; + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + forcelj *= factor_lj; + } else forcelj = 0.0; + + fpair = (forcecoul + forcelj) * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + ecoul = prefactor*erfc; + 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]*r3inv-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,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJClass2CoulLongOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJClass2CoulLong::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_class2_coul_long_omp.h b/src/USER-OMP/pair_lj_class2_coul_long_omp.h new file mode 100644 index 0000000000..da4ac3680f --- /dev/null +++ b/src/USER-OMP/pair_lj_class2_coul_long_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/class2/coul/long/omp,PairLJClass2CoulLongOMP) + +#else + +#ifndef LMP_PAIR_LJ_CLASS2_COUL_LONG_OMP_H +#define LMP_PAIR_LJ_CLASS2_COUL_LONG_OMP_H + +#include "pair_lj_class2_coul_long.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJClass2CoulLongOMP : public PairLJClass2CoulLong, public ThrOMP { + + public: + PairLJClass2CoulLongOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_class2_omp.cpp b/src/USER-OMP/pair_lj_class2_omp.cpp new file mode 100644 index 0000000000..4f5d2550fc --- /dev/null +++ b/src/USER-OMP/pair_lj_class2_omp.cpp @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_class2_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJClass2OMP::PairLJClass2OMP(LAMMPS *lmp) : + PairLJClass2(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2OMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairLJClass2OMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r3inv,r6inv,forcelj,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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; + r6inv = r2inv*r2inv*r2inv; + r3inv = sqrt(r6inv); + + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + fpair = factor_lj*forcelj*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = r6inv*(lj3[itype][jtype]*r3inv-lj4[itype][jtype]) + - offset[itype][jtype]; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJClass2OMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJClass2::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_class2_omp.h b/src/USER-OMP/pair_lj_class2_omp.h new file mode 100644 index 0000000000..cfe24bb714 --- /dev/null +++ b/src/USER-OMP/pair_lj_class2_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/class2/omp,PairLJClass2OMP) + +#else + +#ifndef LMP_PAIR_LJ_CLASS2_OMP_H +#define LMP_PAIR_LJ_CLASS2_OMP_H + +#include "pair_lj_class2.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJClass2OMP : public PairLJClass2, public ThrOMP { + + public: + PairLJClass2OMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_coul_omp.cpp b/src/USER-OMP/pair_lj_coul_omp.cpp new file mode 100644 index 0000000000..23e2a8d906 --- /dev/null +++ b/src/USER-OMP/pair_lj_coul_omp.cpp @@ -0,0 +1,234 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_coul_omp.h" +#include "atom.h" +#include "comm.h" +#include "math_vector.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairLJCoulOMP::PairLJCoulOMP(LAMMPS *lmp) : + PairLJCoul(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCoulOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCoulOMP::eval(double **f, int iifrom, int iito, int tid) +{ + double evdwl,ecoul,fpair; + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + + double *x0 = x[0]; + double *f0 = f[0], *fi = f0; + + int *ilist = list->ilist; + + // loop over neighbors of my atoms + + int i, ii, j, order1 = ewald_order&(1<<1), order6 = ewald_order&(1<<6); + int *jneigh, *jneighn, typei, typej, ni; + double qi, qri, *cutsqi, *cut_ljsqi, *lj1i, *lj2i, *lj3i, *lj4i, *offseti; + double rsq, r2inv, force_coul, force_lj; + double g2 = g_ewald*g_ewald, g6 = g2*g2*g2, g8 = g6*g2; + vector xi, d; + + for (ii = iifrom; ii < iito; ++ii) { // loop over my atoms + i = ilist[ii]; fi = f0+3*i; + if (order1) qri = (qi = q[i])*qqrd2e; // initialize constants + offseti = offset[typei = type[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)), sizeof(vector)); + jneighn = (jneigh = list->firstneigh[i])+list->numneigh[i]; + + for (; jneigh= cutsqi[typej = type[j]]) continue; + r2inv = 1.0/rsq; + + if (order1 && (rsq < cut_coulsq)) { // coulombic + if (!ncoultablebits || rsq <= tabinnersq) { // series real space + register double r = sqrt(rsq), x = g_ewald*r; + register double s = qri*q[j], t = 1.0/(1.0+EWALD_P*x); + if (ni == 0) { + s *= g_ewald*exp(-x*x); + force_coul = (t *= ((((t*A5+A4)*t+A3)*t+A2)*t+A1)*s/x)+EWALD_F*s; + if (EFLAG) ecoul = t; + } + else { // special case + r = s*(1.0-special_coul[ni])/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; + if (EFLAG) ecoul = t-r; + } + } // table real space + else { + register union_int_float_t t; + t.f = rsq; + register const int k = (t.i & ncoulmask)>>ncoulshiftbits; + register double f = (rsq-rtable[k])*drtable[k], qiqj = qi*q[j]; + if (ni == 0) { + force_coul = qiqj*(ftable[k]+f*dftable[k]); + if (EFLAG) ecoul = qiqj*(etable[k]+f*detable[k]); + } + else { // special case + t.f = (1.0-special_coul[ni])*(ctable[k]+f*dctable[k]); + force_coul = qiqj*(ftable[k]+f*dftable[k]-t.f); + if (EFLAG) ecoul = qiqj*(etable[k]+f*detable[k]-t.f); + } + } + } + else force_coul = ecoul = 0.0; + + if (rsq < cut_ljsqi[typej]) { // lj + if (order6) { // long-range lj + register double rn = r2inv*r2inv*r2inv; + register 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 + register 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 { // cut lj + register 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 + register 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+force_lj)*r2inv; + + if (NEWTON_PAIR || j < nlocal) { + register double *fj = f0+(j+(j<<1)), f; + fi[0] += f = d[0]*fpair; fj[0] -= f; + fi[1] += f = d[1]*fpair; fj[1] -= f; + fi[2] += f = d[2]*fpair; fj[2] -= f; + } + else { + fi[0] += d[0]*fpair; + fi[1] += d[1]*fpair; + fi[2] += d[2]*fpair; + } + + if (EVFLAG) ev_tally_thr(this,i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,d[0],d[1],d[2],tid); + } + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCoulOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJCoul::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_coul_omp.h b/src/USER-OMP/pair_lj_coul_omp.h new file mode 100644 index 0000000000..619e609ba8 --- /dev/null +++ b/src/USER-OMP/pair_lj_coul_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/coul/omp,PairLJCoulOMP) + +#else + +#ifndef LMP_PAIR_LJ_COUL_OMP_H +#define LMP_PAIR_LJ_COUL_OMP_H + +#include "pair_lj_coul.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCoulOMP : public PairLJCoul, public ThrOMP { + + public: + PairLJCoulOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_cubic_omp.cpp b/src/USER-OMP/pair_lj_cubic_omp.cpp new file mode 100644 index 0000000000..4f806bd71f --- /dev/null +++ b/src/USER-OMP/pair_lj_cubic_omp.cpp @@ -0,0 +1,173 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_cubic_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; +using namespace PairLJCubicConstants; + +/* ---------------------------------------------------------------------- */ + +PairLJCubicOMP::PairLJCubicOMP(LAMMPS *lmp) : + PairLJCubic(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCubicOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairLJCubicOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r6inv,forcelj,factor_lj; + double r,t,rmin; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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_inner_sq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else { + r = sqrt(rsq); + rmin = sigma[itype][jtype]*RT6TWO; + t = (r - cut_inner[itype][jtype])/rmin; + forcelj = epsilon[itype][jtype]*(-DPHIDS + A3*t*t/2.0)*r/rmin; + } + fpair = factor_lj*forcelj*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq <= cut_inner_sq[itype][jtype]) + evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + else + evdwl = epsilon[itype][jtype]* + (PHIS + DPHIDS*t - A3*t*t*t/6.0); + + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCubicOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJCubic::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_cubic_omp.h b/src/USER-OMP/pair_lj_cubic_omp.h new file mode 100644 index 0000000000..559a6125ab --- /dev/null +++ b/src/USER-OMP/pair_lj_cubic_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cubic/omp,PairLJCubicOMP) + +#else + +#ifndef LMP_PAIR_LJ_CUBIC_OMP_H +#define LMP_PAIR_LJ_CUBIC_OMP_H + +#include "pair_lj_cubic.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCubicOMP : public PairLJCubic, public ThrOMP { + + public: + PairLJCubicOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp new file mode 100644 index 0000000000..be98ec38fc --- /dev/null +++ b/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp @@ -0,0 +1,183 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_cut_coul_cut_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulCutOMP::PairLJCutCoulCutOMP(LAMMPS *lmp) : + PairLJCutCoulCut(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulCutOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCutCoulCutOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double rsq,rinv,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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]) { + rinv = sqrt(r2inv); + forcecoul = qqrd2e * qtmp*q[j]*rinv; + forcecoul *= factor_coul; + } else 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; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq[itype][jtype]) + ecoul = factor_coul * qqrd2e * qtmp*q[j]*rinv; + 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,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulCutOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJCutCoulCut::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_cut_coul_cut_omp.h b/src/USER-OMP/pair_lj_cut_coul_cut_omp.h new file mode 100644 index 0000000000..c8c34e2591 --- /dev/null +++ b/src/USER-OMP/pair_lj_cut_coul_cut_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/coul/cut/omp,PairLJCutCoulCutOMP) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_CUT_OMP_H +#define LMP_PAIR_LJ_CUT_COUL_CUT_OMP_H + +#include "pair_lj_cut_coul_cut.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulCutOMP : public PairLJCutCoulCut, public ThrOMP { + + public: + PairLJCutCoulCutOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp new file mode 100644 index 0000000000..13a4a1906f --- /dev/null +++ b/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp @@ -0,0 +1,186 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_cut_coul_debye_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulDebyeOMP::PairLJCutCoulDebyeOMP(LAMMPS *lmp) : + PairLJCutCoulDebye(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulDebyeOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCutCoulDebyeOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double r,rinv,screening; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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]) { + r = sqrt(rsq); + rinv = 1.0/r; + screening = exp(-kappa*r); + forcecoul = qqrd2e * qtmp*q[j] * screening * (kappa + rinv); + forcecoul *= factor_coul; + } else 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; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq[itype][jtype]) + ecoul = factor_coul * qqrd2e * qtmp*q[j] * rinv * screening; + 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,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulDebyeOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJCutCoulDebye::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_cut_coul_debye_omp.h b/src/USER-OMP/pair_lj_cut_coul_debye_omp.h new file mode 100644 index 0000000000..00cf540be2 --- /dev/null +++ b/src/USER-OMP/pair_lj_cut_coul_debye_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/coul/debye/omp,PairLJCutCoulDebyeOMP) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_DEBYE_OMP_H +#define LMP_PAIR_LJ_CUT_COUL_DEBYE_OMP_H + +#include "pair_lj_cut_coul_debye.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulDebyeOMP : public PairLJCutCoulDebye, public ThrOMP { + + public: + PairLJCutCoulDebyeOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp new file mode 100644 index 0000000000..1d8f977c96 --- /dev/null +++ b/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp @@ -0,0 +1,220 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_cut_coul_long_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulLongOMP::PairLJCutCoulLongOMP(LAMMPS *lmp) : + PairLJCutCoulLong(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulLongOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCutCoulLongOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype,itable; + double qtmp,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; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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) { + 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; + } 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; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*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]); + forcelj *= factor_lj; + } else forcelj = 0.0; + + fpair = (forcecoul + forcelj) * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[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,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulLongOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJCutCoulLong::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_cut_coul_long_omp.h b/src/USER-OMP/pair_lj_cut_coul_long_omp.h new file mode 100644 index 0000000000..ac408ba886 --- /dev/null +++ b/src/USER-OMP/pair_lj_cut_coul_long_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/coul/long/omp,PairLJCutCoulLongOMP) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_LONG_OMP_H +#define LMP_PAIR_LJ_CUT_COUL_LONG_OMP_H + +#include "pair_lj_cut_coul_long.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulLongOMP : public PairLJCutCoulLong, public ThrOMP { + + public: + PairLJCutCoulLongOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_cut_coul_long_tip4p_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_long_tip4p_omp.cpp new file mode 100644 index 0000000000..6ada944c53 --- /dev/null +++ b/src/USER-OMP/pair_lj_cut_coul_long_tip4p_omp.cpp @@ -0,0 +1,462 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_cut_coul_long_tip4p_omp.h" +#include "atom.h" +#include "domain.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "error.h" +#include "memory.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +#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 + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulLongTIP4POMP::PairLJCutCoulLongTIP4POMP(LAMMPS *lmp) : + PairLJCutCoulLongTIP4P(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; + + // for caching m-shift corrected positions + maxmpos = 0; + h1idx = h2idx = NULL; + mpos = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulLongTIP4POMP::~PairLJCutCoulLongTIP4POMP() +{ + memory->destroy(h1idx); + memory->destroy(h2idx); + memory->destroy(mpos); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulLongTIP4POMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nlocal = atom->nlocal; + const int nall = nlocal + atom->nghost; + + // reallocate per-atom arrays, if necessary + if (nall > maxmpos) { + maxmpos = nall; + memory->grow(mpos,maxmpos,3,"pair:mpos"); + memory->grow(h1idx,maxmpos,"pair:h1idx"); + memory->grow(h2idx,maxmpos,"pair:h2idx"); + } + + // cache corrected M positions in mpos[] + double **x = atom->x; + int *type = atom->type; + for (int i = 0; i < nlocal; i++) { + if (type[i] == typeO) { + find_M(i,h1idx[i],h2idx[i],mpos[i]); + } else { + mpos[i][0] = x[i][0]; + mpos[i][1] = x[i][1]; + mpos[i][2] = x[i][2]; + } + } + for (int i = nlocal; i < nall; i++) { + if (type[i] == typeO) { + find_M_permissive(i,h1idx[i],h2idx[i],mpos[i]); + } else { + mpos[i][0] = x[i][0]; + mpos[i][1] = x[i][1]; + mpos[i][2] = x[i][2]; + } + } + + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (vflag) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (vflag) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCutCoulLongTIP4POMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype,itable; + int n,vlist[6]; + int iH1,iH2,jH1,jH2; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul; + double fraction,table; + double delxOM,delyOM,delzOM; + double r,rsq,r2inv,r6inv,forcecoul,forcelj,cforce; + double factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc,ddotf; + double v[6],xH1[3],xH2[3]; + double fdx,fdy,fdz,f1x,f1y,f1z,fOx,fOy,fOz,fHx,fHy,fHz; + double *x1,*x2; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + x1 = mpos[i]; + iH1 = h1idx[i]; + iH2 = h2idx[i]; + + 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_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + forcelj *= factor_lj * r2inv; + + fxtmp += delx*forcelj; + fytmp += dely*forcelj; + fztmp += delz*forcelj; + f[j][0] -= delx*forcelj; + f[j][1] -= dely*forcelj; + f[j][2] -= delz*forcelj; + + if (EFLAG) { + 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 = */ 1, + evdwl,0.0,forcelj,delx,dely,delz,tid); + } + + // adjust rsq and delxyz for off-site O charge(s) + + if (itype == typeO || jtype == typeO) { + x2 = mpos[j]; + jH1 = h1idx[j]; + jH2 = h2idx[j]; + if (jtype == typeO && ( jH1 < 0 || jH2 < 0 )) + error->one(FLERR,"TIP4P hydrogen is missing"); + delx = x1[0] - x2[0]; + dely = x1[1] - x2[1]; + delz = x1[2] - x2[2]; + rsq = delx*delx + dely*dely + delz*delz; + } + + // test current rsq against cutoff and compute Coulombic force + + if (rsq < cut_coulsq) { + r2inv = 1 / 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 * qtmp*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; + 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; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + + cforce = forcecoul * r2inv; + + // if i,j are not O atoms, force is applied directly + // if i or j are O atoms, force is on fictitious atom & partitioned + // force partitioning due to Feenstra, J Comp Chem, 20, 786 (1999) + // f_f = fictitious force, fO = f_f (1 - 2 alpha), fH = alpha f_f + // preserves total force and torque on water molecule + // virial = sum(r x F) where each water's atoms are near xi and xj + // vlist stores 2,4,6 atoms whose forces contribute to virial + + n = 0; + + if (itype != typeO) { + fxtmp += delx * cforce; + fytmp += dely * cforce; + fztmp += delz * cforce; + + if (VFLAG) { + v[0] = x[i][0] * delx * cforce; + v[1] = x[i][1] * dely * cforce; + v[2] = x[i][2] * delz * cforce; + v[3] = x[i][0] * dely * cforce; + v[4] = x[i][0] * delz * cforce; + v[5] = x[i][1] * delz * cforce; + vlist[n++] = i; + } + + } else { + + fdx = delx*cforce; + fdy = dely*cforce; + fdz = delz*cforce; + + delxOM = x[i][0] - x1[0]; + delyOM = x[i][1] - x1[1]; + delzOM = x[i][2] - x1[2]; + + ddotf = (delxOM * fdx + delyOM * fdy + delzOM * fdz) / + (qdist*qdist); + + f1x = alpha * (fdx - ddotf * delxOM); + f1y = alpha * (fdy - ddotf * delyOM); + f1z = alpha * (fdz - ddotf * delzOM); + + fOx = fdx - f1x; + fOy = fdy - f1y; + fOz = fdz - f1z; + + fHx = 0.5 * f1x; + fHy = 0.5 * f1y; + fHz = 0.5 * f1z; + + fxtmp += fOx; + fytmp += fOy; + fztmp += fOz; + + f[iH1][0] += fHx; + f[iH1][1] += fHy; + f[iH1][2] += fHz; + + f[iH2][0] += fHx; + f[iH2][1] += fHy; + f[iH2][2] += fHz; + + if (VFLAG) { + domain->closest_image(x[i],x[iH1],xH1); + domain->closest_image(x[i],x[iH2],xH2); + + v[0] = x[i][0]*fOx + xH1[0]*fHx + xH2[0]*fHx; + v[1] = x[i][1]*fOy + xH1[1]*fHy + xH2[1]*fHy; + v[2] = x[i][2]*fOz + xH1[2]*fHz + xH2[2]*fHz; + v[3] = x[i][0]*fOy + xH1[0]*fHy + xH2[0]*fHy; + v[4] = x[i][0]*fOz + xH1[0]*fHz + xH2[0]*fHz; + v[5] = x[i][1]*fOz + xH1[1]*fHz + xH2[1]*fHz; + + vlist[n++] = i; + vlist[n++] = iH1; + vlist[n++] = iH2; + } + } + + if (jtype != typeO) { + f[j][0] -= delx * cforce; + f[j][1] -= dely * cforce; + f[j][2] -= delz * cforce; + + if (VFLAG) { + v[0] -= x[j][0] * delx * cforce; + v[1] -= x[j][1] * dely * cforce; + v[2] -= x[j][2] * delz * cforce; + v[3] -= x[j][0] * dely * cforce; + v[4] -= x[j][0] * delz * cforce; + v[5] -= x[j][1] * delz * cforce; + vlist[n++] = j; + } + + } else { + + fdx = -delx*cforce; + fdy = -dely*cforce; + fdz = -delz*cforce; + + delxOM = x[j][0] - x2[0]; + delyOM = x[j][1] - x2[1]; + delzOM = x[j][2] - x2[2]; + + ddotf = (delxOM * fdx + delyOM * fdy + delzOM * fdz) / + (qdist*qdist); + + f1x = alpha * (fdx - ddotf * delxOM); + f1y = alpha * (fdy - ddotf * delyOM); + f1z = alpha * (fdz - ddotf * delzOM); + + fOx = fdx - f1x; + fOy = fdy - f1y; + fOz = fdz - f1z; + + fHx = 0.5 * f1x; + fHy = 0.5 * f1y; + fHz = 0.5 * f1z; + + f[j][0] += fOx; + f[j][1] += fOy; + f[j][2] += fOz; + + f[jH1][0] += fHx; + f[jH1][1] += fHy; + f[jH1][2] += fHz; + + f[jH2][0] += fHx; + f[jH2][1] += fHy; + f[jH2][2] += fHz; + + if (VFLAG) { + domain->closest_image(x[j],x[jH1],xH1); + domain->closest_image(x[j],x[jH2],xH2); + + v[0] += x[j][0]*fOx + xH1[0]*fHx + xH2[0]*fHx; + v[1] += x[j][1]*fOy + xH1[1]*fHy + xH2[1]*fHy; + v[2] += x[j][2]*fOz + xH1[2]*fHz + xH2[2]*fHz; + v[3] += x[j][0]*fOy + xH1[0]*fHy + xH2[0]*fHy; + v[4] += x[j][0]*fOz + xH1[0]*fHz + xH2[0]*fHz; + v[5] += x[j][1]*fOz + xH1[1]*fHz + xH2[1]*fHz; + + vlist[n++] = j; + vlist[n++] = jH1; + vlist[n++] = jH2; + } + } + + if (EFLAG) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j] * table; + } + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + + if (EVFLAG) ev_tally_list_thr(this,n,vlist,ecoul,v,tid); + } + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulLongTIP4POMP::find_M_permissive(int i, int &iH1, int &iH2, double *xM) +{ + // test that O is correctly bonded to 2 succesive H atoms + + iH1 = atom->map(atom->tag[i] + 1); + iH2 = atom->map(atom->tag[i] + 2); + + if (iH1 == -1 || iH2 == -1) + return; + else + find_M(i,iH1,iH2,xM); +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulLongTIP4POMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJCutCoulLongTIP4P::memory_usage(); + bytes += 2 * maxmpos * sizeof(int); + bytes += 3 * maxmpos * sizeof(double); + bytes += maxmpos * sizeof(double *); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_cut_coul_long_tip4p_omp.h b/src/USER-OMP/pair_lj_cut_coul_long_tip4p_omp.h new file mode 100644 index 0000000000..093fc0216b --- /dev/null +++ b/src/USER-OMP/pair_lj_cut_coul_long_tip4p_omp.h @@ -0,0 +1,57 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/coul/long/tip4p/omp,PairLJCutCoulLongTIP4POMP) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_LONG_TIP4P_OMP_H +#define LMP_PAIR_LJ_CUT_COUL_LONG_TIP4P_OMP_H + +#include "pair_lj_cut_coul_long_tip4p.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulLongTIP4POMP : public PairLJCutCoulLongTIP4P, public ThrOMP { + + public: + PairLJCutCoulLongTIP4POMP(class LAMMPS *); + virtual ~PairLJCutCoulLongTIP4POMP(); + + virtual void compute(int, int); + virtual double memory_usage(); + + protected: + + // this is to cache m-shift corrected positions. + int maxmpos; // size of the following arrays + int *h1idx, *h2idx; // local index of hydrogen atoms + double **mpos; // coordinates corrected for m-shift. + void find_M_permissive(int, int &, int &, double *); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_cut_omp.cpp b/src/USER-OMP/pair_lj_cut_omp.cpp new file mode 100644 index 0000000000..3d82149fec --- /dev/null +++ b/src/USER-OMP/pair_lj_cut_omp.cpp @@ -0,0 +1,160 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_cut_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJCutOMP::PairLJCutOMP(LAMMPS *lmp) : + PairLJCut(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairLJCutOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r6inv,forcelj,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + fpair = factor_lj*forcelj*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) + - offset[itype][jtype]; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJCut::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_cut_omp.h b/src/USER-OMP/pair_lj_cut_omp.h new file mode 100644 index 0000000000..56f9f9b8a5 --- /dev/null +++ b/src/USER-OMP/pair_lj_cut_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/omp,PairLJCutOMP) + +#else + +#ifndef LMP_PAIR_LJ_CUT_OMP_H +#define LMP_PAIR_LJ_CUT_OMP_H + +#include "pair_lj_cut.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCutOMP : public PairLJCut, public ThrOMP { + + public: + PairLJCutOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_expand_omp.cpp b/src/USER-OMP/pair_lj_expand_omp.cpp new file mode 100644 index 0000000000..7b06503ee4 --- /dev/null +++ b/src/USER-OMP/pair_lj_expand_omp.cpp @@ -0,0 +1,164 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_expand_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJExpandOMP::PairLJExpandOMP(LAMMPS *lmp) : + PairLJExpand(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJExpandOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairLJExpandOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r6inv,forcelj,factor_lj; + double r,rshift,rshiftsq; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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]) { + r = sqrt(rsq); + rshift = r - shift[itype][jtype]; + rshiftsq = rshift*rshift; + r2inv = 1.0/rshiftsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + fpair = factor_lj*forcelj/rshift/r; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) + - offset[itype][jtype]; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJExpandOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJExpand::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_expand_omp.h b/src/USER-OMP/pair_lj_expand_omp.h new file mode 100644 index 0000000000..29488deae8 --- /dev/null +++ b/src/USER-OMP/pair_lj_expand_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/omp,PairLJExpandOMP) + +#else + +#ifndef LMP_PAIR_LJ_EXPAND_OMP_H +#define LMP_PAIR_LJ_EXPAND_OMP_H + +#include "pair_lj_expand.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJExpandOMP : public PairLJExpand, public ThrOMP { + + public: + PairLJExpandOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp b/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp new file mode 100644 index 0000000000..2e97fa1b5e --- /dev/null +++ b/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp @@ -0,0 +1,210 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_gromacs_coul_gromacs_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJGromacsCoulGromacsOMP::PairLJGromacsCoulGromacsOMP(LAMMPS *lmp) : + PairLJGromacsCoulGromacs(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJGromacsCoulGromacsOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJGromacsCoulGromacsOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double r,tlj,tc,fswitch,fswitchcoul,eswitch,ecoulswitch; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp; + + 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][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.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; + + // skip if qi or qj = 0.0 since this potential may be used as + // coarse-grain model with many uncharged atoms + + if (rsq < cut_coulsq && qtmp != 0.0 && q[j] != 0.0) { + forcecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv); + if (rsq > cut_coul_innersq) { + r = sqrt(rsq); + tc = r - cut_coul_inner; + fswitchcoul = qqrd2e * qtmp*q[j]*r*tc*tc*(coulsw1 + coulsw2*tc); + forcecoul += fswitchcoul; + } + forcecoul *= factor_coul; + } else forcecoul = 0.0; + + if (rsq < cut_ljsq) { + r6inv = r2inv*r2inv*r2inv; + jtype = type[j]; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + if (rsq > cut_lj_innersq) { + r = sqrt(rsq); + tlj = r - cut_lj_inner; + fswitch = r*tlj*tlj*(ljsw1[itype][jtype] + + ljsw2[itype][jtype]*tlj); + forcelj += fswitch; + } + forcelj *= factor_lj; + } else forcelj = 0.0; + + fpair = (forcecoul + forcelj) * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + ecoul = qqrd2e * qtmp*q[j] * (sqrt(r2inv) - coulsw5); + if (rsq > cut_coul_innersq) { + ecoulswitch = tc*tc*tc * (coulsw3 + coulsw4*tc); + ecoul += qqrd2e*qtmp*q[j]*ecoulswitch; + } + ecoul *= factor_coul; + } else ecoul = 0.0; + if (rsq < cut_ljsq) { + evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + evdwl += ljsw5[itype][jtype]; + if (rsq > cut_lj_innersq) { + eswitch = tlj*tlj*tlj * + (ljsw3[itype][jtype] + ljsw4[itype][jtype]*tlj); + evdwl += eswitch; + } + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJGromacsCoulGromacsOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJGromacsCoulGromacs::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.h b/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.h new file mode 100644 index 0000000000..d789bd6797 --- /dev/null +++ b/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/gromacs/coul/gromacs/omp,PairLJGromacsCoulGromacsOMP) + +#else + +#ifndef LMP_PAIR_LJ_GROMACS_COUL_GROMACS_OMP_H +#define LMP_PAIR_LJ_GROMACS_COUL_GROMACS_OMP_H + +#include "pair_lj_gromacs_coul_gromacs.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJGromacsCoulGromacsOMP : public PairLJGromacsCoulGromacs, public ThrOMP { + + public: + PairLJGromacsCoulGromacsOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_gromacs_omp.cpp b/src/USER-OMP/pair_lj_gromacs_omp.cpp new file mode 100644 index 0000000000..f1c7d2faf9 --- /dev/null +++ b/src/USER-OMP/pair_lj_gromacs_omp.cpp @@ -0,0 +1,172 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_gromacs_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJGromacsOMP::PairLJGromacsOMP(LAMMPS *lmp) : + PairLJGromacs(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJGromacsOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairLJGromacsOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r6inv,forcelj,factor_lj; + double r,t,fswitch,eswitch; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + if (rsq > cut_inner_sq[itype][jtype]) { + r = sqrt(rsq); + t = r - cut_inner[itype][jtype]; + fswitch = r*t*t*(ljsw1[itype][jtype] + ljsw2[itype][jtype]*t); + forcelj += fswitch; + } + + fpair = factor_lj*forcelj*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + evdwl += ljsw5[itype][jtype]; + if (rsq > cut_inner_sq[itype][jtype]) { + eswitch = t*t*t*(ljsw3[itype][jtype] + ljsw4[itype][jtype]*t); + evdwl += eswitch; + } + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJGromacsOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJGromacs::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_gromacs_omp.h b/src/USER-OMP/pair_lj_gromacs_omp.h new file mode 100644 index 0000000000..d192a414ef --- /dev/null +++ b/src/USER-OMP/pair_lj_gromacs_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/gromacs/omp,PairLJGromacsOMP) + +#else + +#ifndef LMP_PAIR_LJ_GROMACS_OMP_H +#define LMP_PAIR_LJ_GROMACS_OMP_H + +#include "pair_lj_gromacs.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJGromacsOMP : public PairLJGromacs, public ThrOMP { + + public: + PairLJGromacsOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_sf_omp.cpp b/src/USER-OMP/pair_lj_sf_omp.cpp new file mode 100644 index 0000000000..55ee908e47 --- /dev/null +++ b/src/USER-OMP/pair_lj_sf_omp.cpp @@ -0,0 +1,163 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_sf_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJShiftedForceOMP::PairLJShiftedForceOMP(LAMMPS *lmp) : + PairLJShiftedForce(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJShiftedForceOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairLJShiftedForceOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double t,rsq,r2inv,r6inv,forcelj,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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; + r6inv = r2inv*r2inv*r2inv; + t = sqrt(r2inv*cutsq[itype][jtype]); + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]) - + t*foffset[itype][jtype]; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + fpair = factor_lj*forcelj*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) + + (t-1.0)*foffset[itype][jtype] - offset[itype][jtype]; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJShiftedForceOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJShiftedForce::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_sf_omp.h b/src/USER-OMP/pair_lj_sf_omp.h new file mode 100644 index 0000000000..6fba43fb8f --- /dev/null +++ b/src/USER-OMP/pair_lj_sf_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/sf/omp,PairLJShiftedForceOMP) + +#else + +#ifndef LMP_PAIR_LJ_SF_OMP_H +#define LMP_PAIR_LJ_SF_OMP_H + +#include "pair_lj_sf.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJShiftedForceOMP : public PairLJShiftedForce, public ThrOMP { + + public: + PairLJShiftedForceOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lj_smooth_omp.cpp b/src/USER-OMP/pair_lj_smooth_omp.cpp new file mode 100644 index 0000000000..1ad88044a6 --- /dev/null +++ b/src/USER-OMP/pair_lj_smooth_omp.cpp @@ -0,0 +1,176 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lj_smooth_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairLJSmoothOMP::PairLJSmoothOMP(LAMMPS *lmp) : + PairLJSmooth(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJSmoothOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairLJSmoothOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r6inv,forcelj,factor_lj; + double r,t,tsq,fskin; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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_inner_sq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv-lj2[itype][jtype]); + } else { + r = sqrt(rsq); + t = r - cut_inner[itype][jtype]; + tsq = t*t; + fskin = ljsw1[itype][jtype] + ljsw2[itype][jtype]*t + + ljsw3[itype][jtype]*tsq + ljsw4[itype][jtype]*tsq*t; + forcelj = fskin*r; + } + + fpair = factor_lj*forcelj*r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_inner_sq[itype][jtype]) + evdwl = r6inv * (lj3[itype][jtype]*r6inv - + lj4[itype][jtype]) - offset[itype][jtype]; + else + evdwl = ljsw0[itype][jtype] - ljsw1[itype][jtype]*t - + ljsw2[itype][jtype]*tsq/2.0 - ljsw3[itype][jtype]*tsq*t/3.0 - + ljsw4[itype][jtype]*tsq*tsq/4.0 - offset[itype][jtype]; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJSmoothOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLJSmooth::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lj_smooth_omp.h b/src/USER-OMP/pair_lj_smooth_omp.h new file mode 100644 index 0000000000..de27a4008d --- /dev/null +++ b/src/USER-OMP/pair_lj_smooth_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/smooth/omp,PairLJSmoothOMP) + +#else + +#ifndef LMP_PAIR_LJ_SMOOTH_OMP_H +#define LMP_PAIR_LJ_SMOOTH_OMP_H + +#include "pair_lj_smooth.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJSmoothOMP : public PairLJSmooth, public ThrOMP { + + public: + PairLJSmoothOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_lubricate_omp.cpp b/src/USER-OMP/pair_lubricate_omp.cpp new file mode 100644 index 0000000000..d45e0bf1b6 --- /dev/null +++ b/src/USER-OMP/pair_lubricate_omp.cpp @@ -0,0 +1,328 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_lubricate_omp.h" +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "update.h" +#include "neighbor.h" +#include "random_mars.h" +#include "neigh_list.h" + +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +/* ---------------------------------------------------------------------- */ + +PairLubricateOMP::PairLubricateOMP(LAMMPS *lmp) : + PairLubricate(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; + random_thr = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairLubricateOMP::~PairLubricateOMP() +{ + if (random_thr) { + for (int i=1; i < comm->nthreads; ++i) + delete random_thr[i]; + + delete[] random_thr; + random_thr = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairLubricateOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + if (!random_thr) + random_thr = new RanMars*[nthreads]; + + random_thr[0] = random; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, **torque; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + torque = atom->torque + tid*nall; + + if (random_thr && tid > 0) + random_thr[tid] = new RanMars(Pair::lmp, seed + comm->me + + comm->nprocs*tid); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, torque, ifrom, ito, tid); + else eval<1,1,0>(f, torque, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, torque, ifrom, ito, tid); + else eval<1,0,0>(f, torque, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, torque, ifrom, ito, tid); + else eval<0,0,0>(f, torque, ifrom, ito, tid); + } + + // reduce per thread forces and torques into global arrays. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + data_reduce_thr(&(atom->torque[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairLubricateOMP::eval(double **f, double **torque, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,fpair,fx,fy,fz,tx,ty,tz; + double rsq,r,h_sep,radi,tfmag; + double vr1,vr2,vr3,vnnr,vn1,vn2,vn3; + double vt1,vt2,vt3,w1,w2,w3,v_shear1,v_shear2,v_shear3; + double omega_t_1,omega_t_2,omega_t_3; + double n_cross_omega_t_1,n_cross_omega_t_2,n_cross_omega_t_3; + double wr1,wr2,wr3,wnnr,wn1,wn2,wn3; + double P_dot_wrel_1,P_dot_wrel_2,P_dot_wrel_3; + double a_squeeze,a_shear,a_pump,a_twist; + int *ilist,*jlist,*numneigh,**firstneigh; + + double **x = atom->x; + double **v = atom->v; + double **omega = atom->omega; + double *radius = atom->radius; + int *type = atom->type; + int nlocal = atom->nlocal; + double vxmu2f = force->vxmu2f; + RanMars &rng = *random_thr[tid]; + + double prethermostat = sqrt(2.0 * force->boltz * t_target / update->dt); + prethermostat *= sqrt(force->vxmu2f/force->ftm2v/force->mvv2e); + + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + a_squeeze = a_shear = a_pump = a_twist = 0.0; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + radi = radius[i]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + 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]) { + + r = sqrt(rsq); + + // relative translational velocity + + vr1 = v[i][0] - v[j][0]; + vr2 = v[i][1] - v[j][1]; + vr3 = v[i][2] - v[j][2]; + + // normal component N.(v1-v2) = nn.(v1-v2) + + vnnr = vr1*delx + vr2*dely + vr3*delz; + vnnr /= r; + vn1 = delx*vnnr / r; + vn2 = dely*vnnr / r; + vn3 = delz*vnnr / r; + + // tangential component -P.(v1-v2) + // P = (I - nn) where n is vector between centers + + vt1 = vr1 - vn1; + vt2 = vr2 - vn2; + vt3 = vr3 - vn3; + + // additive rotational velocity = omega_1 + omega_2 + + w1 = omega[i][0] + omega[j][0]; + w2 = omega[i][1] + omega[j][1]; + w3 = omega[i][2] + omega[j][2]; + + // relative velocities n X P . (v1-v2) = n X (I-nn) . (v1-v2) + + v_shear1 = (dely*vt3 - delz*vt2) / r; + v_shear2 = -(delx*vt3 - delz*vt1) / r; + v_shear3 = (delx*vt2 - dely*vt1) / r; + + // relative rotation rate P.(omega1 + omega2) + + omega_t_1 = w1 - delx*(delx*w1) / rsq; + omega_t_2 = w2 - dely*(dely*w2) / rsq; + omega_t_3 = w3 - delz*(delz*w3) / rsq; + + // n X omega_t + + n_cross_omega_t_1 = (dely*omega_t_3 - delz*omega_t_2) / r; + n_cross_omega_t_2 = -(delx*omega_t_3 - delz*omega_t_1) / r; + n_cross_omega_t_3 = (delx*omega_t_2 - dely*omega_t_1) / r; + + // N.(w1-w2) and P.(w1-w2) + + wr1 = omega[i][0] - omega[j][0]; + wr2 = omega[i][1] - omega[j][1]; + wr3 = omega[i][2] - omega[j][2]; + + wnnr = wr1*delx + wr2*dely + wr3*delz; + wn1 = delx*wnnr / rsq; + wn2 = dely*wnnr / rsq; + wn3 = delz*wnnr / rsq; + + P_dot_wrel_1 = wr1 - delx*(delx*wr1)/rsq; + P_dot_wrel_2 = wr2 - dely*(dely*wr2)/rsq; + P_dot_wrel_3 = wr3 - delz*(delz*wr3)/rsq; + + // compute components of pair-hydro + + h_sep = r - 2.0*radi; + + if (flag1) + a_squeeze = (3.0*MY_PI*mu*2.0*radi/2.0) * (2.0*radi/4.0/h_sep); + if (flag2) + a_shear = (MY_PI*mu*2.*radi/2.0) * + log(2.0*radi/2.0/h_sep)*(2.0*radi+h_sep)*(2.0*radi+h_sep)/4.0; + if (flag3) + a_pump = (MY_PI*mu*pow(2.0*radi,4)/8.0) * + ((3.0/20.0) * log(2.0*radi/2.0/h_sep) + + (63.0/250.0) * (h_sep/2.0/radi) * log(2.0*radi/2.0/h_sep)); + if (flag4) + a_twist = (MY_PI*mu*pow(2.0*radi,4)/4.0) * + (h_sep/2.0/radi) * log(2.0/(2.0*h_sep)); + + if (h_sep >= cut_inner[itype][jtype]) { + fx = -a_squeeze*vn1 - a_shear*(2.0/r)*(2.0/r)*vt1 + + (2.0/r)*a_shear*n_cross_omega_t_1; + fy = -a_squeeze*vn2 - a_shear*(2.0/r)*(2.0/r)*vt2 + + (2.0/r)*a_shear*n_cross_omega_t_2; + fz = -a_squeeze*vn3 - a_shear*(2.0/r)*(2.0/r)*vt3 + + (2.0/r)*a_shear*n_cross_omega_t_3; + fx *= vxmu2f; + fy *= vxmu2f; + fz *= vxmu2f; + + // add in thermostat force + + tfmag = prethermostat*sqrt(a_squeeze)*(rng.uniform()-0.5); + fx -= tfmag * delx/r; + fy -= tfmag * dely/r; + fz -= tfmag * delz/r; + + tx = -(2.0/r)*a_shear*v_shear1 - a_shear*omega_t_1 - + a_pump*P_dot_wrel_1 - a_twist*wn1; + ty = -(2.0/r)*a_shear*v_shear2 - a_shear*omega_t_2 - + a_pump*P_dot_wrel_2 - a_twist*wn2; + tz = -(2.0/r)*a_shear*v_shear3 - a_shear*omega_t_3 - + a_pump*P_dot_wrel_3 - a_twist*wn3; + torque[i][0] += vxmu2f * tx; + torque[i][1] += vxmu2f * ty; + torque[i][2] += vxmu2f * tz; + + } else { + a_squeeze = (3.0*MY_PI*mu*2.0*radi/2.0) * + (2.0*radi/4.0/cut_inner[itype][jtype]); + fpair = -a_squeeze*vnnr; + fpair *= vxmu2f; + + // add in thermostat force + + fpair -= prethermostat*sqrt(a_squeeze)*(rng.uniform()-0.5); + + fx = fpair * delx/r; + fy = fpair * dely/r; + fz = fpair * delz/r; + } + + f[i][0] += fx; + f[i][1] += fy; + f[i][2] += fz; + + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= fx; + f[j][1] -= fy; + f[j][2] -= fz; + + if (h_sep >= cut_inner[itype][jtype]) { + tx = -(2.0/r)*a_shear*v_shear1 - a_shear*omega_t_1 + + a_pump*P_dot_wrel_1 + a_twist*wn1; + ty = -(2.0/r)*a_shear*v_shear2 - a_shear*omega_t_2 + + a_pump*P_dot_wrel_2 + a_twist*wn2; + tz = -(2.0/r)*a_shear*v_shear3 - a_shear*omega_t_3 + + a_pump*P_dot_wrel_3 + a_twist*wn3; + torque[j][0] += vxmu2f * tx; + torque[j][1] += vxmu2f * ty; + torque[j][2] += vxmu2f * tz; + } + } + + if (EVFLAG) ev_tally_xyz_thr(this,i,j,nlocal,NEWTON_PAIR, + 0.0,0.0,fx,fy,fz,delx,dely,delz,tid); + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLubricateOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairLubricate::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_lubricate_omp.h b/src/USER-OMP/pair_lubricate_omp.h new file mode 100644 index 0000000000..d36d190463 --- /dev/null +++ b/src/USER-OMP/pair_lubricate_omp.h @@ -0,0 +1,52 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lubricate/omp,PairLubricateOMP) + +#else + +#ifndef LMP_PAIR_LUBRICATE_OMP_H +#define LMP_PAIR_LUBRICATE_OMP_H + +#include "pair_lubricate.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLubricateOMP : public PairLubricate, public ThrOMP { + + public: + PairLubricateOMP(class LAMMPS *); + virtual ~PairLubricateOMP(); + + virtual void compute(int, int); + virtual double memory_usage(); + + protected: + class RanMars **random_thr; + + private: + template + void eval(double **f, double **torque, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_morse_omp.cpp b/src/USER-OMP/pair_morse_omp.cpp new file mode 100644 index 0000000000..a53e35a977 --- /dev/null +++ b/src/USER-OMP/pair_morse_omp.cpp @@ -0,0 +1,160 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_morse_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairMorseOMP::PairMorseOMP(LAMMPS *lmp) : + PairMorse(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairMorseOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairMorseOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r,dr,dexp,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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]) { + r = sqrt(rsq); + dr = r - r0[itype][jtype]; + dexp = exp(-alpha[itype][jtype] * dr); + fpair = factor_lj * morse1[itype][jtype] * (dexp*dexp - dexp) / r; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = d0[itype][jtype] * (dexp*dexp - 2.0*dexp) - + offset[itype][jtype]; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairMorseOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairMorse::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_morse_omp.h b/src/USER-OMP/pair_morse_omp.h new file mode 100644 index 0000000000..a966e6f11f --- /dev/null +++ b/src/USER-OMP/pair_morse_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(morse/omp,PairMorseOMP) + +#else + +#ifndef LMP_PAIR_MORSE_OMP_H +#define LMP_PAIR_MORSE_OMP_H + +#include "pair_morse.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairMorseOMP : public PairMorse, public ThrOMP { + + public: + PairMorseOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_peri_lps_omp.cpp b/src/USER-OMP/pair_peri_lps_omp.cpp new file mode 100644 index 0000000000..7cb1e83086 --- /dev/null +++ b/src/USER-OMP/pair_peri_lps_omp.cpp @@ -0,0 +1,456 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "float.h" +#include "pair_peri_lps_omp.h" +#include "fix.h" +#include "fix_peri_neigh.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "force.h" +#include "memory.h" +#include "lattice.h" +#include "modify.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairPeriLPSOMP::PairPeriLPSOMP(LAMMPS *lmp) : + PairPeriLPS(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairPeriLPSOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + // grow bond forces array if necessary + + if (atom->nmax > nmax) { + memory->destroy(s0_new); + memory->destroy(theta); + nmax = atom->nmax; + memory->create(s0_new,nmax,"pair:s0_new"); + memory->create(theta,nmax,"pair:theta"); + } + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairPeriLPSOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz; + double xtmp0,ytmp0,ztmp0,delx0,dely0,delz0,rsq0; + double rsq,r,dr,rk,evdwl,fpair,fbond; + int *ilist,*jlist,*numneigh,**firstneigh; + double d_ij,delta,stretch; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double fxtmp,fytmp,fztmp; + + double *vfrac = atom->vfrac; + double *s0 = atom->s0; + double **x0 = atom->x0; + double **r0 = ((FixPeriNeigh *) modify->fix[ifix_peri])->r0; + int **partner = ((FixPeriNeigh *) modify->fix[ifix_peri])->partner; + int *npartner = ((FixPeriNeigh *) modify->fix[ifix_peri])->npartner; + double *wvolume = ((FixPeriNeigh *) modify->fix[ifix_peri])->wvolume; + + // lc = lattice constant + // init_style guarantees it's the same in x, y, and z + + double lc = domain->lattice->xlattice; + double half_lc = 0.5*lc; + double vfrac_scale = 1.0; + + // short-range forces + + int periodic = (domain->xperiodic || domain->yperiodic || domain->zperiodic); + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + // need minimg() for x0 difference since not ghosted + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + xtmp0 = x0[i][0]; + ytmp0 = x0[i][1]; + ztmp0 = x0[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + + rsq = delx*delx + dely*dely + delz*delz; + delx0 = xtmp0 - x0[j][0]; + dely0 = ytmp0 - x0[j][1]; + delz0 = ztmp0 - x0[j][2]; + if (periodic) domain->minimum_image(delx0,dely0,delz0); + rsq0 = delx0*delx0 + dely0*dely0 + delz0*delz0; + jtype = type[j]; + + r = sqrt(rsq); + + // short-range interaction distance based on initial particle position + // 0.9 and 1.35 are constants + + d_ij = MIN(0.9*sqrt(rsq0),1.35*lc); + + // short-range contact forces + // 15 is constant taken from the EMU Theory Manual + // Silling, 12 May 2005, p 18 + + if (r < d_ij) { + dr = r - d_ij; + + // kshort based upon short-range force constant + // of the bond-based theory used in PMB model + + double kshort = (15.0 * 18.0 * bulkmodulus[itype][itype]) / + (3.141592653589793 * cutsq[itype][jtype] * cutsq[itype][jtype]); + rk = (kshort * vfrac[j]) * (dr / cut[itype][jtype]); + + if (r > 0.0) fpair = -(rk/r); + else fpair = 0.0; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) evdwl = 0.5*rk*dr; + if (EVFLAG) ev_tally_thr(this,i,j,nlocal,NEWTON_PAIR,evdwl,0.0, + fpair*vfrac[i],delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } + + // wait until all threads are done since we + // need to distribute the work differently. + sync_threads(); + +#if defined(_OPENMP) + // each thread works on a fixed chunk of atoms. + const int idelta = 1 + nlocal/comm->nthreads; + iifrom = tid*idelta; + iito = iifrom + idelta; + if (iito > nlocal) + iito = nlocal; +#else + iifrom = 0; + iito = nlocal; +#endif + + // Compute the dilatation on each particle + compute_dilatation_thr(iifrom, iito); + + // wait until all threads are done before communication + sync_threads(); + +#if defined(_OPENMP) +#pragma omp master +#endif + { // communicate dilatation (theta) of each particle + comm->forward_comm_pair(this); + // communicate wighted volume (wvolume) upon every reneighbor + if (neighbor->ago == 0) + comm->forward_comm_fix(modify->fix[ifix_peri]); + } + + sync_threads(); + + // Volume-dependent part of the energy + if (EFLAG) { + for (i = iifrom; i < iito; i++) { + itype = type[i]; + if (eflag_global) + eng_vdwl_thr[tid] += 0.5 * bulkmodulus[itype][itype] * (theta[i] * theta[i]); + if (eflag_atom) + eatom_thr[tid][i] += 0.5 * bulkmodulus[itype][itype] * (theta[i] * theta[i]); + } + } + + // loop over my particles and their partners + // partner list contains all bond partners, so I-J appears twice + // if bond already broken, skip this partner + // first = true if this is first neighbor of particle i + + bool first; + double omega_minus, omega_plus; + + for (i = iifrom; i < iito; ++i) { + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + xtmp0 = x0[i][0]; + ytmp0 = x0[i][1]; + ztmp0 = x0[i][2]; + itype = type[i]; + jnum = npartner[i]; + first = true; + + for (jj = 0; jj < jnum; jj++) { + if (partner[i][jj] == 0) continue; + j = atom->map(partner[i][jj]); + + // check if lost a partner without first breaking bond + + if (j < 0) { + partner[i][jj] = 0; + continue; + } + + // compute force density, add to PD equation of motion + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + if (periodic) domain->minimum_image(delx,dely,delz); + rsq = delx*delx + dely*dely + delz*delz; + delx0 = xtmp0 - x0[j][0]; + dely0 = ytmp0 - x0[j][1]; + delz0 = ztmp0 - x0[j][2]; + if (periodic) domain->minimum_image(delx0,dely0,delz0); + jtype = type[j]; + delta = cut[itype][jtype]; + r = sqrt(rsq); + dr = r - r0[i][jj]; + + // avoid roundoff errors + + if (fabs(dr) < 2.2204e-016) dr = 0.0; + + // scale vfrac[j] if particle j near the horizon + + if ((fabs(r0[i][jj] - delta)) <= half_lc) + vfrac_scale = (-1.0/(2*half_lc))*(r0[i][jj]) + + (1.0 + ((delta - half_lc)/(2*half_lc) ) ); + else vfrac_scale = 1.0; + + omega_plus = influence_function(-1.0*delx0,-1.0*dely0,-1.0*delz0); + omega_minus = influence_function(delx0,dely0,delz0); + rk = ( (3.0 * bulkmodulus[itype][itype]) - + (5.0 * shearmodulus[itype][itype]) ) * vfrac[j] * vfrac_scale * + ( (omega_plus * theta[i] / wvolume[i]) + + ( omega_minus * theta[j] / wvolume[j] ) ) * r0[i][jj]; + rk += 15.0 * ( shearmodulus[itype][itype] * vfrac[j] * vfrac_scale ) * + ( (omega_plus / wvolume[i]) + (omega_minus / wvolume[j]) ) * dr; + + if (r > 0.0) fbond = -(rk/r); + else fbond = 0.0; + + f[i][0] += delx*fbond; + f[i][1] += dely*fbond; + f[i][2] += delz*fbond; + + // since I-J is double counted, set newton off & use 1/2 factor and I,I + + double deviatoric_extension = dr - (theta[i]* r0[i][jj] / 3.0); + if (EFLAG) evdwl = 0.5 * 15 * (shearmodulus[itype][itype]/wvolume[i]) * + omega_plus*(deviatoric_extension * deviatoric_extension) * + vfrac[j] * vfrac_scale; + if (EVFLAG) ev_tally_thr(this,i,i,nlocal,0,0.5*evdwl,0.0, + 0.5*fbond*vfrac[i],delx,dely,delz,tid); + + // find stretch in bond I-J and break if necessary + // use s0 from previous timestep + + stretch = dr / r0[i][jj]; + if (stretch > MIN(s0[i],s0[j])) partner[i][jj] = 0; + + // update s0 for next timestep + + if (first) + s0_new[i] = s00[itype][jtype] - (alpha[itype][jtype] * stretch); + else + s0_new[i] = MAX(s0_new[i],s00[itype][jtype] - (alpha[itype][jtype] * stretch)); + + first = false; + } + } + + sync_threads(); + + // store new s0 (in parallel) + for (i = iifrom; i < iito; i++) s0[i] = s0_new[i]; +} + +/* ---------------------------------------------------------------------- */ + +void PairPeriLPSOMP::compute_dilatation_thr(int ifrom, int ito) +{ + int i,j,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz; + double xtmp0,ytmp0,ztmp0,delx0,dely0,delz0; + double rsq,r,dr; + double delta; + + double **x = atom->x; + int *type = atom->type; + double **x0 = atom->x0; + double *vfrac = atom->vfrac; + double vfrac_scale = 1.0; + + double lc = domain->lattice->xlattice; + double half_lc = 0.5*lc; + + double **r0 = ((FixPeriNeigh *) modify->fix[ifix_peri])->r0; + int **partner = ((FixPeriNeigh *) modify->fix[ifix_peri])->partner; + int *npartner = ((FixPeriNeigh *) modify->fix[ifix_peri])->npartner; + double *wvolume = ((FixPeriNeigh *) modify->fix[ifix_peri])->wvolume; + + int periodic = domain->xperiodic || domain->yperiodic || domain->zperiodic; + + // compute the dilatation theta + + for (i = ifrom; i < ito; i++) { + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + xtmp0 = x0[i][0]; + ytmp0 = x0[i][1]; + ztmp0 = x0[i][2]; + jnum = npartner[i]; + theta[i] = 0.0; + itype = type[i]; + + for (jj = 0; jj < jnum; jj++) { + + // if bond already broken, skip this partner + if (partner[i][jj] == 0) continue; + + // Look up local index of this partner particle + j = atom->map(partner[i][jj]); + + // Skip if particle is "lost" + if (j < 0) continue; + + // Compute force density and add to PD equation of motion + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + if (periodic) domain->minimum_image(delx,dely,delz); + rsq = delx*delx + dely*dely + delz*delz; + delx0 = xtmp0 - x0[j][0]; + dely0 = ytmp0 - x0[j][1]; + delz0 = ztmp0 - x0[j][2]; + if (periodic) domain->minimum_image(delx0,dely0,delz0); + + r = sqrt(rsq); + dr = r - r0[i][jj]; + if (fabs(dr) < 2.2204e-016) dr = 0.0; + + jtype = type[j]; + delta = cut[itype][jtype]; + + // scale vfrac[j] if particle j near the horizon + + if ((fabs(r0[i][jj] - delta)) <= half_lc) + vfrac_scale = (-1.0/(2*half_lc))*(r0[i][jj]) + + (1.0 + ((delta - half_lc)/(2*half_lc) ) ); + else vfrac_scale = 1.0; + + theta[i] += influence_function(delx0, dely0, delz0) * r0[i][jj] * dr * + vfrac[j] * vfrac_scale; + } + + // if wvolume[i] is zero, then particle i has no bonds + // therefore, the dilatation is set to + + if (wvolume[i] != 0.0) theta[i] = (3.0/wvolume[i]) * theta[i]; + else theta[i] = 0; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairPeriLPSOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairPeriLPS::memory_usage(); + + return bytes; +} + diff --git a/src/USER-OMP/pair_peri_lps_omp.h b/src/USER-OMP/pair_peri_lps_omp.h new file mode 100644 index 0000000000..2068830ca0 --- /dev/null +++ b/src/USER-OMP/pair_peri_lps_omp.h @@ -0,0 +1,52 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(peri/lps/omp,PairPeriLPSOMP) + +#else + +#ifndef LMP_PAIR_PERI_LPS_OMP_H +#define LMP_PAIR_PERI_LPS_OMP_H + +#include "pair_peri_lps.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairPeriLPSOMP : public PairPeriLPS, public ThrOMP { + + public: + PairPeriLPSOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + protected: + void compute_dilatation_thr(int ifrom, int ito); + + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_peri_pmb_omp.cpp b/src/USER-OMP/pair_peri_pmb_omp.cpp new file mode 100644 index 0000000000..4e46d142d9 --- /dev/null +++ b/src/USER-OMP/pair_peri_pmb_omp.cpp @@ -0,0 +1,312 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "float.h" +#include "pair_peri_pmb_omp.h" +#include "fix.h" +#include "fix_peri_neigh.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "force.h" +#include "memory.h" +#include "lattice.h" +#include "modify.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairPeriPMBOMP::PairPeriPMBOMP(LAMMPS *lmp) : + PairPeriPMB(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairPeriPMBOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + + // grow bond forces array if necessary + + if (atom->nmax > nmax) { + memory->destroy(s0_new); + nmax = atom->nmax; + memory->create(s0_new,nmax,"pair:s0_new"); + } + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairPeriPMBOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz; + double xtmp0,ytmp0,ztmp0,delx0,dely0,delz0,rsq0; + double rsq,r,dr,rk,evdwl,fpair,fbond; + int *ilist,*jlist,*numneigh,**firstneigh; + double d_ij,delta,stretch; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double fxtmp,fytmp,fztmp; + + double *vfrac = atom->vfrac; + double *s0 = atom->s0; + double **x0 = atom->x0; + double **r0 = ((FixPeriNeigh *) modify->fix[ifix_peri])->r0; + int **partner = ((FixPeriNeigh *) modify->fix[ifix_peri])->partner; + int *npartner = ((FixPeriNeigh *) modify->fix[ifix_peri])->npartner; + + // lc = lattice constant + // init_style guarantees it's the same in x, y, and z + + double lc = domain->lattice->xlattice; + double half_lc = 0.5*lc; + double vfrac_scale = 1.0; + + // short-range forces + + int periodic = (domain->xperiodic || domain->yperiodic || domain->zperiodic); + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + // need minimg() for x0 difference since not ghosted + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + xtmp0 = x0[i][0]; + ytmp0 = x0[i][1]; + ztmp0 = x0[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + delx0 = xtmp0 - x0[j][0]; + dely0 = ytmp0 - x0[j][1]; + delz0 = ztmp0 - x0[j][2]; + if (periodic) domain->minimum_image(delx0,dely0,delz0); + rsq0 = delx0*delx0 + dely0*dely0 + delz0*delz0; + jtype = type[j]; + + r = sqrt(rsq); + + // short-range interaction distance based on initial particle position + // 0.9 and 1.35 are constants + + d_ij = MIN(0.9*sqrt(rsq0),1.35*lc); + + // short-range contact forces + // 15 is constant taken from the EMU Theory Manual + // Silling, 12 May 2005, p 18 + + if (r < d_ij) { + dr = r - d_ij; + + rk = (15.0 * kspring[itype][jtype] * vfrac[j]) * + (dr / cut[itype][jtype]); + if (r > 0.0) fpair = -(rk/r); + else fpair = 0.0; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) evdwl = 0.5*rk*dr; + if (EVFLAG) ev_tally_thr(this,i,j,nlocal,NEWTON_PAIR,evdwl,0.0, + fpair*vfrac[i],delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } + + // wait until all threads are done since we + // need to distribute the work differently. + sync_threads(); + +#if defined(_OPENMP) + // each thread works on a fixed chunk of atoms. + const int idelta = 1 + nlocal/comm->nthreads; + iifrom = tid*idelta; + iito = iifrom + idelta; + if (iito > nlocal) + iito = nlocal; +#else + iifrom = 0; + iito = nlocal; +#endif + + // loop over my particles and their partners + // partner list contains all bond partners, so I-J appears twice + // if bond already broken, skip this partner + // first = true if this is first neighbor of particle i + + bool first; + + for (i = iifrom; i < iito; ++i) { + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jnum = npartner[i]; + s0_new[i] = DBL_MAX; + first = true; + + for (jj = 0; jj < jnum; jj++) { + if (partner[i][jj] == 0) continue; + j = atom->map(partner[i][jj]); + + // check if lost a partner without first breaking bond + + if (j < 0) { + partner[i][jj] = 0; + continue; + } + + // compute force density, add to PD equation of motion + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + if (periodic) domain->minimum_image(delx,dely,delz); + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + delta = cut[itype][jtype]; + r = sqrt(rsq); + dr = r - r0[i][jj]; + + // avoid roundoff errors + + if (fabs(dr) < 2.2204e-016) dr = 0.0; + + // scale vfrac[j] if particle j near the horizon + + if ((fabs(r0[i][jj] - delta)) <= half_lc) + vfrac_scale = (-1.0/(2*half_lc))*(r0[i][jj]) + + (1.0 + ((delta - half_lc)/(2*half_lc) ) ); + else vfrac_scale = 1.0; + + stretch = dr / r0[i][jj]; + rk = (kspring[itype][jtype] * vfrac[j]) * vfrac_scale * stretch; + if (r > 0.0) fbond = -(rk/r); + else fbond = 0.0; + + f[i][0] += delx*fbond; + f[i][1] += dely*fbond; + f[i][2] += delz*fbond; + + // since I-J is double counted, set newton off & use 1/2 factor and I,I + + if (EFLAG) evdwl = 0.5*rk*dr; + if (EVFLAG) + ev_tally_thr(this,i,i,nlocal,0,0.5*evdwl,0.0, + 0.5*fbond*vfrac[i],delx,dely,delz,tid); + + // find stretch in bond I-J and break if necessary + // use s0 from previous timestep + + if (stretch > MIN(s0[i],s0[j])) partner[i][jj] = 0; + + // update s0 for next timestep + + if (first) + s0_new[i] = s00[itype][jtype] - (alpha[itype][jtype] * stretch); + else + s0_new[i] = MAX(s0_new[i],s00[itype][jtype] - (alpha[itype][jtype] * stretch)); + first = false; + } + } + + sync_threads(); + + // store new s0 + for (i = iifrom; i < iito; i++) s0[i] = s0_new[i]; +} + +/* ---------------------------------------------------------------------- */ + +double PairPeriPMBOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairPeriPMB::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_peri_pmb_omp.h b/src/USER-OMP/pair_peri_pmb_omp.h new file mode 100644 index 0000000000..9940e5ed15 --- /dev/null +++ b/src/USER-OMP/pair_peri_pmb_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(peri/pmb/omp,PairPeriPMBOMP) + +#else + +#ifndef LMP_PAIR_PERI_PMB_OMP_H +#define LMP_PAIR_PERI_PMB_OMP_H + +#include "pair_peri_pmb.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairPeriPMBOMP : public PairPeriPMB, public ThrOMP { + + public: + PairPeriPMBOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_resquared_omp.cpp b/src/USER-OMP/pair_resquared_omp.cpp new file mode 100644 index 0000000000..4870553050 --- /dev/null +++ b/src/USER-OMP/pair_resquared_omp.cpp @@ -0,0 +1,210 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_resquared_omp.h" +#include "math_extra.h" +#include "atom.h" +#include "comm.h" +#include "atom_vec_ellipsoid.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairRESquaredOMP::PairRESquaredOMP(LAMMPS *lmp) : + PairRESquared(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairRESquaredOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f, **torque; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + torque = atom->torque + tid*nall; + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, torque, ifrom, ito, tid); + else eval<1,1,0>(f, torque, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, torque, ifrom, ito, tid); + else eval<1,0,0>(f, torque, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, torque, ifrom, ito, tid); + else eval<0,0,0>(f, torque, ifrom, ito, tid); + } + + // reduce per thread forces and torques into global arrays. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + data_reduce_thr(&(atom->torque[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairRESquaredOMP::eval(double **f, double **tor, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double evdwl,one_eng,rsq,r2inv,r6inv,forcelj,factor_lj; + double fforce[3],ttor[3],rtor[3],r12[3]; + int *ilist,*jlist,*numneigh,**firstneigh; + RE2Vars wi,wj; + + double **x = atom->x; + int *ellipsoid = atom->ellipsoid; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + + double fxtmp,fytmp,fztmp,t1tmp,t2tmp,t3tmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + itype = type[i]; + + // not a LJ sphere + + if (lshape[itype] != 0.0) precompute_i(i,wi); + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + // r12 = center to center vector + + r12[0] = x[j][0]-x[i][0]; + r12[1] = x[j][1]-x[i][1]; + r12[2] = x[j][2]-x[i][2]; + rsq = MathExtra::dot3(r12,r12); + jtype = type[j]; + + // compute if less than cutoff + + if (rsq < cutsq[itype][jtype]) { + switch (form[itype][jtype]) { + + case SPHERE_SPHERE: + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + forcelj *= -r2inv; + if (EFLAG) one_eng = + r6inv*(r6inv*lj3[itype][jtype]-lj4[itype][jtype]) - + offset[itype][jtype]; + fforce[0] = r12[0]*forcelj; + fforce[1] = r12[1]*forcelj; + fforce[2] = r12[2]*forcelj; + break; + + case SPHERE_ELLIPSE: + precompute_i(j,wj); + if (NEWTON_PAIR || j < nlocal) { + one_eng = resquared_lj(j,i,wj,r12,rsq,fforce,rtor,true); + tor[j][0] += rtor[0]*factor_lj; + tor[j][1] += rtor[1]*factor_lj; + tor[j][2] += rtor[2]*factor_lj; + } else + one_eng = resquared_lj(j,i,wj,r12,rsq,fforce,rtor,false); + break; + + case ELLIPSE_SPHERE: + one_eng = resquared_lj(i,j,wi,r12,rsq,fforce,ttor,true); + tor[i][0] += ttor[0]*factor_lj; + tor[i][1] += ttor[1]*factor_lj; + tor[i][2] += ttor[2]*factor_lj; + break; + + default: + precompute_i(j,wj); + one_eng = resquared_analytic(i,j,wi,wj,r12,rsq,fforce,ttor,rtor); + tor[i][0] += ttor[0]*factor_lj; + tor[i][1] += ttor[1]*factor_lj; + tor[i][2] += ttor[2]*factor_lj; + if (NEWTON_PAIR || j < nlocal) { + tor[j][0] += rtor[0]*factor_lj; + tor[j][1] += rtor[1]*factor_lj; + tor[j][2] += rtor[2]*factor_lj; + } + break; + } + + fforce[0] *= factor_lj; + fforce[1] *= factor_lj; + fforce[2] *= factor_lj; + f[i][0] += fforce[0]; + f[i][1] += fforce[1]; + f[i][2] += fforce[2]; + + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= fforce[0]; + f[j][1] -= fforce[1]; + f[j][2] -= fforce[2]; + } + + if (EFLAG) evdwl = factor_lj*one_eng; + + if (EVFLAG) ev_tally_xyz_thr(this,i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fforce[0],fforce[1],fforce[2], + -r12[0],-r12[1],-r12[2],tid); + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +double PairRESquaredOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairRESquared::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_resquared_omp.h b/src/USER-OMP/pair_resquared_omp.h new file mode 100644 index 0000000000..2a50bb6dd0 --- /dev/null +++ b/src/USER-OMP/pair_resquared_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(resquared/omp,PairRESquaredOMP) + +#else + +#ifndef LMP_PAIR_RESQUARED_OMP_H +#define LMP_PAIR_RESQUARED_OMP_H + +#include "pair_resquared.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairRESquaredOMP : public PairRESquared, public ThrOMP { + + public: + PairRESquaredOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, double **torque, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_soft_omp.cpp b/src/USER-OMP/pair_soft_omp.cpp new file mode 100644 index 0000000000..9f9673a28b --- /dev/null +++ b/src/USER-OMP/pair_soft_omp.cpp @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_soft_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define SMALL 1.0e-4 + +/* ---------------------------------------------------------------------- */ + +PairSoftOMP::PairSoftOMP(LAMMPS *lmp) : + PairSoft(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairSoftOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairSoftOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double r,rsq,arg,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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]) { + r = sqrt(rsq); + arg = MY_PI/cut[itype][jtype]; + if (r > SMALL) fpair = factor_lj * prefactor[itype][jtype] * + sin(arg*r) * arg/r; + else fpair = 0.0; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) + evdwl = factor_lj * prefactor[itype][jtype] * (1.0+cos(arg*r)); + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairSoftOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairSoft::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_soft_omp.h b/src/USER-OMP/pair_soft_omp.h new file mode 100644 index 0000000000..840d874601 --- /dev/null +++ b/src/USER-OMP/pair_soft_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(soft/omp,PairSoftOMP) + +#else + +#ifndef LMP_PAIR_SOFT_OMP_H +#define LMP_PAIR_SOFT_OMP_H + +#include "pair_soft.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairSoftOMP : public PairSoft, public ThrOMP { + + public: + PairSoftOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_sw_omp.cpp b/src/USER-OMP/pair_sw_omp.cpp new file mode 100644 index 0000000000..5d7f1a60d7 --- /dev/null +++ b/src/USER-OMP/pair_sw_omp.cpp @@ -0,0 +1,212 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_sw_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairSWOMP::PairSWOMP(LAMMPS *lmp) : + PairSW(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairSWOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + eval<1,1>(f, ifrom, ito, tid); + } else { + eval<1,0>(f, ifrom, ito, tid); + } + } else eval<0,0>(f, ifrom, ito, tid); + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairSWOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,k,ii,jj,kk,jnum,jnumm1,itag,jtag; + int itype,jtype,ktype,ijparam,ikparam,ijkparam; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,rsq1,rsq2; + double delr1[3],delr2[3],fj[3],fk[3]; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *tag = atom->tag; + int *type = atom->type; + int nlocal = atom->nlocal; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + double fxtmp,fytmp,fztmp; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + itag = tag[i]; + itype = map[type[i]]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + fxtmp = fytmp = fztmp = 0.0; + + // two-body interactions, skip half of them + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtag = tag[j]; + + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp && x[j][1] < ytmp) continue; + if (x[j][2] == ztmp && x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + + jtype = map[type[j]]; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + ijparam = elem2param[itype][jtype][jtype]; + if (rsq > params[ijparam].cutsq) continue; + + twobody(¶ms[ijparam],rsq,fpair,EFLAG,evdwl); + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + + if (EVFLAG) ev_tally_thr(this,i,j,nlocal,/* newton_pair */ 1, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + + jnumm1 = jnum - 1; + + for (jj = 0; jj < jnumm1; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = map[type[j]]; + ijparam = elem2param[itype][jtype][jtype]; + delr1[0] = x[j][0] - xtmp; + delr1[1] = x[j][1] - ytmp; + delr1[2] = x[j][2] - ztmp; + rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2]; + if (rsq1 > params[ijparam].cutsq) continue; + + double fjxtmp,fjytmp,fjztmp; + fjxtmp = fjytmp = fjztmp = 0.0; + + for (kk = jj+1; kk < jnum; kk++) { + k = jlist[kk]; + k &= NEIGHMASK; + ktype = map[type[k]]; + ikparam = elem2param[itype][ktype][ktype]; + ijkparam = elem2param[itype][jtype][ktype]; + + delr2[0] = x[k][0] - xtmp; + delr2[1] = x[k][1] - ytmp; + delr2[2] = x[k][2] - ztmp; + rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2]; + if (rsq2 > params[ikparam].cutsq) continue; + + threebody(¶ms[ijparam],¶ms[ikparam],¶ms[ijkparam], + rsq1,rsq2,delr1,delr2,fj,fk,EFLAG,evdwl); + + fxtmp -= fj[0] + fk[0]; + fytmp -= fj[1] + fk[1]; + fztmp -= fj[2] + fk[2]; + fjxtmp += fj[0]; + fjytmp += fj[1]; + fjztmp += fj[2]; + f[k][0] += fk[0]; + f[k][1] += fk[1]; + f[k][2] += fk[2]; + + if (EVFLAG) ev_tally3_thr(this,i,j,k,evdwl,0.0,fj,fk,delr1,delr2,tid); + } + f[j][0] += fjxtmp; + f[j][1] += fjytmp; + f[j][2] += fjztmp; + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairSWOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairSW::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_sw_omp.h b/src/USER-OMP/pair_sw_omp.h new file mode 100644 index 0000000000..40052d7d41 --- /dev/null +++ b/src/USER-OMP/pair_sw_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(sw/omp,PairSWOMP) + +#else + +#ifndef LMP_PAIR_SW_OMP_H +#define LMP_PAIR_SW_OMP_H + +#include "pair_sw.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairSWOMP : public PairSW, public ThrOMP { + + public: + PairSWOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_table_omp.cpp b/src/USER-OMP/pair_table_omp.cpp new file mode 100644 index 0000000000..6b14d4c981 --- /dev/null +++ b/src/USER-OMP/pair_table_omp.cpp @@ -0,0 +1,202 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_table_omp.h" +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairTableOMP::PairTableOMP(LAMMPS *lmp) : + PairTable(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairTableOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairTableOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype,itable; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,factor_lj,fraction,value,a,b; + int *ilist,*jlist,*numneigh,**firstneigh; + Table *tb; + + union_int_float_t rsq_lookup; + int tlm1 = tablength - 1; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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]) { + tb = &tables[tabindex[itype][jtype]]; + if (rsq < tb->innersq) + error->one(FLERR,"Pair distance < table inner cutoff"); + + if (tabstyle == LOOKUP) { + itable = static_cast ((rsq - tb->innersq) * tb->invdelta); + if (itable >= tlm1) + error->one(FLERR,"Pair distance > table outer cutoff"); + fpair = factor_lj * tb->f[itable]; + } else if (tabstyle == LINEAR) { + itable = static_cast ((rsq - tb->innersq) * tb->invdelta); + if (itable >= tlm1) + error->one(FLERR,"Pair distance > table outer cutoff"); + fraction = (rsq - tb->rsq[itable]) * tb->invdelta; + value = tb->f[itable] + fraction*tb->df[itable]; + fpair = factor_lj * value; + } else if (tabstyle == SPLINE) { + itable = static_cast ((rsq - tb->innersq) * tb->invdelta); + if (itable >= tlm1) + error->one(FLERR,"Pair distance > table outer cutoff"); + b = (rsq - tb->rsq[itable]) * tb->invdelta; + a = 1.0 - b; + value = a * tb->f[itable] + b * tb->f[itable+1] + + ((a*a*a-a)*tb->f2[itable] + (b*b*b-b)*tb->f2[itable+1]) * + tb->deltasq6; + fpair = factor_lj * value; + } else { + rsq_lookup.f = rsq; + itable = rsq_lookup.i & tb->nmask; + itable >>= tb->nshiftbits; + fraction = (rsq_lookup.f - tb->rsq[itable]) * tb->drsq[itable]; + value = tb->f[itable] + fraction*tb->df[itable]; + fpair = factor_lj * value; + } + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + if (tabstyle == LOOKUP) + evdwl = tb->e[itable]; + else if (tabstyle == LINEAR || tabstyle == BITMAP) + evdwl = tb->e[itable] + fraction*tb->de[itable]; + else + evdwl = a * tb->e[itable] + b * tb->e[itable+1] + + ((a*a*a-a)*tb->e2[itable] + (b*b*b-b)*tb->e2[itable+1]) * + tb->deltasq6; + evdwl *= factor_lj; + } + + if (EVFLAG) ev_tally_thr(this,i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairTableOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairTable::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_table_omp.h b/src/USER-OMP/pair_table_omp.h new file mode 100644 index 0000000000..6fd1ce74a4 --- /dev/null +++ b/src/USER-OMP/pair_table_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(table/omp,PairTableOMP) + +#else + +#ifndef LMP_PAIR_TABLE_OMP_H +#define LMP_PAIR_TABLE_OMP_H + +#include "pair_table.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairTableOMP : public PairTable, public ThrOMP { + + public: + PairTableOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_tersoff_omp.cpp b/src/USER-OMP/pair_tersoff_omp.cpp new file mode 100644 index 0000000000..f59a8488f7 --- /dev/null +++ b/src/USER-OMP/pair_tersoff_omp.cpp @@ -0,0 +1,252 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_tersoff_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairTersoffOMP::PairTersoffOMP(LAMMPS *lmp) : + PairTersoff(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairTersoffOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = vflag_atom = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (vflag_atom) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (vflag_atom) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else eval<0,0,0>(f, ifrom, ito, tid); + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairTersoffOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,k,ii,jj,kk,jnum; + int itag,jtag,itype,jtype,ktype,iparam_ij,iparam_ijk; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,rsq1,rsq2; + double delr1[3],delr2[3],fi[3],fj[3],fk[3]; + double zeta_ij,prefactor; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *tag = atom->tag; + int *type = atom->type; + int nlocal = atom->nlocal; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + double fxtmp,fytmp,fztmp; + + // loop over full neighbor list of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + itag = tag[i]; + itype = map[type[i]]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + fxtmp = fytmp = fztmp = 0.0; + + // two-body interactions, skip half of them + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtag = tag[j]; + + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp && x[j][1] < ytmp) continue; + if (x[j][2] == ztmp && x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + + jtype = map[type[j]]; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + iparam_ij = elem2param[itype][jtype][jtype]; + if (rsq > params[iparam_ij].cutsq) continue; + + repulsive(¶ms[iparam_ij],rsq,fpair,EFLAG,evdwl); + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + + if (EVFLAG) ev_tally_thr(this,i,j,nlocal,/* newton_pair */ 1, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + + // three-body interactions + // skip immediately if I-J is not within cutoff + double fjxtmp,fjytmp,fjztmp; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = map[type[j]]; + iparam_ij = elem2param[itype][jtype][jtype]; + + delr1[0] = x[j][0] - xtmp; + delr1[1] = x[j][1] - ytmp; + delr1[2] = x[j][2] - ztmp; + rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2]; + if (rsq1 > params[iparam_ij].cutsq) continue; + + // accumulate bondorder zeta for each i-j interaction via loop over k + + fjxtmp = fjytmp = fjztmp = 0.0; + zeta_ij = 0.0; + + for (kk = 0; kk < jnum; kk++) { + if (jj == kk) continue; + k = jlist[kk]; + k &= NEIGHMASK; + ktype = map[type[k]]; + iparam_ijk = elem2param[itype][jtype][ktype]; + + delr2[0] = x[k][0] - xtmp; + delr2[1] = x[k][1] - ytmp; + delr2[2] = x[k][2] - ztmp; + rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2]; + if (rsq2 > params[iparam_ijk].cutsq) continue; + + zeta_ij += zeta(¶ms[iparam_ijk],rsq1,rsq2,delr1,delr2); + } + + // pairwise force due to zeta + + force_zeta(¶ms[iparam_ij],rsq1,zeta_ij,fpair,prefactor,EFLAG,evdwl); + + fxtmp += delr1[0]*fpair; + fytmp += delr1[1]*fpair; + fztmp += delr1[2]*fpair; + fjxtmp -= delr1[0]*fpair; + fjytmp -= delr1[1]*fpair; + fjztmp -= delr1[2]*fpair; + + if (EVFLAG) ev_tally_thr(this,i,j,nlocal,/* newton_pair */ 1,evdwl,0.0, + -fpair,-delr1[0],-delr1[1],-delr1[2],tid); + + // attractive term via loop over k + + for (kk = 0; kk < jnum; kk++) { + if (jj == kk) continue; + k = jlist[kk]; + k &= NEIGHMASK; + ktype = map[type[k]]; + iparam_ijk = elem2param[itype][jtype][ktype]; + + delr2[0] = x[k][0] - xtmp; + delr2[1] = x[k][1] - ytmp; + delr2[2] = x[k][2] - ztmp; + rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2]; + if (rsq2 > params[iparam_ijk].cutsq) continue; + + attractive(¶ms[iparam_ijk],prefactor, + rsq1,rsq2,delr1,delr2,fi,fj,fk); + + fxtmp += fi[0]; + fytmp += fi[1]; + fztmp += fi[2]; + fjxtmp += fj[0]; + fjytmp += fj[1]; + fjztmp += fj[2]; + f[k][0] += fk[0]; + f[k][1] += fk[1]; + f[k][2] += fk[2]; + + if (VFLAG_ATOM) v_tally3_thr(i,j,k,fj,fk,delr1,delr2,tid); + } + f[j][0] += fjxtmp; + f[j][1] += fjytmp; + f[j][2] += fjztmp; + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairTersoffOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairTersoff::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_tersoff_omp.h b/src/USER-OMP/pair_tersoff_omp.h new file mode 100644 index 0000000000..5e5dc066d2 --- /dev/null +++ b/src/USER-OMP/pair_tersoff_omp.h @@ -0,0 +1,43 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(tersoff/omp,PairTersoffOMP) + +#else + +#ifndef LMP_PAIR_TERSOFF_OMP_H +#define LMP_PAIR_TERSOFF_OMP_H + +#include "pair_tersoff.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairTersoffOMP : public PairTersoff, public ThrOMP { + + public: + PairTersoffOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_tersoff_zbl_omp.cpp b/src/USER-OMP/pair_tersoff_zbl_omp.cpp new file mode 100644 index 0000000000..4265d84fb7 --- /dev/null +++ b/src/USER-OMP/pair_tersoff_zbl_omp.cpp @@ -0,0 +1,296 @@ +/* ---------------------------------------------------------------------- + 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: Aidan Thompson (SNL) - original Tersoff implementation + David Farrell (NWU) - ZBL addition +------------------------------------------------------------------------- */ + +#include "math.h" +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "pair_tersoff_zbl_omp.h" +#include "atom.h" +#include "update.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "force.h" +#include "comm.h" +#include "memory.h" +#include "error.h" + +#include "math_const.h" +using namespace LAMMPS_NS; +using namespace MathConst; + +#define MAXLINE 1024 +#define DELTA 4 + +/* ---------------------------------------------------------------------- + Fermi-like smoothing function +------------------------------------------------------------------------- */ + +static double F_fermi(const double r, const double expsc, const double cut) +{ + return 1.0 / (1.0 + exp(-expsc*(r-cut))); +} + +/* ---------------------------------------------------------------------- + Fermi-like smoothing function derivative with respect to r +------------------------------------------------------------------------- */ + +static double F_fermi_d(const double r, const double expsc, const double cut) +{ + return expsc*exp(-expsc*(r-cut)) / pow(1.0 + exp(-expsc*(r-cut)),2.0); +} + +/* ---------------------------------------------------------------------- */ + +PairTersoffZBLOMP::PairTersoffZBLOMP(LAMMPS *lmp) : PairTersoffOMP(lmp) +{ + // hard-wired constants in metal or real units + // a0 = Bohr radius + // epsilon0 = permittivity of vacuum = q / energy-distance units + // e = unit charge + // 1 Kcal/mole = 0.043365121 eV + + if (strcmp(update->unit_style,"metal") == 0) { + global_a_0 = 0.529; + global_epsilon_0 = 0.00552635; + global_e = 1.0; + } else if (strcmp(update->unit_style,"real") == 0) { + global_a_0 = 0.529; + global_epsilon_0 = 0.00552635 * 0.043365121; + global_e = 1.0; + } else error->all(FLERR,"Pair tersoff/zbl requires metal or real units"); +} + +/* ---------------------------------------------------------------------- */ + +void PairTersoffZBLOMP::read_file(char *file) +{ + int params_per_line = 21; + char **words = new char*[params_per_line+1]; + + delete [] params; + params = NULL; + nparams = 0; + + // open file on proc 0 + + FILE *fp; + if (comm->me == 0) { + fp = fopen(file,"r"); + if (fp == NULL) { + char str[128]; + sprintf(str,"Cannot open Tersoff potential file %s",file); + error->one(FLERR,str); + } + } + + // read each line out of file, skipping blank lines or leading '#' + // store line of params if all 3 element tags are in element list + + int n,nwords,ielement,jelement,kelement; + char line[MAXLINE],*ptr; + int eof = 0; + + while (1) { + if (comm->me == 0) { + ptr = fgets(line,MAXLINE,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + + // strip comment, skip line if blank + + if (ptr = strchr(line,'#')) *ptr = '\0'; + nwords = atom->count_words(line); + if (nwords == 0) continue; + + // concatenate additional lines until have params_per_line words + + while (nwords < params_per_line) { + n = strlen(line); + if (comm->me == 0) { + ptr = fgets(&line[n],MAXLINE-n,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + if (ptr = strchr(line,'#')) *ptr = '\0'; + nwords = atom->count_words(line); + } + + if (nwords != params_per_line) + error->all(FLERR,"Incorrect format in Tersoff potential file"); + + // words = ptrs to all words in line + + nwords = 0; + words[nwords++] = strtok(line," \t\n\r\f"); + while (words[nwords++] = strtok(NULL," \t\n\r\f")) continue; + + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next line + + for (ielement = 0; ielement < nelements; ielement++) + if (strcmp(words[0],elements[ielement]) == 0) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (strcmp(words[1],elements[jelement]) == 0) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (strcmp(words[2],elements[kelement]) == 0) break; + if (kelement == nelements) continue; + + // load up parameter settings and error check their values + + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } + + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].powerm = atof(words[3]); + params[nparams].gamma = atof(words[4]); + params[nparams].lam3 = atof(words[5]); + params[nparams].c = atof(words[6]); + params[nparams].d = atof(words[7]); + params[nparams].h = atof(words[8]); + params[nparams].powern = atof(words[9]); + params[nparams].beta = atof(words[10]); + params[nparams].lam2 = atof(words[11]); + params[nparams].bigb = atof(words[12]); + params[nparams].bigr = atof(words[13]); + params[nparams].bigd = atof(words[14]); + params[nparams].lam1 = atof(words[15]); + params[nparams].biga = atof(words[16]); + params[nparams].Z_i = atof(words[17]); + params[nparams].Z_j = atof(words[18]); + params[nparams].ZBLcut = atof(words[19]); + params[nparams].ZBLexpscale = atof(words[20]); + + // currently only allow m exponent of 1 or 3 + + params[nparams].powermint = int(params[nparams].powerm); + + if ( + params[nparams].lam3 < 0.0 || params[nparams].c < 0.0 || + params[nparams].d < 0.0 || params[nparams].powern < 0.0 || + params[nparams].beta < 0.0 || params[nparams].lam2 < 0.0 || + params[nparams].bigb < 0.0 || params[nparams].bigr < 0.0 || + params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].lam3 < 0.0 || params[nparams].biga < 0.0 || + params[nparams].powerm - params[nparams].powermint != 0.0 || + (params[nparams].powermint != 3 && params[nparams].powermint != 1) || + params[nparams].gamma < 0.0 || + params[nparams].Z_i < 1.0 || params[nparams].Z_j < 1.0 || + params[nparams].ZBLcut < 0.0 || params[nparams].ZBLexpscale < 0.0) + error->all(FLERR,"Illegal Tersoff parameter"); + + nparams++; + } + + delete [] words; +} + +/* ---------------------------------------------------------------------- */ + +void PairTersoffZBLOMP::force_zeta(Param *param, double rsq, double zeta_ij, + double &fforce, double &prefactor, + int eflag, double &eng) +{ + double r,fa,fa_d,bij; + + r = sqrt(rsq); + + fa = (r > param->bigr + param->bigd) ? 0.0 : + -param->bigb * exp(-param->lam2 * r) * ters_fc(r,param) * + F_fermi(r,param->ZBLexpscale,param->ZBLcut); + + fa_d = (r > param->bigr + param->bigd) ? 0.0 : + param->bigb * exp(-param->lam2 * r) * + (param->lam2 * ters_fc(r,param) * + F_fermi(r,param->ZBLexpscale,param->ZBLcut) - + ters_fc_d(r,param) * F_fermi(r,param->ZBLexpscale,param->ZBLcut) + - ters_fc(r,param) * F_fermi_d(r,param->ZBLexpscale,param->ZBLcut)); + + bij = ters_bij(zeta_ij,param); + fforce = 0.5*bij*fa_d / r; + prefactor = -0.5*fa * ters_bij_d(zeta_ij,param); + if (eflag) eng = 0.5*bij*fa; +} + +/* ---------------------------------------------------------------------- */ + +void PairTersoffZBLOMP::repulsive(Param *param, double rsq, double &fforce, + int eflag, double &eng) +{ + double r,tmp_fc,tmp_fc_d,tmp_exp; + + // Tersoff repulsive portion + + r = sqrt(rsq); + tmp_fc = ters_fc(r,param); + tmp_fc_d = ters_fc_d(r,param); + tmp_exp = exp(-param->lam1 * r); + double fforce_ters = param->biga * tmp_exp * (tmp_fc_d - tmp_fc*param->lam1); + double eng_ters = tmp_fc * param->biga * tmp_exp; + + // ZBL repulsive portion + + double esq = pow(global_e,2.0); + double a_ij = (0.8854*global_a_0) / + (pow(param->Z_i,0.23) + pow(param->Z_j,0.23)); + double premult = (param->Z_i * param->Z_j * esq)/(4.0*MY_PI*global_epsilon_0); + double r_ov_a = r/a_ij; + double phi = 0.1818*exp(-3.2*r_ov_a) + 0.5099*exp(-0.9423*r_ov_a) + + 0.2802*exp(-0.4029*r_ov_a) + 0.02817*exp(-0.2016*r_ov_a); + double dphi = (1.0/a_ij) * (-3.2*0.1818*exp(-3.2*r_ov_a) - + 0.9423*0.5099*exp(-0.9423*r_ov_a) - + 0.4029*0.2802*exp(-0.4029*r_ov_a) - + 0.2016*0.02817*exp(-0.2016*r_ov_a)); + double fforce_ZBL = premult*-pow(r,-2.0)* phi + premult*pow(r,-1.0)*dphi; + double eng_ZBL = premult*(1.0/r)*phi; + + // combine two parts with smoothing by Fermi-like function + + fforce = -(-F_fermi_d(r,param->ZBLexpscale,param->ZBLcut) * eng_ZBL + + (1.0 - F_fermi(r,param->ZBLexpscale,param->ZBLcut))*fforce_ZBL + + F_fermi_d(r,param->ZBLexpscale,param->ZBLcut)*eng_ters + + F_fermi(r,param->ZBLexpscale,param->ZBLcut)*fforce_ters) / r; + + if (eflag) + eng = (1.0 - F_fermi(r,param->ZBLexpscale,param->ZBLcut))*eng_ZBL + + F_fermi(r,param->ZBLexpscale,param->ZBLcut)*eng_ters; +} + diff --git a/src/USER-OMP/pair_tersoff_zbl_omp.h b/src/USER-OMP/pair_tersoff_zbl_omp.h new file mode 100644 index 0000000000..84d6ef1135 --- /dev/null +++ b/src/USER-OMP/pair_tersoff_zbl_omp.h @@ -0,0 +1,45 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(tersoff/zbl/omp,PairTersoffZBLOMP) + +#else + +#ifndef LMP_PAIR_TERSOFF_ZBL_OMP_H +#define LMP_PAIR_TERSOFF_ZBL_OMP_H + +#include "pair_tersoff_omp.h" + +namespace LAMMPS_NS { + +class PairTersoffZBLOMP : public PairTersoffOMP { + public: + PairTersoffZBLOMP(class LAMMPS *); + virtual ~PairTersoffZBLOMP() {} + + protected: + double global_a_0; // Bohr radius for Coulomb repulsion + double global_epsilon_0; // permittivity of vacuum for Coulomb repulsion + double global_e; // proton charge (negative of electron charge) + + virtual void read_file(char *); + virtual void repulsive(Param *, double, double &, int, double &); + virtual void force_zeta(Param *, double, double, double &, double &, int, double &); + +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_yukawa_colloid_omp.cpp b/src/USER-OMP/pair_yukawa_colloid_omp.cpp new file mode 100644 index 0000000000..710ad9df18 --- /dev/null +++ b/src/USER-OMP/pair_yukawa_colloid_omp.cpp @@ -0,0 +1,164 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_yukawa_colloid_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairYukawaColloidOMP::PairYukawaColloidOMP(LAMMPS *lmp) : + PairYukawaColloid(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairYukawaColloidOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairYukawaColloidOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair,radi,radj; + double rsq,r,rinv,r2inv,screening,forceyukawa,factor; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + radi = radius[i]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor = special_lj[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; + radj = radius[j]; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0/rsq; + r = sqrt(rsq); + rinv = 1.0/r; + screening = exp(-kappa*(r-(radi+radj))); + forceyukawa = a[itype][jtype] * screening; + + fpair = factor*forceyukawa * rinv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = a[itype][jtype]/kappa * screening - offset[itype][jtype]; + evdwl *= factor; + } + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairYukawaColloidOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairYukawaColloid::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_yukawa_colloid_omp.h b/src/USER-OMP/pair_yukawa_colloid_omp.h new file mode 100644 index 0000000000..9483cd15c1 --- /dev/null +++ b/src/USER-OMP/pair_yukawa_colloid_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(yukawa/colloid/omp,PairYukawaColloidOMP) + +#else + +#ifndef LMP_PAIR_YUKAWA_COLLOID_OMP_H +#define LMP_PAIR_YUKAWA_COLLOID_OMP_H + +#include "pair_yukawa_colloid.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairYukawaColloidOMP : public PairYukawaColloid, public ThrOMP { + + public: + PairYukawaColloidOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pair_yukawa_omp.cpp b/src/USER-OMP/pair_yukawa_omp.cpp new file mode 100644 index 0000000000..1380e2239c --- /dev/null +++ b/src/USER-OMP/pair_yukawa_omp.cpp @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "pair_yukawa_omp.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairYukawaOMP::PairYukawaOMP(LAMMPS *lmp) : + PairYukawa(lmp), ThrOMP(lmp, PAIR) +{ + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairYukawaOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + ev_setup_thr(this); + } else evflag = vflag_fdotr = 0; + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(shared) +#endif + { + int ifrom, ito, tid; + double **f; + + f = loop_setup_thr(atom->f, ifrom, ito, tid, inum, nall, nthreads); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(f, ifrom, ito, tid); + else eval<1,1,0>(f, ifrom, ito, tid); + } else { + if (force->newton_pair) eval<1,0,1>(f, ifrom, ito, tid); + else eval<1,0,0>(f, ifrom, ito, tid); + } + } else { + if (force->newton_pair) eval<0,0,1>(f, ifrom, ito, tid); + else eval<0,0,0>(f, ifrom, ito, tid); + } + + // reduce per thread forces into global force array. + data_reduce_thr(&(atom->f[0][0]), nall, nthreads, 3, tid); + } // end of omp parallel region + + // reduce per thread energy and virial, if requested. + if (evflag) ev_reduce_thr(this); + if (vflag_fdotr) virial_fdotr_compute(); +} + +template +void PairYukawaOMP::eval(double **f, int iifrom, int iito, int tid) +{ + int i,j,ii,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r,rinv,screening,forceyukawa,factor; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double fxtmp,fytmp,fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor = special_lj[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); + rinv = 1.0/r; + screening = exp(-kappa*r); + forceyukawa = a[itype][jtype] * screening * (kappa + rinv); + + fpair = factor*forceyukawa * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (EFLAG) { + evdwl = a[itype][jtype] * screening * rinv - offset[itype][jtype]; + evdwl *= factor; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,0.0,fpair,delx,dely,delz,tid); + } + } + f[i][0] += fxtmp; + f[i][1] += fytmp; + f[i][2] += fztmp; + } +} + +/* ---------------------------------------------------------------------- */ + +double PairYukawaOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairYukawa::memory_usage(); + + return bytes; +} diff --git a/src/USER-OMP/pair_yukawa_omp.h b/src/USER-OMP/pair_yukawa_omp.h new file mode 100644 index 0000000000..e363ac6d17 --- /dev/null +++ b/src/USER-OMP/pair_yukawa_omp.h @@ -0,0 +1,48 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(yukawa/omp,PairYukawaOMP) + +#else + +#ifndef LMP_PAIR_YUKAWA_OMP_H +#define LMP_PAIR_YUKAWA_OMP_H + +#include "pair_yukawa.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairYukawaOMP : public PairYukawa, public ThrOMP { + + public: + PairYukawaOMP(class LAMMPS *); + + virtual void compute(int, int); + virtual double memory_usage(); + + private: + template + void eval(double **f, int ifrom, int ito, int tid); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/thr_omp.cpp b/src/USER-OMP/thr_omp.cpp new file mode 100644 index 0000000000..37ce1f198b --- /dev/null +++ b/src/USER-OMP/thr_omp.cpp @@ -0,0 +1,833 @@ +/* ------------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + OpenMP based threading support for LAMMPS + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include "thr_omp.h" + +#include "memory.h" + +#include "atom.h" +#include "comm.h" +#include "force.h" + +#include "pair.h" +#include "dihedral.h" + +#if defined(_OPENMP) +#include +#endif + +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +/* ---------------------------------------------------------------------- */ + +ThrOMP::ThrOMP(LAMMPS *ptr, int style) : thr_style(style), lmp(ptr) +{ + // initialize fixed size per thread storage + eng_vdwl_thr = eng_coul_thr = eng_bond_thr = NULL; + virial_thr = NULL; + + lmp->memory->create(eng_vdwl_thr,lmp->comm->nthreads,"thr_omp:eng_vdwl_thr"); + lmp->memory->create(eng_coul_thr,lmp->comm->nthreads,"thr_omp:eng_coul_thr"); + lmp->memory->create(eng_bond_thr,lmp->comm->nthreads,"thr_omp:eng_bond_thr"); + lmp->memory->create(virial_thr,lmp->comm->nthreads,6,"thr_omp:virial_thr"); + + // variable size per thread, per atom storage + // the actually allocation happens via memory->grow() in ev_steup_thr() + maxeatom_thr = maxvatom_thr = 0; + evflag_global = evflag_atom = 0; + eatom_thr = NULL; + vatom_thr = NULL; +} + +/* ---------------------------------------------------------------------- */ + +ThrOMP::~ThrOMP() +{ + lmp->memory->destroy(eng_vdwl_thr); + lmp->memory->destroy(eng_coul_thr); + lmp->memory->destroy(eng_bond_thr); + lmp->memory->destroy(virial_thr); + lmp->memory->destroy(eatom_thr); + lmp->memory->destroy(vatom_thr); +} + +/* ---------------------------------------------------------------------- */ + +void ThrOMP::ev_setup_acc_thr(int ntotal, int eflag_global, int vflag_global, + int eflag_atom, int vflag_atom, int nthreads) +{ + int t,i; + + evflag_global = (eflag_global || vflag_global); + evflag_atom = (eflag_atom || vflag_atom); + + for (t = 0; t < nthreads; ++t) { + + if (eflag_global) + eng_vdwl_thr[t] = eng_coul_thr[t] = eng_bond_thr[t] = 0.0; + + if (vflag_global) + for (i = 0; i < 6; ++i) + virial_thr[t][i] = 0.0; + + if (eflag_atom) + for (i = 0; i < ntotal; ++i) + eatom_thr[t][i] = 0.0; + + if (vflag_atom) + for (i = 0; i < ntotal; ++i) { + vatom_thr[t][i][0] = 0.0; + vatom_thr[t][i][1] = 0.0; + vatom_thr[t][i][2] = 0.0; + vatom_thr[t][i][3] = 0.0; + vatom_thr[t][i][4] = 0.0; + vatom_thr[t][i][5] = 0.0; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void ThrOMP::ev_setup_thr(Dihedral *dihed) +{ + int nthreads = lmp->comm->nthreads; + + // reallocate per-atom arrays if necessary + if (dihed->eflag_atom && lmp->atom->nmax > maxeatom_thr) { + maxeatom_thr = lmp->atom->nmax; + lmp->memory->grow(eatom_thr,nthreads,maxeatom_thr,"thr_omp:eatom_thr"); + } + if (dihed->vflag_atom && lmp->atom->nmax > maxvatom_thr) { + maxvatom_thr = lmp->atom->nmax; + lmp->memory->grow(vatom_thr,nthreads,maxeatom_thr,6,"thr_omp:vatom_thr"); + } + + int ntotal = (lmp->force->newton_bond) ? + (lmp->atom->nlocal + lmp->atom->nghost) : lmp->atom->nlocal; + + // set up per thread accumulators + ev_setup_acc_thr(ntotal, dihed->eflag_global, dihed->vflag_global, + dihed->eflag_atom, dihed->vflag_atom, nthreads); +} + +/* ---------------------------------------------------------------------- */ + +void ThrOMP::ev_setup_thr(Pair *pair) +{ + int nthreads = lmp->comm->nthreads; + + // reallocate per-atom arrays if necessary + if (pair->eflag_atom && lmp->atom->nmax > maxeatom_thr) { + maxeatom_thr = lmp->atom->nmax; + lmp->memory->grow(eatom_thr,nthreads,maxeatom_thr,"thr_omp:eatom_thr"); + } + if (pair->vflag_atom && lmp->atom->nmax > maxvatom_thr) { + maxvatom_thr = lmp->atom->nmax; + lmp->memory->grow(vatom_thr,nthreads,maxeatom_thr,6,"thr_omp:vatom_thr"); + } + + int ntotal = (lmp->force->newton) ? + (lmp->atom->nlocal + lmp->atom->nghost) : lmp->atom->nlocal; + + // set up per thread accumulators + ev_setup_acc_thr(ntotal, pair->eflag_global, pair->vflag_global, + pair->eflag_atom, pair->vflag_atom, nthreads); +} + +/* ---------------------------------------------------------------------- + reduce the per thread accumulated E/V data into the canonical accumulators. +------------------------------------------------------------------------- */ +void ThrOMP::ev_reduce_thr(Dihedral *dihed) +{ + int nthreads = lmp->comm->nthreads; + int ntotal = (lmp->force->newton_bond) ? + (lmp->atom->nlocal + lmp->atom->nghost) : lmp->atom->nlocal; + + for (int n = 0; n < nthreads; ++n) { + dihed->energy += eng_bond_thr[n]; + if (dihed->vflag_either) { + dihed->virial[0] += virial_thr[n][0]; + dihed->virial[1] += virial_thr[n][1]; + dihed->virial[2] += virial_thr[n][2]; + dihed->virial[3] += virial_thr[n][3]; + dihed->virial[4] += virial_thr[n][4]; + dihed->virial[5] += virial_thr[n][5]; + if (dihed->vflag_atom) { + for (int i = 0; i < ntotal; ++i) { + dihed->vatom[i][0] += vatom_thr[n][i][0]; + dihed->vatom[i][1] += vatom_thr[n][i][1]; + dihed->vatom[i][2] += vatom_thr[n][i][2]; + dihed->vatom[i][3] += vatom_thr[n][i][3]; + dihed->vatom[i][4] += vatom_thr[n][i][4]; + dihed->vatom[i][5] += vatom_thr[n][i][5]; + } + } + } + if (dihed->eflag_atom) { + for (int i = 0; i < ntotal; ++i) { + dihed->eatom[i] += eatom_thr[n][i]; + } + } + } +} + +/* ---------------------------------------------------------------------- + reduce the per thread accumulated E/V data into the canonical accumulators. +------------------------------------------------------------------------- */ +void ThrOMP::ev_reduce_thr(Pair *pair) +{ + const int nthreads = lmp->comm->nthreads; + const int ntotal = (lmp->force->newton) ? + (lmp->atom->nlocal + lmp->atom->nghost) : lmp->atom->nlocal; + + for (int n = 0; n < nthreads; ++n) { + pair->eng_vdwl += eng_vdwl_thr[n]; + pair->eng_coul += eng_coul_thr[n]; + if (pair->vflag_either) { + pair->virial[0] += virial_thr[n][0]; + pair->virial[1] += virial_thr[n][1]; + pair->virial[2] += virial_thr[n][2]; + pair->virial[3] += virial_thr[n][3]; + pair->virial[4] += virial_thr[n][4]; + pair->virial[5] += virial_thr[n][5]; + if (pair->vflag_atom) { + for (int i = 0; i < ntotal; ++i) { + pair->vatom[i][0] += vatom_thr[n][i][0]; + pair->vatom[i][1] += vatom_thr[n][i][1]; + pair->vatom[i][2] += vatom_thr[n][i][2]; + pair->vatom[i][3] += vatom_thr[n][i][3]; + pair->vatom[i][4] += vatom_thr[n][i][4]; + pair->vatom[i][5] += vatom_thr[n][i][5]; + } + } + } + if (pair->eflag_atom) { + for (int i = 0; i < ntotal; ++i) { + pair->eatom[i] += eatom_thr[n][i]; + } + } + } +} + +/* ---------------------------------------------------------------------- + tally eng_vdwl and virial into per thread global and per-atom accumulators + need i < nlocal test since called by bond_quartic and dihedral_charmm +------------------------------------------------------------------------- */ + +void ThrOMP::ev_tally_thr(Pair *pair, int i, int j, int nlocal, + int newton_pair, double evdwl, double ecoul, + double fpair, double delx, double dely, + double delz, int tid) +{ + double evdwlhalf,ecoulhalf,epairhalf,v[6]; + + if (pair->eflag_either) { + if (pair->eflag_global) { + if (newton_pair) { + eng_vdwl_thr[tid] += evdwl; + eng_coul_thr[tid] += ecoul; + } else { + evdwlhalf = 0.5*evdwl; + ecoulhalf = 0.5*ecoul; + if (i < nlocal) { + eng_vdwl_thr[tid] += evdwlhalf; + eng_coul_thr[tid] += ecoulhalf; + } + if (j < nlocal) { + eng_vdwl_thr[tid] += evdwlhalf; + eng_coul_thr[tid] += ecoulhalf; + } + } + } + if (pair->eflag_atom) { + epairhalf = 0.5 * (evdwl + ecoul); + if (newton_pair || i < nlocal) eatom_thr[tid][i] += epairhalf; + if (newton_pair || j < nlocal) eatom_thr[tid][j] += epairhalf; + } + } + + if (pair->vflag_either) { + v[0] = delx*delx*fpair; + v[1] = dely*dely*fpair; + v[2] = delz*delz*fpair; + v[3] = delx*dely*fpair; + v[4] = delx*delz*fpair; + v[5] = dely*delz*fpair; + + if (pair->vflag_global) { + if (newton_pair) { + virial_thr[tid][0] += v[0]; + virial_thr[tid][1] += v[1]; + virial_thr[tid][2] += v[2]; + virial_thr[tid][3] += v[3]; + virial_thr[tid][4] += v[4]; + virial_thr[tid][5] += v[5]; + } else { + if (i < nlocal) { + virial_thr[tid][0] += 0.5*v[0]; + virial_thr[tid][1] += 0.5*v[1]; + virial_thr[tid][2] += 0.5*v[2]; + virial_thr[tid][3] += 0.5*v[3]; + virial_thr[tid][4] += 0.5*v[4]; + virial_thr[tid][5] += 0.5*v[5]; + } + if (j < nlocal) { + virial_thr[tid][0] += 0.5*v[0]; + virial_thr[tid][1] += 0.5*v[1]; + virial_thr[tid][2] += 0.5*v[2]; + virial_thr[tid][3] += 0.5*v[3]; + virial_thr[tid][4] += 0.5*v[4]; + virial_thr[tid][5] += 0.5*v[5]; + } + } + } + + if (pair->vflag_atom) { + if (newton_pair || i < nlocal) { + vatom_thr[tid][i][0] += 0.5*v[0]; + vatom_thr[tid][i][1] += 0.5*v[1]; + vatom_thr[tid][i][2] += 0.5*v[2]; + vatom_thr[tid][i][3] += 0.5*v[3]; + vatom_thr[tid][i][4] += 0.5*v[4]; + vatom_thr[tid][i][5] += 0.5*v[5]; + } + if (newton_pair || j < nlocal) { + vatom_thr[tid][j][0] += 0.5*v[0]; + vatom_thr[tid][j][1] += 0.5*v[1]; + vatom_thr[tid][j][2] += 0.5*v[2]; + vatom_thr[tid][j][3] += 0.5*v[3]; + vatom_thr[tid][j][4] += 0.5*v[4]; + vatom_thr[tid][j][5] += 0.5*v[5]; + } + } + } +} + +/* ---------------------------------------------------------------------- + tally eng_vdwl and virial into global and per-atom accumulators + for virial, have delx,dely,delz and fx,fy,fz +------------------------------------------------------------------------- */ + +void ThrOMP::ev_tally_xyz_thr(Pair *pair, int i, int j, int nlocal, + int newton_pair, double evdwl, double ecoul, + double fx, double fy, double fz, + double delx, double dely, double delz, int tid) +{ + double evdwlhalf,ecoulhalf,epairhalf,v[6]; + + if (pair->eflag_either) { + if (pair->eflag_global) { + if (newton_pair) { + eng_vdwl_thr[tid] += evdwl; + eng_coul_thr[tid] += ecoul; + } else { + evdwlhalf = 0.5*evdwl; + ecoulhalf = 0.5*ecoul; + if (i < nlocal) { + eng_vdwl_thr[tid] += evdwlhalf; + eng_coul_thr[tid] += ecoulhalf; + } + if (j < nlocal) { + eng_vdwl_thr[tid] += evdwlhalf; + eng_coul_thr[tid] += ecoulhalf; + } + } + } + if (pair->eflag_atom) { + epairhalf = 0.5 * (evdwl + ecoul); + if (newton_pair || i < nlocal) eatom_thr[tid][i] += epairhalf; + if (newton_pair || j < nlocal) eatom_thr[tid][j] += epairhalf; + } + } + + if (pair->vflag_either) { + v[0] = delx*fx; + v[1] = dely*fy; + v[2] = delz*fz; + v[3] = delx*fy; + v[4] = delx*fz; + v[5] = dely*fz; + + if (pair->vflag_global) { + if (newton_pair) { + virial_thr[tid][0] += v[0]; + virial_thr[tid][1] += v[1]; + virial_thr[tid][2] += v[2]; + virial_thr[tid][3] += v[3]; + virial_thr[tid][4] += v[4]; + virial_thr[tid][5] += v[5]; + } else { + if (i < nlocal) { + virial_thr[tid][0] += 0.5*v[0]; + virial_thr[tid][1] += 0.5*v[1]; + virial_thr[tid][2] += 0.5*v[2]; + virial_thr[tid][3] += 0.5*v[3]; + virial_thr[tid][4] += 0.5*v[4]; + virial_thr[tid][5] += 0.5*v[5]; + } + if (j < nlocal) { + virial_thr[tid][0] += 0.5*v[0]; + virial_thr[tid][1] += 0.5*v[1]; + virial_thr[tid][2] += 0.5*v[2]; + virial_thr[tid][3] += 0.5*v[3]; + virial_thr[tid][4] += 0.5*v[4]; + virial_thr[tid][5] += 0.5*v[5]; + } + } + } + + if (pair->vflag_atom) { + if (newton_pair || i < nlocal) { + vatom_thr[tid][i][0] += 0.5*v[0]; + vatom_thr[tid][i][1] += 0.5*v[1]; + vatom_thr[tid][i][2] += 0.5*v[2]; + vatom_thr[tid][i][3] += 0.5*v[3]; + vatom_thr[tid][i][4] += 0.5*v[4]; + vatom_thr[tid][i][5] += 0.5*v[5]; + } + if (newton_pair || j < nlocal) { + vatom_thr[tid][j][0] += 0.5*v[0]; + vatom_thr[tid][j][1] += 0.5*v[1]; + vatom_thr[tid][j][2] += 0.5*v[2]; + vatom_thr[tid][j][3] += 0.5*v[3]; + vatom_thr[tid][j][4] += 0.5*v[4]; + vatom_thr[tid][j][5] += 0.5*v[5]; + } + } + } +} + +/* ---------------------------------------------------------------------- + tally eng_vdwl and virial into global and per-atom accumulators + called by SW and hbond potentials, newton_pair is always on + virial = riFi + rjFj + rkFk = (rj-ri) Fj + (rk-ri) Fk = drji*fj + drki*fk + ------------------------------------------------------------------------- */ + +void ThrOMP::ev_tally3_thr(Pair *pair, int i, int j, int k, double evdwl, double ecoul, + double *fj, double *fk, double *drji, double *drki, int tid) +{ + double epairthird,v[6]; + + if (pair->eflag_either) { + if (pair->eflag_global) { + eng_vdwl_thr[tid] += evdwl; + eng_coul_thr[tid] += ecoul; + } + if (pair->eflag_atom) { + epairthird = THIRD * (evdwl + ecoul); + eatom_thr[tid][i] += epairthird; + eatom_thr[tid][j] += epairthird; + eatom_thr[tid][k] += epairthird; + } + } + + if (pair->vflag_either) { + v[0] = drji[0]*fj[0] + drki[0]*fk[0]; + v[1] = drji[1]*fj[1] + drki[1]*fk[1]; + v[2] = drji[2]*fj[2] + drki[2]*fk[2]; + v[3] = drji[0]*fj[1] + drki[0]*fk[1]; + v[4] = drji[0]*fj[2] + drki[0]*fk[2]; + v[5] = drji[1]*fj[2] + drki[1]*fk[2]; + + if (pair->vflag_global) { + virial_thr[tid][0] += v[0]; + virial_thr[tid][1] += v[1]; + virial_thr[tid][2] += v[2]; + virial_thr[tid][3] += v[3]; + virial_thr[tid][4] += v[4]; + virial_thr[tid][5] += v[5]; + } + + if (pair->vflag_atom) { + for (int n=0; n < 6; ++n) { + vatom_thr[tid][i][n] += THIRD*v[n]; + vatom_thr[tid][j][n] += THIRD*v[n]; + vatom_thr[tid][k][n] += THIRD*v[n]; + } + } + } +} + +/* ---------------------------------------------------------------------- + tally eng_vdwl and virial into global and per-atom accumulators + called by AIREBO potential, newton_pair is always on + ------------------------------------------------------------------------- */ + +void ThrOMP::ev_tally4_thr(Pair *pair, int i, int j, int k, int m, double evdwl, + double *fi, double *fj, double *fk, + double *drim, double *drjm, double *drkm,int tid) +{ + double epairfourth,v[6]; + + if (pair->eflag_either) { + if (pair->eflag_global) eng_vdwl_thr[tid] += evdwl; + if (pair->eflag_atom) { + epairfourth = 0.25 * evdwl; + eatom_thr[tid][i] += epairfourth; + eatom_thr[tid][j] += epairfourth; + eatom_thr[tid][k] += epairfourth; + eatom_thr[tid][m] += epairfourth; + } + } + + if (pair->vflag_atom) { + v[0] = 0.25 * (drim[0]*fi[0] + drjm[0]*fj[0] + drkm[0]*fk[0]); + v[1] = 0.25 * (drim[1]*fi[1] + drjm[1]*fj[1] + drkm[1]*fk[1]); + v[2] = 0.25 * (drim[2]*fi[2] + drjm[2]*fj[2] + drkm[2]*fk[2]); + v[3] = 0.25 * (drim[0]*fi[1] + drjm[0]*fj[1] + drkm[0]*fk[1]); + v[4] = 0.25 * (drim[0]*fi[2] + drjm[0]*fj[2] + drkm[0]*fk[2]); + v[5] = 0.25 * (drim[1]*fi[2] + drjm[1]*fj[2] + drkm[1]*fk[2]); + + vatom_thr[tid][i][0] += v[0]; vatom_thr[tid][i][1] += v[1]; vatom_thr[tid][i][2] += v[2]; + vatom_thr[tid][i][3] += v[3]; vatom_thr[tid][i][4] += v[4]; vatom_thr[tid][i][5] += v[5]; + vatom_thr[tid][j][0] += v[0]; vatom_thr[tid][j][1] += v[1]; vatom_thr[tid][j][2] += v[2]; + vatom_thr[tid][j][3] += v[3]; vatom_thr[tid][j][4] += v[4]; vatom_thr[tid][j][5] += v[5]; + vatom_thr[tid][k][0] += v[0]; vatom_thr[tid][k][1] += v[1]; vatom_thr[tid][k][2] += v[2]; + vatom_thr[tid][k][3] += v[3]; vatom_thr[tid][k][4] += v[4]; vatom_thr[tid][k][5] += v[5]; + vatom_thr[tid][m][0] += v[0]; vatom_thr[tid][m][1] += v[1]; vatom_thr[tid][m][2] += v[2]; + vatom_thr[tid][m][3] += v[3]; vatom_thr[tid][m][4] += v[4]; vatom_thr[tid][m][5] += v[5]; + } +} + +/* ---------------------------------------------------------------------- + tally ecoul and virial into each of n atoms in list + called by TIP4P potential, newton_pair is always on + changes v values by dividing by n + ------------------------------------------------------------------------- */ + +void ThrOMP::ev_tally_list_thr(Pair *pair, int n, int *list, double ecoul, double *v, int tid) +{ + int i,j; + + if (pair->eflag_either) { + if (pair->eflag_global) eng_coul_thr[tid] += ecoul; + if (pair->eflag_atom) { + double epairatom = ecoul/n; + for (i = 0; i < n; i++) eatom_thr[tid][list[i]] += epairatom; + } + } + + if (pair->vflag_either) { + if (pair->vflag_global) { + virial_thr[tid][0] += v[0]; + virial_thr[tid][1] += v[1]; + virial_thr[tid][2] += v[2]; + virial_thr[tid][3] += v[3]; + virial_thr[tid][4] += v[4]; + virial_thr[tid][5] += v[5]; + } + + if (pair->vflag_atom) { + v[0] /= n; + v[1] /= n; + v[2] /= n; + v[3] /= n; + v[4] /= n; + v[5] /= n; + for (i = 0; i < n; i++) { + j = list[i]; + vatom_thr[tid][j][0] += v[0]; + vatom_thr[tid][j][1] += v[1]; + vatom_thr[tid][j][2] += v[2]; + vatom_thr[tid][j][3] += v[3]; + vatom_thr[tid][j][4] += v[4]; + vatom_thr[tid][j][5] += v[5]; + } + } + } +} + +/* ---------------------------------------------------------------------- + tally energy and virial into global and per-atom accumulators + virial = r1F1 + r2F2 + r3F3 + r4F4 = (r1-r2) F1 + (r3-r2) F3 + (r4-r2) F4 + = (r1-r2) F1 + (r3-r2) F3 + (r4-r3 + r3-r2) F4 + = vb1*f1 + vb2*f3 + (vb3+vb2)*f4 +------------------------------------------------------------------------- */ + +void ThrOMP::ev_tally_thr(Dihedral *dihed, int i1, int i2, int i3, int i4, + int nlocal, int newton_bond, + double edihedral, double *f1, double *f3, double *f4, + double vb1x, double vb1y, double vb1z, + double vb2x, double vb2y, double vb2z, + double vb3x, double vb3y, double vb3z, int tid) +{ + double edihedralquarter,v[6]; + int cnt; + + if (dihed->eflag_either) { + if (dihed->eflag_global) { + if (newton_bond) { + eng_bond_thr[tid] += edihedral; + } else { + edihedralquarter = 0.25*edihedral; + cnt = 0; + if (i1 < nlocal) ++cnt; + if (i2 < nlocal) ++cnt; + if (i3 < nlocal) ++cnt; + if (i4 < nlocal) ++cnt; + eng_bond_thr[tid] += static_cast(cnt) * edihedralquarter; + } + } + if (dihed->eflag_atom) { + edihedralquarter = 0.25*edihedral; + if (newton_bond || i1 < nlocal) eatom_thr[tid][i1] += edihedralquarter; + if (newton_bond || i2 < nlocal) eatom_thr[tid][i2] += edihedralquarter; + if (newton_bond || i3 < nlocal) eatom_thr[tid][i3] += edihedralquarter; + if (newton_bond || i4 < nlocal) eatom_thr[tid][i4] += edihedralquarter; + } + } + + if (dihed->vflag_either) { + v[0] = vb1x*f1[0] + vb2x*f3[0] + (vb3x+vb2x)*f4[0]; + v[1] = vb1y*f1[1] + vb2y*f3[1] + (vb3y+vb2y)*f4[1]; + v[2] = vb1z*f1[2] + vb2z*f3[2] + (vb3z+vb2z)*f4[2]; + v[3] = vb1x*f1[1] + vb2x*f3[1] + (vb3x+vb2x)*f4[1]; + v[4] = vb1x*f1[2] + vb2x*f3[2] + (vb3x+vb2x)*f4[2]; + v[5] = vb1y*f1[2] + vb2y*f3[2] + (vb3y+vb2y)*f4[2]; + + if (dihed->vflag_global) { + if (newton_bond) { + virial_thr[tid][0] += v[0]; + virial_thr[tid][1] += v[1]; + virial_thr[tid][2] += v[2]; + virial_thr[tid][3] += v[3]; + virial_thr[tid][4] += v[4]; + virial_thr[tid][5] += v[5]; + } else { + if (i1 < nlocal) { + virial_thr[tid][0] += 0.25*v[0]; + virial_thr[tid][1] += 0.25*v[1]; + virial_thr[tid][2] += 0.25*v[2]; + virial_thr[tid][3] += 0.25*v[3]; + virial_thr[tid][4] += 0.25*v[4]; + virial_thr[tid][5] += 0.25*v[5]; + } + if (i2 < nlocal) { + virial_thr[tid][0] += 0.25*v[0]; + virial_thr[tid][1] += 0.25*v[1]; + virial_thr[tid][2] += 0.25*v[2]; + virial_thr[tid][3] += 0.25*v[3]; + virial_thr[tid][4] += 0.25*v[4]; + virial_thr[tid][5] += 0.25*v[5]; + } + if (i3 < nlocal) { + virial_thr[tid][0] += 0.25*v[0]; + virial_thr[tid][1] += 0.25*v[1]; + virial_thr[tid][2] += 0.25*v[2]; + virial_thr[tid][3] += 0.25*v[3]; + virial_thr[tid][4] += 0.25*v[4]; + virial_thr[tid][5] += 0.25*v[5]; + } + if (i4 < nlocal) { + virial_thr[tid][0] += 0.25*v[0]; + virial_thr[tid][1] += 0.25*v[1]; + virial_thr[tid][2] += 0.25*v[2]; + virial_thr[tid][3] += 0.25*v[3]; + virial_thr[tid][4] += 0.25*v[4]; + virial_thr[tid][5] += 0.25*v[5]; + } + } + } + + if (dihed->vflag_atom) { + if (newton_bond || i1 < nlocal) { + vatom_thr[tid][i1][0] += 0.25*v[0]; + vatom_thr[tid][i1][1] += 0.25*v[1]; + vatom_thr[tid][i1][2] += 0.25*v[2]; + vatom_thr[tid][i1][3] += 0.25*v[3]; + vatom_thr[tid][i1][4] += 0.25*v[4]; + vatom_thr[tid][i1][5] += 0.25*v[5]; + } + if (newton_bond || i2 < nlocal) { + vatom_thr[tid][i2][0] += 0.25*v[0]; + vatom_thr[tid][i2][1] += 0.25*v[1]; + vatom_thr[tid][i2][2] += 0.25*v[2]; + vatom_thr[tid][i2][3] += 0.25*v[3]; + vatom_thr[tid][i2][4] += 0.25*v[4]; + vatom_thr[tid][i2][5] += 0.25*v[5]; + } + if (newton_bond || i3 < nlocal) { + vatom_thr[tid][i3][0] += 0.25*v[0]; + vatom_thr[tid][i3][1] += 0.25*v[1]; + vatom_thr[tid][i3][2] += 0.25*v[2]; + vatom_thr[tid][i3][3] += 0.25*v[3]; + vatom_thr[tid][i3][4] += 0.25*v[4]; + vatom_thr[tid][i3][5] += 0.25*v[5]; + } + if (newton_bond || i4 < nlocal) { + vatom_thr[tid][i4][0] += 0.25*v[0]; + vatom_thr[tid][i4][1] += 0.25*v[1]; + vatom_thr[tid][i4][2] += 0.25*v[2]; + vatom_thr[tid][i4][3] += 0.25*v[3]; + vatom_thr[tid][i4][4] += 0.25*v[4]; + vatom_thr[tid][i4][5] += 0.25*v[5]; + } + } + } +} + +/* ---------------------------------------------------------------------- + tally virial into per-atom accumulators + called by AIREBO potential, newton_pair is always on + fpair is magnitude of force on atom I +------------------------------------------------------------------------- */ + +void ThrOMP::v_tally2_thr(int i, int j, double fpair, double *drij, int tid) +{ + double v[6]; + + v[0] = 0.5 * drij[0]*drij[0]*fpair; + v[1] = 0.5 * drij[1]*drij[1]*fpair; + v[2] = 0.5 * drij[2]*drij[2]*fpair; + v[3] = 0.5 * drij[0]*drij[1]*fpair; + v[4] = 0.5 * drij[0]*drij[2]*fpair; + v[5] = 0.5 * drij[1]*drij[2]*fpair; + + vatom_thr[tid][i][0] += v[0]; vatom_thr[tid][i][1] += v[1]; vatom_thr[tid][i][2] += v[2]; + vatom_thr[tid][i][3] += v[3]; vatom_thr[tid][i][4] += v[4]; vatom_thr[tid][i][5] += v[5]; + vatom_thr[tid][j][0] += v[0]; vatom_thr[tid][j][1] += v[1]; vatom_thr[tid][j][2] += v[2]; + vatom_thr[tid][j][3] += v[3]; vatom_thr[tid][j][4] += v[4]; vatom_thr[tid][j][5] += v[5]; +} + +/* ---------------------------------------------------------------------- + tally virial into per-atom accumulators + called by AIREBO and Tersoff potential, newton_pair is always on +------------------------------------------------------------------------- */ + +void ThrOMP::v_tally3_thr(int i, int j, int k, double *fi, double *fj, + double *drik, double *drjk, int tid) +{ + double v[6]; + + v[0] = THIRD * (drik[0]*fi[0] + drjk[0]*fj[0]); + v[1] = THIRD * (drik[1]*fi[1] + drjk[1]*fj[1]); + v[2] = THIRD * (drik[2]*fi[2] + drjk[2]*fj[2]); + v[3] = THIRD * (drik[0]*fi[1] + drjk[0]*fj[1]); + v[4] = THIRD * (drik[0]*fi[2] + drjk[0]*fj[2]); + v[5] = THIRD * (drik[1]*fi[2] + drjk[1]*fj[2]); + + vatom_thr[tid][i][0] += v[0]; vatom_thr[tid][i][1] += v[1]; vatom_thr[tid][i][2] += v[2]; + vatom_thr[tid][i][3] += v[3]; vatom_thr[tid][i][4] += v[4]; vatom_thr[tid][i][5] += v[5]; + vatom_thr[tid][j][0] += v[0]; vatom_thr[tid][j][1] += v[1]; vatom_thr[tid][j][2] += v[2]; + vatom_thr[tid][j][3] += v[3]; vatom_thr[tid][j][4] += v[4]; vatom_thr[tid][j][5] += v[5]; + vatom_thr[tid][k][0] += v[0]; vatom_thr[tid][k][1] += v[1]; vatom_thr[tid][k][2] += v[2]; + vatom_thr[tid][k][3] += v[3]; vatom_thr[tid][k][4] += v[4]; vatom_thr[tid][k][5] += v[5]; +} + +/* ---------------------------------------------------------------------- + tally virial into per-atom accumulators + called by AIREBO potential, newton_pair is always on +------------------------------------------------------------------------- */ + +void ThrOMP::v_tally4_thr(int i, int j, int k, int m, + double *fi, double *fj, double *fk, + double *drim, double *drjm, double *drkm, int tid) +{ + double v[6]; + + v[0] = 0.25 * (drim[0]*fi[0] + drjm[0]*fj[0] + drkm[0]*fk[0]); + v[1] = 0.25 * (drim[1]*fi[1] + drjm[1]*fj[1] + drkm[1]*fk[1]); + v[2] = 0.25 * (drim[2]*fi[2] + drjm[2]*fj[2] + drkm[2]*fk[2]); + v[3] = 0.25 * (drim[0]*fi[1] + drjm[0]*fj[1] + drkm[0]*fk[1]); + v[4] = 0.25 * (drim[0]*fi[2] + drjm[0]*fj[2] + drkm[0]*fk[2]); + v[5] = 0.25 * (drim[1]*fi[2] + drjm[1]*fj[2] + drkm[1]*fk[2]); + + vatom_thr[tid][i][0] += v[0]; vatom_thr[tid][i][1] += v[1]; vatom_thr[tid][i][2] += v[2]; + vatom_thr[tid][i][3] += v[3]; vatom_thr[tid][i][4] += v[4]; vatom_thr[tid][i][5] += v[5]; + vatom_thr[tid][j][0] += v[0]; vatom_thr[tid][j][1] += v[1]; vatom_thr[tid][j][2] += v[2]; + vatom_thr[tid][j][3] += v[3]; vatom_thr[tid][j][4] += v[4]; vatom_thr[tid][j][5] += v[5]; + vatom_thr[tid][k][0] += v[0]; vatom_thr[tid][k][1] += v[1]; vatom_thr[tid][k][2] += v[2]; + vatom_thr[tid][k][3] += v[3]; vatom_thr[tid][k][4] += v[4]; vatom_thr[tid][k][5] += v[5]; + vatom_thr[tid][m][0] += v[0]; vatom_thr[tid][m][1] += v[1]; vatom_thr[tid][m][2] += v[2]; + vatom_thr[tid][m][3] += v[3]; vatom_thr[tid][m][4] += v[4]; vatom_thr[tid][m][5] += v[5]; +} + +/* ---------------------------------------------------------------------- */ + +// set loop range thread id, and force array offset for threaded runs. +double **ThrOMP::loop_setup_thr(double **f, int &ifrom, int &ito, int &tid, + int inum, int nall, int nthreads) +{ +#if defined(_OPENMP) + tid = omp_get_thread_num(); + + // each thread works on a fixed chunk of atoms. + const int idelta = 1 + inum/nthreads; + ifrom = tid*idelta; + ito = ifrom + idelta; + if (ito > inum) + ito = inum; + + return f + nall*tid; +#else + tid = 0; + ifrom = 0; + ito = inum; + return f; +#endif +} + +/* ---------------------------------------------------------------------- */ + +// reduce per thread data into the first part of the data +// array that is used for the non-threaded parts and reset +// the temporary storage to 0.0. this routine depends on +// multi-dimensional arrays like force stored in this order +// x1,y1,z1,x2,y2,z2,... +// we need to post a barrier to wait until all threads are done +// with writing to the array . +void ThrOMP::data_reduce_thr(double *dall, int nall, int nthreads, + int ndim, int tid) +{ +#if defined(_OPENMP) + // NOOP in non-threaded execution. + if (nthreads == 1) return; +#pragma omp barrier + { + const int nvals = ndim*nall; + const int idelta = nvals/nthreads + 1; + const int ifrom = tid*idelta; + const int ito = ((ifrom + idelta) > nvals) ? nvals : (ifrom + idelta); + + for (int m = ifrom; m < ito; ++m) { + for (int n = 1; n < nthreads; ++n) { + dall[m] += dall[n*nvals + m]; + dall[n*nvals + m] = 0.0; + } + } + } +#else + // NOOP in non-threaded execution. + return; +#endif +} + +/* ---------------------------------------------------------------------- */ + +double ThrOMP::memory_usage_thr() +{ + const int nthreads=lmp->comm->nthreads; + + double bytes = nthreads * (3 + 7) * sizeof(double); + bytes += nthreads * maxeatom_thr * sizeof(double); + bytes += nthreads * maxvatom_thr * 6 * sizeof(double); + return bytes; +} diff --git a/src/USER-OMP/thr_omp.h b/src/USER-OMP/thr_omp.h new file mode 100644 index 0000000000..9966c9de00 --- /dev/null +++ b/src/USER-OMP/thr_omp.h @@ -0,0 +1,114 @@ +/* -*- 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: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#ifndef LMP_THR_OMP_H +#define LMP_THR_OMP_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +// forward declarations +class Pair; +class Dihedral; + +class ThrOMP { + public: + struct global { + double eng_vdwl; + double eng_coul; + double eng_bond; + double virial[6]; + }; + + protected: + const int thr_style; + enum {PAIR=1, BOND, ANGLE, DIHEDRAL, IMPROPER, KSPACE, FIX, COMPUTE}; + + LAMMPS *lmp; // reference to base lammps object. + + double *eng_vdwl_thr; // per thread accumulated vdw energy + double *eng_coul_thr; // per thread accumulated coulomb energies + double *eng_bond_thr; // per thread accumlated bonded energy + + double **virial_thr; // per thread virial + double **eatom_thr; // per thread per atom energy + double ***vatom_thr; // per thread per atom virial + + int maxeatom_thr, maxvatom_thr; + int evflag_global, evflag_atom; + + public: + ThrOMP(LAMMPS *, int); + virtual ~ThrOMP(); + + double memory_usage_thr(); + + inline void sync_threads() { +#if defined(_OPENMP) +#pragma omp barrier +#endif + { ; } + }; + + protected: + // extra ev_tally work for threaded styles + void ev_setup_thr(Pair *); + void ev_setup_thr(Dihedral *); + + void ev_reduce_thr(Pair *); + void ev_reduce_thr(Dihedral *); + + private: + // internal method to be used by multiple ev_setup_thr() methods + void ev_setup_acc_thr(int, int, int, int, int, int); + + protected: + // threading adapted versions of the ev_tally infrastructure + // style specific versions (need access to style class flags) + void ev_tally_thr(Pair *, int, int, int, int, double, double, + double, double, double, double, int); + void ev_tally_xyz_thr(Pair *, int, int, int, int, double, double, + double, double, double, double, double, double, int); + void ev_tally3_thr(Pair *, int, int, int, double, double, + double *, double *, double *, double *, int); + void ev_tally4_thr(Pair *, int, int, int, int, double, + double *, double *, double *, + double *, double *, double *, int); + void ev_tally_list_thr(Pair *, int, int *, double , double *, int); + + void ev_tally_thr(Dihedral *, int, int, int, int, int, int, double, + double *, double *, double *, double, double, double, + double, double, double, double, double, double, int); + + // style independent versions + void v_tally2_thr(int, int, double, double *, int); + void v_tally3_thr(int, int, int, double *, double *, double *, double *, int); + void v_tally4_thr(int, int, int, int, double *, double *, double *, + double *, double *, double *, int); + + protected: + // set loop range, thread id, and force array offset for threaded runs. + double **loop_setup_thr(double **, int &, int &, int &, int, int, int); + + // reduce per thread data into the first part of the array + void data_reduce_thr(double *, int, int, int, int); + +}; + +} +#endif diff --git a/src/USER-REAXC/README b/src/USER-REAXC/README index d7f66d1a74..cdcfb17603 100644 --- a/src/USER-REAXC/README +++ b/src/USER-REAXC/README @@ -1,54 +1,59 @@ -The files in this directory are a user-contributed package for LAMMPS. - -The person who created this package is Hasan Metin Aktulga, haktulga -at cs.purdue.edu, while at Purdue University. Contact him directly, -or Aidan Thompson (Sandia) at athomps at sandia.gov, if you have -questions. - --------------------------------------- - -Note that the files with names starting with "reaxc" in this package -are from PuReMD, the Purdue ReaxFF Molecular Dynamics Program. Its -copyright info and authorship info are listed below. - -PACKAGE DESCRIPTION: - -Contains a implementation for LAMMPS of the ReaxFF force field. -ReaxFF uses distance-dependent bond-order functions to represent the -contributions of chemical bonding to the potential energy. It was -originally developed by Adri van Duin and the Goddard group at -CalTech. +This package contains a implementation for LAMMPS of the ReaxFF force +field. ReaxFF uses distance-dependent bond-order functions to +represent the contributions of chemical bonding to the potential +energy. It was originally developed by Adri van Duin and the Goddard +group at CalTech. The USER-REAXC version of ReaxFF (pair_style reax/c), implemented in C, should give identical or very similar results to pair_style reax, which is a ReaxFF implementation on top of a Fortran library, a -version of which was originally authored by Adri van Duin. +version of which library was originally authored by Adri van Duin. The reax/c version should be somewhat faster and more scalable, particularly with respect to the charge equilibration calculation. It should also be easier to build and use since there are no complicating -issues due to linking to a Fortran library. +issues with Fortran memory allocation or linking to a Fortran library. -OTHERS FILES INCLUDED: +For technical details about this implemention of ReaxFF, see +this paper: -User examples for pair_style reax/c are in examples/reax. +Parallel and Scalable Reactive Molecular Dynamics: Numerical Methods +and Algorithmic Techniques, H. M. Aktulga, J. C. Fogarty, +S. A. Pandit, A. Y. Grama, Parallel Computing, in press (2011). + +See the doc page for the pair_style reax/c command for details +of how to use it in LAMMPS. + +The person who created this package is Hasan Metin Aktulga (hmaktulga +at lbl.gov), while at Purdue University. Contact him directly, or +Aidan Thompson at Sandia (athomps at sandia.gov), if you have +questions. + +-------------------------------------- Thanks to Steve Plimpton and Aidan Thompson for their input on the LAMMPS architecture and for their help in understanding and customizing some of the required LAMMPS interfaces. --------------------------------------- +Note that files in the package with names starting with "reaxc" are +from PuReMD, the Purdue ReaxFF Molecular Dynamics Program. Its +copyright info and authorship info are listed below. The reaxc files in this directory have the following header: PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/fix_qeq_reax.cpp b/src/USER-REAXC/fix_qeq_reax.cpp index 6a2bba5d8e..b68da226f4 100644 --- a/src/USER-REAXC/fix_qeq_reax.cpp +++ b/src/USER-REAXC/fix_qeq_reax.cpp @@ -13,6 +13,12 @@ /* ---------------------------------------------------------------------- Contributing author: Hasan Metin Aktulga, Purdue University + (now at Lawrence Berkeley National Laboratory, hmaktulga@lbl.gov) + + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. ------------------------------------------------------------------------- */ #include "math.h" @@ -44,15 +50,12 @@ using namespace LAMMPS_NS; #define MIN_CAP 50 #define MIN_NBRS 100 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixQEqReax::FixQEqReax(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 8) error->all("Illegal fix qeq/reax command"); + if (narg != 8) error->all(FLERR,"Illegal fix qeq/reax command"); nevery = atoi(arg[3]); swa = atof(arg[4]); @@ -142,13 +145,13 @@ void FixQEqReax::pertype_parameters(char *arg) if (strcmp(arg,"reax/c") == 0) { reaxflag = 1; Pair *pair = force->pair_match("reax/c",1); - if (pair == NULL) error->all("No pair reax/c for fix qeq/reax"); + if (pair == NULL) error->all(FLERR,"No pair reax/c for fix qeq/reax"); int tmp; chi = (double *) pair->extract("chi",tmp); eta = (double *) pair->extract("eta",tmp); gamma = (double *) pair->extract("gamma",tmp); if (chi == NULL || eta == NULL || gamma == NULL) - error->all("Fix qeq/reax could not extract params from pair reax/c"); + error->all(FLERR,"Fix qeq/reax could not extract params from pair reax/c"); return; } @@ -165,17 +168,17 @@ void FixQEqReax::pertype_parameters(char *arg) if (comm->me == 0) { if ((pf = fopen(arg,"r")) == NULL) - error->one("Fix qeq/reax parameter file could not be found"); + error->one(FLERR,"Fix qeq/reax parameter file could not be found"); for (i = 1; i <= ntypes && !feof(pf); i++) { fscanf(pf,"%d %lg %lg %lg",&itype,&v1,&v2,&v3); if (itype < 1 || itype > ntypes) - error->one("Fix qeq/reax invalid atom type in param file"); + error->one(FLERR,"Fix qeq/reax invalid atom type in param file"); chi[itype] = v1; eta[itype] = v2; gamma[itype] = v3; } - if (i <= ntypes) error->one("Invalid param file for fix qeq/reax"); + if (i <= ntypes) error->one(FLERR,"Invalid param file for fix qeq/reax"); fclose(pf); } @@ -281,7 +284,7 @@ void FixQEqReax::reallocate_matrix() void FixQEqReax::init() { - if (!atom->q_flag) error->all("Fix qeq/reax requires atom attribute q"); + if (!atom->q_flag) error->all(FLERR,"Fix qeq/reax requires atom attribute q"); // need a half neighbor list w/ Newton off // built whenever re-neighboring occurs @@ -327,11 +330,11 @@ void FixQEqReax::init_taper() double d7, swa2, swa3, swb2, swb3; if (fabs(swa) > 0.01 && comm->me == 0) - error->warning("Fix qeq/reax has non-zero lower Taper radius cutoff"); + error->warning(FLERR,"Fix qeq/reax has non-zero lower Taper radius cutoff"); if (swb < 0) - error->all( "Fix qeq/reax has negative upper Taper radius cutoff"); + error->all(FLERR, "Fix qeq/reax has negative upper Taper radius cutoff"); else if (swb < 5 && comm->me == 0) - error->warning("Fix qeq/reax has very low Taper radius cutoff"); + error->warning(FLERR,"Fix qeq/reax has very low Taper radius cutoff"); d7 = pow( swb - swa, 7 ); swa2 = SQR( swa ); @@ -471,19 +474,20 @@ void FixQEqReax::init_matvec() void FixQEqReax::compute_H() { int inum, jnum, *ilist, *jlist, *numneigh, **firstneigh; - int i, j, ii, jj, temp, newnbr; - int *type; - double **x; + int i, j, ii, jj, temp, newnbr, flag; + int *type, *tag; + double **x, SMALL = 0.0001; double dx, dy, dz, r_sqr; type = atom->type; + tag = atom->tag; x = atom->x; inum = list->inum; ilist = list->ilist; numneigh = list->numneigh; firstneigh = list->firstneigh; - + // fill in the H matrix m_fill = 0; r_sqr = 0; @@ -492,16 +496,30 @@ void FixQEqReax::compute_H() jlist = firstneigh[i]; jnum = numneigh[i]; H.firstnbr[i] = m_fill; - + for( jj = 0; jj < jnum; jj++ ) { j = jlist[jj]; - - dx = x[i][0] - x[j][0]; - dy = x[i][1] - x[j][1]; - dz = x[i][2] - x[j][2]; + + dx = x[j][0] - x[i][0]; + dy = x[j][1] - x[i][1]; + dz = x[j][2] - x[i][2]; r_sqr = SQR(dx) + SQR(dy) + SQR(dz); - if( r_sqr <= SQR(swb) && (j < n || atom->tag[i] <= atom->tag[j]) ) { + flag = 0; + if (r_sqr <= SQR(swb)) { + if (j < n) flag = 1; + else if (tag[i] < tag[j]) flag = 1; + else if (tag[i] == tag[j]) { + if (dz > SMALL) flag = 1; + else if (fabs(dz) < SMALL) { + if (dy > SMALL) flag = 1; + else if (fabs(dy) < SMALL && dx > SMALL) + flag = 1; + } + } + } + + if( flag ) { H.jlist[m_fill] = j; H.val[m_fill] = calculate_H( sqrt(r_sqr), shld[type[i]][type[j]] ); m_fill++; @@ -515,8 +533,8 @@ void FixQEqReax::compute_H() char str[128]; sprintf(str,"H matrix size has been exceeded: m_fill=%d H.m=%d\n", m_fill, H.m ); - error->warning(str); - error->all("Fix qeq/reax has insufficient QEq matrix size"); + error->warning(FLERR,str); + error->all(FLERR,"Fix qeq/reax has insufficient QEq matrix size"); } } @@ -585,7 +603,7 @@ int FixQEqReax::CG( double *b, double *x ) } if (i >= 100 && comm->me == 0) - error->warning("Fix qeq/reax CG convergence failed"); + error->warning(FLERR,"Fix qeq/reax CG convergence failed"); return i; } diff --git a/src/USER-REAXC/fix_qeq_reax.h b/src/USER-REAXC/fix_qeq_reax.h index ceb3814304..9bab44179b 100644 --- a/src/USER-REAXC/fix_qeq_reax.h +++ b/src/USER-REAXC/fix_qeq_reax.h @@ -11,6 +11,16 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Hasan Metin Aktulga, Purdue University + (now at Lawrence Berkeley National Laboratory, hmaktulga@lbl.gov) + + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. +------------------------------------------------------------------------- */ + #ifdef FIX_CLASS FixStyle(qeq/reax,FixQEqReax) diff --git a/src/USER-REAXC/fix_reax_c.cpp b/src/USER-REAXC/fix_reax_c.cpp index 6fb9b5c077..f979bef1e0 100644 --- a/src/USER-REAXC/fix_reax_c.cpp +++ b/src/USER-REAXC/fix_reax_c.cpp @@ -13,6 +13,12 @@ /* ---------------------------------------------------------------------- Contributing author: Hasan Metin Aktulga, Purdue University + (now at Lawrence Berkeley National Laboratory, hmaktulga@lbl.gov) + + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. ------------------------------------------------------------------------- */ #include "fix_reax_c.h" diff --git a/src/USER-REAXC/fix_reax_c.h b/src/USER-REAXC/fix_reax_c.h index 8f663f7327..c54636ef51 100644 --- a/src/USER-REAXC/fix_reax_c.h +++ b/src/USER-REAXC/fix_reax_c.h @@ -11,6 +11,16 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Hasan Metin Aktulga, Purdue University + (now at Lawrence Berkeley National Laboratory, hmaktulga@lbl.gov) + + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. +------------------------------------------------------------------------- */ + #ifdef FIX_CLASS FixStyle(REAXC,FixReaxC) diff --git a/src/USER-REAXC/pair_reax_c.cpp b/src/USER-REAXC/pair_reax_c.cpp index aaf517f768..0c30b765d9 100644 --- a/src/USER-REAXC/pair_reax_c.cpp +++ b/src/USER-REAXC/pair_reax_c.cpp @@ -13,6 +13,12 @@ /* ---------------------------------------------------------------------- Contributing author: Hasan Metin Aktulga, Purdue University + (now at Lawrence Berkeley National Laboratory, hmaktulga@lbl.gov) + + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. ------------------------------------------------------------------------- */ #include "pair_reax_c.h" @@ -48,6 +54,10 @@ using namespace LAMMPS_NS; PairReaxC::PairReaxC(LAMMPS *lmp) : Pair(lmp) { + single_enable = 0; + restartinfo = 0; + one_coeff = 1; + system = (reax_system *) memory->smalloc(sizeof(reax_system),"reax:system"); control = (control_params *) @@ -80,6 +90,7 @@ PairReaxC::PairReaxC(LAMMPS *lmp) : Pair(lmp) system->bndry_cuts.ghost_bond = 0; system->bndry_cuts.ghost_cutoff = 0; system->my_atoms = NULL; + system->pair_ptr = this; fix_reax = NULL; @@ -156,7 +167,7 @@ void PairReaxC::allocate( ) void PairReaxC::settings(int narg, char **arg) { - if (narg != 1 && narg != 3) error->all("Illegal pair_style command"); + if (narg != 1 && narg != 3) error->all(FLERR,"Illegal pair_style command"); // read name of control file or use default controls @@ -190,12 +201,12 @@ void PairReaxC::settings(int narg, char **arg) while (iarg < narg) { if (strcmp(arg[iarg],"checkqeq") == 0) { - if (iarg+2 > narg) error->all("Illegal pair_style reax/c command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal pair_style reax/c command"); if (strcmp(arg[iarg+1],"yes") == 0) qeqflag = 1; else if (strcmp(arg[iarg+1],"no") == 0) qeqflag = 0; - else error->all("Illegal pair_style reax/c command"); + else error->all(FLERR,"Illegal pair_style reax/c command"); iarg += 2; - } else error->all("Illegal pair_style reax/c command"); + } else error->all(FLERR,"Illegal pair_style reax/c command"); } // LAMMPS is responsible for generating nbrs @@ -210,12 +221,12 @@ void PairReaxC::coeff( int nargs, char **args ) if (!allocated) allocate(); if (nargs != 3 + atom->ntypes) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // insure I,J args are * * if (strcmp(args[0],"*") != 0 || strcmp(args[1],"*") != 0) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); // read ffield file @@ -238,7 +249,7 @@ void PairReaxC::coeff( int nargs, char **args ) // error check if (itmp < 0 || itmp >= nreax_types) - error->all("Non-existent ReaxFF type"); + error->all(FLERR,"Non-existent ReaxFF type"); } @@ -251,21 +262,21 @@ void PairReaxC::coeff( int nargs, char **args ) count++; } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- */ void PairReaxC::init_style( ) { - if (!atom->q_flag) error->all("Pair reax/c requires atom attribute q"); - firstwarn = 1; + if (!atom->q_flag) error->all(FLERR,"Pair reax/c requires atom attribute q"); + // firstwarn = 1; int iqeq; for (iqeq = 0; iqeq < modify->nfix; iqeq++) if (strcmp(modify->fix[iqeq]->style,"qeq/reax") == 0) break; if (iqeq == modify->nfix && qeqflag == 1) - error->all("Pair reax/c requires use of fix qeq/reax"); + error->all(FLERR,"Pair reax/c requires use of fix qeq/reax"); system->n = atom->nlocal; // my atoms system->N = atom->nlocal + atom->nghost; // mine + ghosts @@ -278,9 +289,9 @@ void PairReaxC::init_style( ) system->big_box.box_norms[2] = 0; if (atom->tag_enable == 0) - error->all("Pair style reax/c requires atom IDs"); + error->all(FLERR,"Pair style reax/c requires atom IDs"); if (force->newton_pair == 0) - error->all("Pair style reax/c requires newton pair on"); + error->all(FLERR,"Pair style reax/c requires newton pair on"); // need a half neighbor list w/ Newton off // built whenever re-neighboring occurs @@ -337,7 +348,7 @@ void PairReaxC::setup( ) int num_nbrs = estimate_reax_lists(); if(!Make_List(system->total_cap, num_nbrs, TYP_FAR_NEIGHBOR, lists+FAR_NBRS, world)) - error->all("Pair reax/c problem in far neighbor list"); + error->all(FLERR,"Pair reax/c problem in far neighbor list"); write_reax_lists(); Initialize( system, control, data, workspace, &lists, out_control, @@ -389,13 +400,6 @@ void PairReaxC::compute(int eflag, int vflag) if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = eflag_global = vflag_global = 0; - if ((eflag_atom || vflag_atom) && firstwarn) { - firstwarn = 0; - if (comm->me == 0) - error->warning("Pair reax/c cannot yet compute " - "per-atom energy or stress"); - } - if (vflag_global) control->virial = 1; else control->virial = 0; @@ -407,6 +411,10 @@ void PairReaxC::compute(int eflag, int vflag) system->big_box.box_norms[0] = 0; system->big_box.box_norms[1] = 0; system->big_box.box_norms[2] = 0; + + system->evflag = evflag; + system->vflag_atom = vflag_atom; + if( comm->me == 0 ) t_start = MPI_Wtime(); // setup data structures @@ -449,8 +457,8 @@ void PairReaxC::compute(int eflag, int vflag) ecoul += data->my_en.e_ele; ecoul += data->my_en.e_pol; - eng_vdwl += evdwl; - eng_coul += ecoul; + // eng_vdwl += evdwl; + // eng_coul += ecoul; // Store the different parts of the energy // in a list for output by compute pair command @@ -624,16 +632,17 @@ int PairReaxC::estimate_reax_lists() int PairReaxC::write_reax_lists() { - int itr_i, itr_j, itr_g, i, j, g; + int itr_i, itr_j, itr_g, i, j, g, flag; int nlocal, nghost, num_nbrs; - int *ilist, *jlist, *numneigh, **firstneigh, *marked; + int *ilist, *jlist, *numneigh, **firstneigh, *marked, *tag; double d_sqr, g_d, g_d_sqr; rvec dvec, g_dvec; - double *dist, **x; + double *dist, **x, SMALL = 0.0001; reax_list *far_nbrs; far_neighbor_data *far_list; x = atom->x; + tag = atom->tag; nlocal = atom->nlocal; nghost = atom->nghost; ilist = list->ilist; diff --git a/src/USER-REAXC/pair_reax_c.h b/src/USER-REAXC/pair_reax_c.h index 4bf53f91c1..89c38ef9ae 100644 --- a/src/USER-REAXC/pair_reax_c.h +++ b/src/USER-REAXC/pair_reax_c.h @@ -11,6 +11,16 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Hasan Metin Aktulga, Purdue University + (now at Lawrence Berkeley National Laboratory, hmaktulga@lbl.gov) + + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. +------------------------------------------------------------------------- */ + #ifdef PAIR_CLASS PairStyle(reax/c,PairReaxC) diff --git a/src/USER-REAXC/reaxc_allocate.cpp b/src/USER-REAXC/reaxc_allocate.cpp index e31c86d491..37fa1207cd 100644 --- a/src/USER-REAXC/reaxc_allocate.cpp +++ b/src/USER-REAXC/reaxc_allocate.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "allocate.h" #include "list.h" @@ -744,7 +749,7 @@ void ReAllocate( reax_system *system, control_params *control, { int i, j, k, p; int num_bonds, est_3body, nflag, Nflag, Hflag, mpi_flag, ret, total_send; - int renbr; + int renbr, newsize; reallocate_data *realloc; reax_list *far_nbrs; sparse_matrix *H; @@ -781,14 +786,14 @@ void ReAllocate( reax_system *system, control_params *control, if( system->n >= DANGER_ZONE * system->local_cap || (0 && system->n <= LOOSE_ZONE * system->local_cap) ) { nflag = 1; - system->local_cap = (int)(system->n * SAFE_ZONE); + system->local_cap = MAX( (int)(system->n * SAFE_ZONE), MIN_CAP ); } Nflag = 0; if( system->N >= DANGER_ZONE * system->total_cap || (0 && system->N <= LOOSE_ZONE * system->total_cap) ) { Nflag = 1; - system->total_cap = (int)(system->N * SAFE_ZONE); + system->total_cap = MAX( (int)(system->N * SAFE_ZONE), MIN_CAP ); } if( Nflag ) { @@ -831,15 +836,16 @@ void ReAllocate( reax_system *system, control_params *control, data->step, realloc->num_far, far_nbrs->num_intrs ); MPI_Abort( comm, INSUFFICIENT_MEMORY ); } + + newsize = static_cast + (MAX( realloc->num_far*SAFE_ZONE, MIN_CAP*MIN_NBRS )); #if defined(DEBUG_FOCUS) fprintf( stderr, "p%d: reallocating far_nbrs: num_fars=%d, space=%dMB\n", system->my_rank, (int)(realloc->num_far*SAFE_ZONE), - (int)(realloc->num_far*SAFE_ZONE*sizeof(far_neighbor_data)/ - (1024*1024)) ); -#endif - Reallocate_Neighbor_List( far_nbrs, system->total_cap, - (int)(realloc->num_far*SAFE_ZONE), - comm ); + (newsize*sizeof(far_neighbor_data)/(1024*1024)) ); +#endif + + Reallocate_Neighbor_List( far_nbrs, system->total_cap, newsize, comm ); realloc->num_far = 0; } } @@ -860,8 +866,11 @@ void ReAllocate( reax_system *system, control_params *control, (int)(realloc->Htop * SAFE_ZONE * sizeof(sparse_matrix_entry) / (1024*1024)) ); #endif + + newsize = static_cast + (MAX( realloc->Htop*SAFE_ZONE, MIN_CAP*MIN_NBRS )); Reallocate_Matrix( &(workspace->H), system->local_cap, - realloc->Htop*SAFE_ZONE, "H", comm ); + newsize, "H", comm ); //Deallocate_Matrix( workspace->L ); //Deallocate_Matrix( workspace->U ); workspace->L = NULL; @@ -876,7 +885,7 @@ void ReAllocate( reax_system *system, control_params *control, if( system->numH >= DANGER_ZONE * system->Hcap || (0 && system->numH <= LOOSE_ZONE * system->Hcap) ) { Hflag = 1; - system->Hcap = (int)(system->numH * SAFE_ZONE); + system->Hcap = int(MAX( system->numH * SAFER_ZONE, MIN_CAP )); } if( Hflag || realloc->hbonds ) { diff --git a/src/USER-REAXC/reaxc_allocate.h b/src/USER-REAXC/reaxc_allocate.h index 04e24c67ec..e3d9049c57 100644 --- a/src/USER-REAXC/reaxc_allocate.h +++ b/src/USER-REAXC/reaxc_allocate.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_basic_comm.cpp b/src/USER-REAXC/reaxc_basic_comm.cpp index 16a46a03d8..1a0452ed97 100644 --- a/src/USER-REAXC/reaxc_basic_comm.cpp +++ b/src/USER-REAXC/reaxc_basic_comm.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "basic_comm.h" #include "vector.h" diff --git a/src/USER-REAXC/reaxc_basic_comm.h b/src/USER-REAXC/reaxc_basic_comm.h index 986f95a175..de9f7a5316 100644 --- a/src/USER-REAXC/reaxc_basic_comm.h +++ b/src/USER-REAXC/reaxc_basic_comm.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_bond_orders.cpp b/src/USER-REAXC/reaxc_bond_orders.cpp index 26c1648a77..a3c925f6d4 100644 --- a/src/USER-REAXC/reaxc_bond_orders.cpp +++ b/src/USER-REAXC/reaxc_bond_orders.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,6 +24,7 @@ . ----------------------------------------------------------------------*/ +#include "pair_reax_c.h" #include "reaxc_types.h" #if defined(PURE_REAX) #include "bond_orders.h" @@ -539,7 +545,7 @@ void Add_dBond_to_Forces_NPT( int i, int pj, simulation_data *data, -void Add_dBond_to_Forces( int i, int pj, +void Add_dBond_to_Forces( reax_system *system, int i, int pj, storage *workspace, reax_list **lists ) { reax_list *bonds = (*lists) + BONDS; @@ -548,6 +554,10 @@ void Add_dBond_to_Forces( int i, int pj, dbond_coefficients coef; int pk, k, j; + /* Virial Tallying variables */ + int ii; + real f_scaler, fi_tmp[3], fj_tmp[3], fk_tmp[3]; + /* Initializations */ nbr_j = &(bonds->select.bond_list[pj]); j = nbr_j->nbr; @@ -584,6 +594,13 @@ void Add_dBond_to_Forces( int i, int pj, rvec_ScaledAdd( workspace->f[k], -coef.C3dbopi, nbr_k->bo_data.dBOp ); /*3rd, dBOpi2*/ rvec_ScaledAdd( workspace->f[k], -coef.C3dbopi2, nbr_k->bo_data.dBOp ); + + // tally into per-atom virial + if( system->vflag_atom ) { + f_scaler = -(coef.C2dbo + coef.C2dDelta + coef.C3dbopi + coef.C3dbopi2); + rvec_Scale( fk_tmp, -f_scaler, nbr_k->bo_data.dBOp); + system->pair_ptr->v_tally(k, fk_tmp); + } } /*1st, dBO*/ @@ -623,6 +640,13 @@ void Add_dBond_to_Forces( int i, int pj, rvec_ScaledAdd( workspace->f[k], -coef.C4dbopi, nbr_k->bo_data.dBOp ); /*4th, dBOpi2*/ rvec_ScaledAdd( workspace->f[k], -coef.C4dbopi2, nbr_k->bo_data.dBOp ); + + // tally into per-atom virial + if( system->vflag_atom ) { + f_scaler = -(coef.C3dbo + coef.C3dDelta + coef.C4dbopi + coef.C4dbopi2); + rvec_Scale( fk_tmp, -f_scaler, nbr_k->bo_data.dBOp); + system->pair_ptr->v_tally(k, fk_tmp); + } } /*1st,dBO*/ @@ -648,6 +672,33 @@ void Add_dBond_to_Forces( int i, int pj, rvec_ScaledAdd( workspace->f[j], -coef.C2dbopi2, bo_ij->dBOp ); /*3rd, dBOpi2*/ rvec_ScaledAdd( workspace->f[j], coef.C4dbopi2, workspace->dDeltap_self[j] ); + + if( system->vflag_atom) { + + // forces on i + f_scaler = coef.C1dbo + coef.C1dDelta + coef.C2dbopi + coef.C2dbopi2; + rvec_Scale( fi_tmp, -f_scaler, bo_ij->dBOp); + f_scaler = coef.C2dbo + coef.C2dDelta + coef.C3dbopi + coef.C3dbopi2; + rvec_ScaledAdd( fi_tmp, -f_scaler, workspace->dDeltap_self[i]); + f_scaler = coef.C1dbopi ; + rvec_ScaledAdd( fi_tmp, -f_scaler, bo_ij->dln_BOp_pi); + f_scaler = coef.C1dbopi2 ; + rvec_ScaledAdd( fi_tmp, -f_scaler, bo_ij->dln_BOp_pi2); + + // forces on j + f_scaler = -(coef.C1dbo + coef.C1dDelta + coef.C2dbopi + coef.C2dbopi2); + rvec_Scale( fj_tmp, -f_scaler, bo_ij->dBOp); + f_scaler = coef.C3dbo + coef.C3dDelta + coef.C4dbopi + coef.C4dbopi2; + rvec_ScaledAdd( fj_tmp, -f_scaler, workspace->dDeltap_self[j]); + f_scaler = -coef.C1dbopi ; + rvec_ScaledAdd( fj_tmp, -f_scaler, bo_ij->dln_BOp_pi); + f_scaler = -coef.C1dbopi2 ; + rvec_ScaledAdd( fj_tmp, -f_scaler, bo_ij->dln_BOp_pi2); + + system->pair_ptr->v_tally(i, fi_tmp); + system->pair_ptr->v_tally(j, fj_tmp); + + } } diff --git a/src/USER-REAXC/reaxc_bond_orders.h b/src/USER-REAXC/reaxc_bond_orders.h index 0ad8e3b836..8ca9b8b237 100644 --- a/src/USER-REAXC/reaxc_bond_orders.h +++ b/src/USER-REAXC/reaxc_bond_orders.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -48,7 +53,7 @@ void Add_dDelta( reax_system*, reax_list**, int, real, rvec* ); void Add_dDelta_to_Forces( reax_system *, reax_list**, int, real ); #endif -void Add_dBond_to_Forces( int, int, storage*, reax_list** ); +void Add_dBond_to_Forces( reax_system*, int, int, storage*, reax_list** ); void Add_dBond_to_Forces_NPT( int, int, simulation_data*, storage*, reax_list** ); int BOp(storage*, reax_list*, real, int, int, far_neighbor_data*, diff --git a/src/USER-REAXC/reaxc_bonds.cpp b/src/USER-REAXC/reaxc_bonds.cpp index 70e0b644f2..1617bc2735 100644 --- a/src/USER-REAXC/reaxc_bonds.cpp +++ b/src/USER-REAXC/reaxc_bonds.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "bonds.h" #include "bond_orders.h" @@ -74,7 +79,7 @@ void Bonds( reax_system *system, control_params *control, sbp_j = &( system->reax_param.sbp[type_j] ); twbp = &( system->reax_param.tbp[type_i][type_j] ); bo_ij = &( bonds->select.bond_list[pj].bo_data ); - + /* calculate the constants */ pow_BOs_be2 = pow( bo_ij->BO_s, twbp->p_be2 ); exp_be12 = exp( twbp->p_be1 * ( 1.0 - pow_BOs_be2 ) ); @@ -86,7 +91,11 @@ void Bonds( reax_system *system, control_params *control, -twbp->De_s * bo_ij->BO_s * exp_be12 -twbp->De_p * bo_ij->BO_pi -twbp->De_pp * bo_ij->BO_pi2; - + + /* tally into per-atom energy */ + if( system->evflag) + system->pair_ptr->ev_tally(i,j,natoms,1,ebond,0.0,0.0,0.0,0.0,0.0); + /* calculate derivatives of Bond Orders */ bo_ij->Cdbo += CEbo; bo_ij->Cdbopi -= (CEbo + twbp->De_p); @@ -126,6 +135,10 @@ void Bonds( reax_system *system, control_params *control, decobdboub = -gp10 * exphu * hulpov * (gp3*exphub1 + 25.0*gp4*exphuov*hulpov*(exphua1+exphub1)); + /* tally into per-atom energy */ + if( system->evflag) + system->pair_ptr->ev_tally(i,j,natoms,1,estriph,0.0,0.0,0.0,0.0,0.0); + bo_ij->Cdbo += decobdbo; workspace->CdDelta[i] += decobdboua; workspace->CdDelta[j] += decobdboub; diff --git a/src/USER-REAXC/reaxc_bonds.h b/src/USER-REAXC/reaxc_bonds.h index bf8c111775..5a911cb21a 100644 --- a/src/USER-REAXC/reaxc_bonds.h +++ b/src/USER-REAXC/reaxc_bonds.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_control.cpp b/src/USER-REAXC/reaxc_control.cpp index 7a72a1ee6f..4d6ccede4f 100644 --- a/src/USER-REAXC/reaxc_control.cpp +++ b/src/USER-REAXC/reaxc_control.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "control.h" #include "tool_box.h" diff --git a/src/USER-REAXC/reaxc_control.h b/src/USER-REAXC/reaxc_control.h index 68fd33c95d..f453ed5e60 100644 --- a/src/USER-REAXC/reaxc_control.h +++ b/src/USER-REAXC/reaxc_control.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_defs.h b/src/USER-REAXC/reaxc_defs.h index 957816d38a..66754291fb 100644 --- a/src/USER-REAXC/reaxc_defs.h +++ b/src/USER-REAXC/reaxc_defs.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -35,8 +40,8 @@ #define CUBE(x) ((x)*(x)*(x)) #define DEG2RAD(a) ((a)*constPI/180.0) #define RAD2DEG(a) ((a)*180.0/constPI) -#define MAX(x,y) (((x) > (y)) ? (x) : (y)) -#define MIN(x,y) (((x) < (y)) ? (x) : (y)) +// #define MAX(x,y) (((x) > (y)) ? (x) : (y)) +// #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #define MAX3(x,y,z) MAX( MAX(x,y), z) #define constPI 3.14159265 diff --git a/src/USER-REAXC/reaxc_ffield.cpp b/src/USER-REAXC/reaxc_ffield.cpp index 2d0f37123d..546bf138d0 100644 --- a/src/USER-REAXC/reaxc_ffield.cpp +++ b/src/USER-REAXC/reaxc_ffield.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "ffield.h" #include "tool_box.h" diff --git a/src/USER-REAXC/reaxc_ffield.h b/src/USER-REAXC/reaxc_ffield.h index 22a580f7f8..b4632b6379 100644 --- a/src/USER-REAXC/reaxc_ffield.h +++ b/src/USER-REAXC/reaxc_ffield.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_forces.cpp b/src/USER-REAXC/reaxc_forces.cpp index b1d5874683..fa20fba109 100644 --- a/src/USER-REAXC/reaxc_forces.cpp +++ b/src/USER-REAXC/reaxc_forces.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "forces.h" #include "bond_orders.h" @@ -147,7 +152,7 @@ void Compute_Total_Force( reax_system *system, control_params *control, for( pj = Start_Index(i, bonds); pj < End_Index(i, bonds); ++pj ) if( i < bonds->select.bond_list[pj].nbr ) { if( control->virial == 0 ) - Add_dBond_to_Forces( i, pj, workspace, lists ); + Add_dBond_to_Forces( system, i, pj, workspace, lists ); else Add_dBond_to_Forces_NPT( i, pj, data, workspace, lists ); } diff --git a/src/USER-REAXC/reaxc_forces.h b/src/USER-REAXC/reaxc_forces.h index 6723bc9660..fe97a7121c 100644 --- a/src/USER-REAXC/reaxc_forces.h +++ b/src/USER-REAXC/reaxc_forces.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_hydrogen_bonds.cpp b/src/USER-REAXC/reaxc_hydrogen_bonds.cpp index 86013abcbd..dc8f7dac20 100644 --- a/src/USER-REAXC/reaxc_hydrogen_bonds.cpp +++ b/src/USER-REAXC/reaxc_hydrogen_bonds.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "hydrogen_bonds.h" #include "bond_orders.h" @@ -59,6 +64,9 @@ void Hydrogen_Bonds( reax_system *system, control_params *control, bond_data *bond_list; hbond_data *hbond_list; + // tally variables + real fi_tmp[3], fk_tmp[3], delij[3], delkj[3]; + bonds = (*lists) + BONDS; bond_list = bonds->select.bond_list; hbonds = (*lists) + HBONDS; @@ -129,14 +137,16 @@ void Hydrogen_Bonds( reax_system *system, control_params *control, exp_hb2 = exp( -hbp->p_hb2 * bo_ij->BO ); exp_hb3 = exp( -hbp->p_hb3 * ( hbp->r0_hb / r_jk + r_jk / hbp->r0_hb - 2.0 ) ); - + data->my_en.e_hb += e_hb = hbp->p_hb1 * (1.0 - exp_hb2) * exp_hb3 * sin_xhz4; - + CEhb1 = hbp->p_hb1 * hbp->p_hb2 * exp_hb2 * exp_hb3 * sin_xhz4; CEhb2 = -hbp->p_hb1/2.0 * (1.0 - exp_hb2) * exp_hb3 * cos_xhz1; CEhb3 = -hbp->p_hb3 * (-hbp->r0_hb / SQR(r_jk) + 1.0 / hbp->r0_hb) * e_hb; + + fprintf(stderr," H bond called \n"); /*fprintf( stdout, "%6d%6d%6d%12.6f%12.6f%12.6f%12.6f%12.6f%12.6f%12.6f%12.6f%12.6f\n", @@ -181,6 +191,20 @@ void Hydrogen_Bonds( reax_system *system, control_params *control, rvec_ScaledAdd( data->my_ext_press, 1.0, ext_press ); } + /* tally into per-atom virials */ + if (system->vflag_atom || system->evflag) { + rvec_ScaledSum( delij, 1., system->my_atoms[i].x, + -1., system->my_atoms[j].x ); + rvec_ScaledSum( delkj, 1., system->my_atoms[k].x, + -1., system->my_atoms[j].x ); + + rvec_Scale(fi_tmp, CEhb2, dcos_theta_di); + rvec_Scale(fk_tmp, CEhb2, dcos_theta_dk); + rvec_ScaledAdd(fk_tmp, CEhb3/r_jk, dvec_jk); + + system->pair_ptr->ev_tally3(i,j,k,e_hb,0.0,fi_tmp,fk_tmp,delij,delkj); + } + #ifdef TEST_ENERGY /* fprintf( out_control->ehb, "%24.15e%24.15e%24.15e\n%24.15e%24.15e%24.15e\n%24.15e%24.15e%24.15e\n", diff --git a/src/USER-REAXC/reaxc_hydrogen_bonds.h b/src/USER-REAXC/reaxc_hydrogen_bonds.h index bb26928d62..f25b669440 100644 --- a/src/USER-REAXC/reaxc_hydrogen_bonds.h +++ b/src/USER-REAXC/reaxc_hydrogen_bonds.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_init_md.cpp b/src/USER-REAXC/reaxc_init_md.cpp index 52466eaec9..55d0f14348 100644 --- a/src/USER-REAXC/reaxc_init_md.cpp +++ b/src/USER-REAXC/reaxc_init_md.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "init_md.h" #include "allocate.h" diff --git a/src/USER-REAXC/reaxc_init_md.h b/src/USER-REAXC/reaxc_init_md.h index c7896f6821..26990dfdec 100644 --- a/src/USER-REAXC/reaxc_init_md.h +++ b/src/USER-REAXC/reaxc_init_md.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_io_tools.cpp b/src/USER-REAXC/reaxc_io_tools.cpp index 4020a3785e..960c6f5938 100644 --- a/src/USER-REAXC/reaxc_io_tools.cpp +++ b/src/USER-REAXC/reaxc_io_tools.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "io_tools.h" #include "basic_comm.h" diff --git a/src/USER-REAXC/reaxc_io_tools.h b/src/USER-REAXC/reaxc_io_tools.h index c009f14df7..4bca170fe5 100644 --- a/src/USER-REAXC/reaxc_io_tools.h +++ b/src/USER-REAXC/reaxc_io_tools.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_list.cpp b/src/USER-REAXC/reaxc_list.cpp index 0ea3d7d875..6eab487af0 100644 --- a/src/USER-REAXC/reaxc_list.cpp +++ b/src/USER-REAXC/reaxc_list.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "list.h" #include "tool_box.h" diff --git a/src/USER-REAXC/reaxc_list.h b/src/USER-REAXC/reaxc_list.h index cca217dbf7..39ca1b973e 100644 --- a/src/USER-REAXC/reaxc_list.h +++ b/src/USER-REAXC/reaxc_list.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_lookup.cpp b/src/USER-REAXC/reaxc_lookup.cpp index a4b851b9d8..ee54e57c55 100644 --- a/src/USER-REAXC/reaxc_lookup.cpp +++ b/src/USER-REAXC/reaxc_lookup.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "lookup.h" #include "nonbonded.h" diff --git a/src/USER-REAXC/reaxc_lookup.h b/src/USER-REAXC/reaxc_lookup.h index 28658386b4..437f26bc77 100644 --- a/src/USER-REAXC/reaxc_lookup.h +++ b/src/USER-REAXC/reaxc_lookup.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_multi_body.cpp b/src/USER-REAXC/reaxc_multi_body.cpp index 44f3b1bcf3..fa2e719341 100644 --- a/src/USER-REAXC/reaxc_multi_body.cpp +++ b/src/USER-REAXC/reaxc_multi_body.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "multi_body.h" #include "bond_orders.h" @@ -48,6 +53,7 @@ void Atom_Energy( reax_system *system, control_params *control, real e_un, CEunder1, CEunder2, CEunder3, CEunder4; real p_lp1, p_lp2, p_lp3; real p_ovun2, p_ovun3, p_ovun4, p_ovun5, p_ovun6, p_ovun7, p_ovun8; + real eng_tmp, f_tmp; single_body_parameters *sbp_i, *sbp_j; two_body_parameters *twbp; @@ -77,13 +83,17 @@ void Atom_Energy( reax_system *system, control_params *control, /* calculate the energy */ data->my_en.e_lp += e_lp = p_lp2 * workspace->Delta_lp[i] * inv_expvd2; - + dElp = p_lp2 * inv_expvd2 + 75 * p_lp2 * workspace->Delta_lp[i] * expvd2 * SQR(inv_expvd2); CElp = dElp * workspace->dDelta_lp[i]; workspace->CdDelta[i] += CElp; // lp - 1st term + /* tally into per-atom energy */ + if( system->evflag) + system->pair_ptr->ev_tally(i,i,system->n,1,e_lp,0.0,0.0,0.0,0.0,0.0); + #ifdef TEST_ENERGY // fprintf( out_control->elp, "%24.15e%24.15e%24.15e%24.15e\n", // p_lp2, workspace->Delta_lp_temp[i], expvd2, dElp ); @@ -110,12 +120,17 @@ void Atom_Energy( reax_system *system, control_params *control, if( vov3 > 3. ) { data->my_en.e_lp += e_lph = p_lp3 * SQR(vov3-3.0); - + deahu2dbo = 2.*p_lp3*(vov3 - 3.); deahu2dsbo = 2.*p_lp3*(vov3 - 3.)*(-1. - 0.16*pow(Di, 3.)); bo_ij->Cdbo += deahu2dbo; workspace->CdDelta[i] += deahu2dsbo; + + /* tally into per-atom energy */ + if( system->evflag) + system->pair_ptr->ev_tally(i,j,system->n,1,e_lph,0.0,0.0,0.0,0.0,0.0); + #ifdef TEST_ENERGY fprintf(out_control->elp,"C2cor%6d%6d%12.6f%12.6f%12.6f\n", system->my_atoms[i].orig_id, system->my_atoms[j].orig_id, @@ -202,7 +217,13 @@ void Atom_Energy( reax_system *system, control_params *control, CEunder3 = CEunder1 * (1.0 - dfvl*workspace->dDelta_lp[i]*inv_exp_ovun1); CEunder4 = CEunder1 * (dfvl*workspace->Delta_lp_temp[i]) * p_ovun4 * exp_ovun1 * SQR(inv_exp_ovun1) + CEunder2; - + + /* tally into per-atom energy */ + if( system->evflag) { + eng_tmp = e_ov + e_un; + f_tmp = CEover3 + CEunder3; + system->pair_ptr->ev_tally(i,i,system->n,1,eng_tmp,0.0,0.0,0.0,0.0,0.0); + } /* forces */ workspace->CdDelta[i] += CEover3; // OvCoor - 2nd term diff --git a/src/USER-REAXC/reaxc_multi_body.h b/src/USER-REAXC/reaxc_multi_body.h index dcd11fc7e7..ba43b31a6d 100644 --- a/src/USER-REAXC/reaxc_multi_body.h +++ b/src/USER-REAXC/reaxc_multi_body.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_nonbonded.cpp b/src/USER-REAXC/reaxc_nonbonded.cpp index ed475606fa..9b6c8f0320 100644 --- a/src/USER-REAXC/reaxc_nonbonded.cpp +++ b/src/USER-REAXC/reaxc_nonbonded.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,6 +24,7 @@ . ----------------------------------------------------------------------*/ +#include "pair_reax_c.h" #include "reaxc_types.h" #if defined(PURE_REAX) #include "nonbonded.h" @@ -32,25 +38,27 @@ #include "reaxc_vector.h" #endif - void vdW_Coulomb_Energy( reax_system *system, control_params *control, simulation_data *data, storage *workspace, reax_list **lists, output_controls *out_control ) { int i, j, pj, natoms; - int start_i, end_i, orig_i, orig_j; + int start_i, end_i, orig_i, orig_j, flag; real p_vdW1, p_vdW1i; real powr_vdW1, powgi_vdW1; real tmp, r_ij, fn13, exp1, exp2; real Tap, dTap, dfn13, CEvd, CEclmb, de_core; real dr3gamij_1, dr3gamij_3; - real e_ele, e_vdW, e_core; + real e_ele, e_vdW, e_core, SMALL = 0.0001; rvec temp, ext_press; two_body_parameters *twbp; far_neighbor_data *nbr_pj; reax_list *far_nbrs; // rtensor temp_rtensor, total_rtensor; + // Tallying variables: + real pe_vdw, f_tmp, delij[3]; + natoms = system->n; far_nbrs = (*lists) + FAR_NBRS; p_vdW1 = system->reax_param.gp.l[28]; @@ -69,9 +77,28 @@ void vdW_Coulomb_Energy( reax_system *system, control_params *control, j = nbr_pj->nbr; orig_j = system->my_atoms[j].orig_id; +#if defined(PURE_REAX) if( nbr_pj->d <= control->nonb_cut && (j < natoms || orig_i < orig_j) ) { - r_ij = nbr_pj->d; - twbp = &(system->reax_param.tbp[ system->my_atoms[i].type ] +#elif defined(LAMMPS_REAX) + flag = 0; + if(nbr_pj->d <= control->nonb_cut) { + if (j < natoms) flag = 1; + else if (orig_i < orig_j) flag = 1; + else if (orig_i == orig_j) { + if (nbr_pj->dvec[2] > SMALL) flag = 1; + else if (fabs(nbr_pj->dvec[2]) < SMALL) { + if (nbr_pj->dvec[1] > SMALL) flag = 1; + else if (fabs(nbr_pj->dvec[1]) < SMALL && nbr_pj->dvec[0] > SMALL) + flag = 1; + } + } + } + + if (flag) { +#endif + + r_ij = nbr_pj->d; + twbp = &(system->reax_param.tbp[ system->my_atoms[i].type ] [ system->my_atoms[j].type ]); /* Calculate Taper and its derivative */ @@ -138,13 +165,23 @@ void vdW_Coulomb_Energy( reax_system *system, control_params *control, data->my_en.e_ele += e_ele = C_ele * system->my_atoms[i].q * system->my_atoms[j].q * tmp; - CEclmb = C_ele * system->my_atoms[i].q * system->my_atoms[j].q * ( dTap - Tap * r_ij / dr3gamij_1 ) / dr3gamij_3; - // fprintf( fout, "%5d %5d %10.6f %10.6f\n", - // MIN( system->my_atoms[i].orig_id, system->my_atoms[j].orig_id ), - // MAX( system->my_atoms[i].orig_id, system->my_atoms[j].orig_id ), - // CEvd, CEclmb ); + + /* tally into per-atom energy */ + if( system->evflag || system->vflag_atom) { + pe_vdw = Tap * (e_vdW + e_core); + rvec_ScaledSum( delij, 1., system->my_atoms[i].x, + -1., system->my_atoms[j].x ); + f_tmp = -(CEvd + CEclmb); + system->pair_ptr->ev_tally(i,j,natoms,1,pe_vdw,e_ele, + f_tmp,delij[0],delij[1],delij[2]); + } + + /* fprintf(stderr, "%5d %5d %10.6f %10.6f\n", + MIN( system->my_atoms[i].orig_id, system->my_atoms[j].orig_id ), + MAX( system->my_atoms[i].orig_id, system->my_atoms[j].orig_id ), + CEvd, CEclmb ); */ if( control->virial == 0 ) { rvec_ScaledAdd( workspace->f[i], -(CEvd + CEclmb), nbr_pj->dvec ); @@ -161,13 +198,13 @@ void vdW_Coulomb_Energy( reax_system *system, control_params *control, rvec_iMultiply( ext_press, nbr_pj->rel_box, temp ); rvec_Add( data->my_ext_press, ext_press ); - // fprintf( stderr, "nonbonded(%d,%d): rel_box (%f %f %f) - // force(%f %f %f) ext_press (%12.6f %12.6f %12.6f)\n", - // i, j, nbr_pj->rel_box[0], nbr_pj->rel_box[1], nbr_pj->rel_box[2], - // temp[0], temp[1], temp[2], - // data->ext_press[0], data->ext_press[1], data->ext_press[2] ); + /* fprintf( stderr, "nonbonded(%d,%d): rel_box (%f %f %f) + force(%f %f %f) ext_press (%12.6f %12.6f %12.6f)\n", + i, j, nbr_pj->rel_box[0], nbr_pj->rel_box[1], nbr_pj->rel_box[2], + temp[0], temp[1], temp[2], + data->ext_press[0], data->ext_press[1], data->ext_press[2] ); */ } - + #ifdef TEST_ENERGY // fprintf( out_control->evdw, // "%12.9f%12.9f%12.9f%12.9f%12.9f%12.9f%12.9f%12.9f\n", @@ -212,10 +249,12 @@ void Tabulated_vdW_Coulomb_Energy( reax_system *system,control_params *control, { int i, j, pj, r, natoms, steps, update_freq, update_energies; int type_i, type_j, tmin, tmax; - int start_i, end_i, orig_i, orig_j; + int start_i, end_i, orig_i, orig_j, flag; real r_ij, base, dif; real e_vdW, e_ele; - real CEvd, CEclmb; + real CEvd, CEclmb, SMALL = 0.0001; + real f_tmp, delij[3]; + rvec temp, ext_press; far_neighbor_data *nbr_pj; reax_list *far_nbrs; @@ -239,9 +278,28 @@ void Tabulated_vdW_Coulomb_Energy( reax_system *system,control_params *control, j = nbr_pj->nbr; orig_j = system->my_atoms[j].orig_id; +#if defined(PURE_REAX) if( nbr_pj->d <= control->nonb_cut && (j < natoms || orig_i < orig_j) ) { +#elif defined(LAMMPS_REAX) + flag = 0; + if(nbr_pj->d <= control->nonb_cut) { + if (j < natoms) flag = 1; + else if (orig_i < orig_j) flag = 1; + else if (orig_i == orig_j) { + if (nbr_pj->dvec[2] > SMALL) flag = 1; + else if (fabs(nbr_pj->dvec[2]) < SMALL) { + if (nbr_pj->dvec[1] > SMALL) flag = 1; + else if (fabs(nbr_pj->dvec[1]) < SMALL && nbr_pj->dvec[0] > SMALL) + flag = 1; + } + } + } + + if (flag) { +#endif j = nbr_pj->nbr; type_j = system->my_atoms[j].type; + r_ij = nbr_pj->d; tmin = MIN( type_i, type_j ); tmax = MAX( type_i, type_j ); @@ -273,7 +331,17 @@ void Tabulated_vdW_Coulomb_Energy( reax_system *system,control_params *control, CEclmb = ((t->CEclmb[r].d*dif+t->CEclmb[r].c)*dif+t->CEclmb[r].b)*dif + t->CEclmb[r].a; CEclmb *= system->my_atoms[i].q * system->my_atoms[j].q; - + + + /* tally into per-atom energy */ + if( system->evflag || system->vflag_atom) { + rvec_ScaledSum( delij, 1., system->my_atoms[i].x, + -1., system->my_atoms[j].x ); + f_tmp = -(CEvd + CEclmb); + system->pair_ptr->ev_tally(i,j,natoms,1,e_vdW,e_ele, + f_tmp,delij[0],delij[1],delij[2]); + } + if( control->virial == 0 ) { rvec_ScaledAdd( workspace->f[i], -(CEvd + CEclmb), nbr_pj->dvec ); rvec_ScaledAdd( workspace->f[j], +(CEvd + CEclmb), nbr_pj->dvec ); @@ -319,16 +387,20 @@ void Tabulated_vdW_Coulomb_Energy( reax_system *system,control_params *control, void Compute_Polarization_Energy( reax_system *system, simulation_data *data ) { int i, type_i; - real q; + real q, en_tmp; data->my_en.e_pol = 0.0; for( i = 0; i < system->n; i++ ) { q = system->my_atoms[i].q; type_i = system->my_atoms[i].type; - data->my_en.e_pol += - KCALpMOL_to_EV * (system->reax_param.sbp[type_i].chi * q + - (system->reax_param.sbp[type_i].eta / 2.) * SQR(q)); + en_tmp = KCALpMOL_to_EV * (system->reax_param.sbp[type_i].chi * q + + (system->reax_param.sbp[type_i].eta / 2.) * SQR(q)); + data->my_en.e_pol += en_tmp; + + /* tally into per-atom energy */ + if( system->evflag) + system->pair_ptr->ev_tally(i,i,system->n,1,0.0,en_tmp,0.0,0.0,0.0,0.0); } } diff --git a/src/USER-REAXC/reaxc_nonbonded.h b/src/USER-REAXC/reaxc_nonbonded.h index 7e418d43e1..81a53d82ec 100644 --- a/src/USER-REAXC/reaxc_nonbonded.h +++ b/src/USER-REAXC/reaxc_nonbonded.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_reset_tools.cpp b/src/USER-REAXC/reaxc_reset_tools.cpp index 7b7141f5a5..234104c190 100644 --- a/src/USER-REAXC/reaxc_reset_tools.cpp +++ b/src/USER-REAXC/reaxc_reset_tools.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "reset_tools.h" #include "list.h" diff --git a/src/USER-REAXC/reaxc_reset_tools.h b/src/USER-REAXC/reaxc_reset_tools.h index 988883dfe7..1662813a5c 100644 --- a/src/USER-REAXC/reaxc_reset_tools.h +++ b/src/USER-REAXC/reaxc_reset_tools.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_system_props.cpp b/src/USER-REAXC/reaxc_system_props.cpp index 9997394afa..f708d9cac3 100644 --- a/src/USER-REAXC/reaxc_system_props.cpp +++ b/src/USER-REAXC/reaxc_system_props.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "system_props.h" #include "tool_box.h" diff --git a/src/USER-REAXC/reaxc_system_props.h b/src/USER-REAXC/reaxc_system_props.h index 712a6f679f..fb1cc40e60 100644 --- a/src/USER-REAXC/reaxc_system_props.h +++ b/src/USER-REAXC/reaxc_system_props.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_tool_box.cpp b/src/USER-REAXC/reaxc_tool_box.cpp index 074921248c..1846500e05 100644 --- a/src/USER-REAXC/reaxc_tool_box.cpp +++ b/src/USER-REAXC/reaxc_tool_box.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "tool_box.h" #elif defined(LAMMPS_REAX) diff --git a/src/USER-REAXC/reaxc_tool_box.h b/src/USER-REAXC/reaxc_tool_box.h index 9a0b60247b..b6666abe4f 100644 --- a/src/USER-REAXC/reaxc_tool_box.h +++ b/src/USER-REAXC/reaxc_tool_box.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_torsion_angles.cpp b/src/USER-REAXC/reaxc_torsion_angles.cpp index f1afe3c3a6..940f56757b 100644 --- a/src/USER-REAXC/reaxc_torsion_angles.cpp +++ b/src/USER-REAXC/reaxc_torsion_angles.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "torsion_angles.h" #include "bond_orders.h" @@ -196,6 +201,10 @@ void Torsion_Angles( reax_system *system, control_params *control, // char fname[100]; // FILE *ftor; + // Virial tallying variables + real delil[3], deljl[3], delkl[3]; + real eng_tmp, f_scaler, fi_tmp[3], fj_tmp[3], fk_tmp[3]; + // sprintf( fname, "tor%d.out", system->my_rank ); // ftor = fopen( fname, "w" ); @@ -474,6 +483,39 @@ void Torsion_Angles( reax_system *system, control_params *control, rvec_Add( data->my_ext_press, ext_press ); } + /* tally into per-atom virials */ + if( system->vflag_atom || system->evflag) { + + // acquire vectors + rvec_ScaledSum( delil, 1., system->my_atoms[l].x, + -1., system->my_atoms[i].x ); + rvec_ScaledSum( deljl, 1., system->my_atoms[l].x, + -1., system->my_atoms[j].x ); + rvec_ScaledSum( delkl, 1., system->my_atoms[l].x, + -1., system->my_atoms[k].x ); + // dcos_theta_ijk + rvec_Scale( fi_tmp, CEtors7 + CEconj4, p_ijk->dcos_dk ); + rvec_Scale( fj_tmp, CEtors7 + CEconj4, p_ijk->dcos_dj ); + rvec_Scale( fk_tmp, CEtors7 + CEconj4, p_ijk->dcos_di ); + + // dcos_theta_jkl + rvec_ScaledAdd( fj_tmp, CEtors8 + CEconj5, p_jkl->dcos_di ); + rvec_ScaledAdd( fk_tmp, CEtors8 + CEconj5, p_jkl->dcos_dj ); + + // dcos_omega + rvec_ScaledAdd( fi_tmp, CEtors9 + CEconj6, dcos_omega_di ); + rvec_ScaledAdd( fj_tmp, CEtors9 + CEconj6, dcos_omega_dj ); + rvec_ScaledAdd( fk_tmp, CEtors9 + CEconj6, dcos_omega_dk ); + + // tally + eng_tmp = e_tor + e_con; + if( system->evflag) + system->pair_ptr->ev_tally(j,k,natoms,1,eng_tmp,0.0,0.0,0.0,0.0,0.0); + if( system->vflag_atom) + system->pair_ptr->v_tally4(i,j,k,l,fi_tmp,fj_tmp,fk_tmp,delil,deljl,delkl); + } + + #ifdef TEST_ENERGY /* fprintf( out_control->etor, "%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f\n", diff --git a/src/USER-REAXC/reaxc_torsion_angles.h b/src/USER-REAXC/reaxc_torsion_angles.h index d3c25501e6..a34ef7709e 100644 --- a/src/USER-REAXC/reaxc_torsion_angles.h +++ b/src/USER-REAXC/reaxc_torsion_angles.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_traj.cpp b/src/USER-REAXC/reaxc_traj.cpp index 0aaa413156..60c87a46a2 100644 --- a/src/USER-REAXC/reaxc_traj.cpp +++ b/src/USER-REAXC/reaxc_traj.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "traj.h" #include "list.h" diff --git a/src/USER-REAXC/reaxc_traj.h b/src/USER-REAXC/reaxc_traj.h index 99e0c5223a..074e65df28 100644 --- a/src/USER-REAXC/reaxc_traj.h +++ b/src/USER-REAXC/reaxc_traj.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_types.h b/src/USER-REAXC/reaxc_types.h index be0378de39..365b289ac0 100644 --- a/src/USER-REAXC/reaxc_types.h +++ b/src/USER-REAXC/reaxc_types.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -451,7 +456,7 @@ typedef struct real ghost_cutoff; } boundary_cutoff; - +using LAMMPS_NS::Pair; typedef struct { @@ -469,6 +474,10 @@ typedef struct boundary_cutoff bndry_cuts; reax_atom *my_atoms; + + int evflag; + int vflag_atom; + class Pair *pair_ptr; } reax_system; diff --git a/src/USER-REAXC/reaxc_valence_angles.cpp b/src/USER-REAXC/reaxc_valence_angles.cpp index 44137cde22..8a0dd815d5 100644 --- a/src/USER-REAXC/reaxc_valence_angles.cpp +++ b/src/USER-REAXC/reaxc_valence_angles.cpp @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "valence_angles.h" #include "bond_orders.h" @@ -101,6 +106,10 @@ void Valence_Angles( reax_system *system, control_params *control, rvec force, ext_press; // rtensor temp_rtensor, total_rtensor; + // Tallying variables + real eng_tmp, f_scaler, fi_tmp[3], fj_tmp[3], fk_tmp[3]; + real delij[3], delkj[3]; + three_body_header *thbh; three_body_parameters *thbp; three_body_interaction_data *p_ijk, *p_kji; @@ -109,7 +118,6 @@ void Valence_Angles( reax_system *system, control_params *control, reax_list *bonds = (*lists) + BONDS; reax_list *thb_intrs = (*lists) + THREE_BODIES; - /* global parameters used in these calculations */ p_val6 = system->reax_param.gp.l[14]; p_val8 = system->reax_param.gp.l[33]; @@ -118,7 +126,7 @@ void Valence_Angles( reax_system *system, control_params *control, num_thb_intrs = 0; - for( j = 0; j < system->N; ++j ) { + for( j = 0; j < system->N; ++j ) { // Ray: the first one with system->N // fprintf( out_control->eval, "j: %d\n", j ); type_j = system->my_atoms[j].type; start_j = Start_Index(j, bonds); @@ -361,6 +369,7 @@ void Valence_Angles( reax_system *system, control_params *control, CEcoa5 = -2 * p_coa3 * (workspace->total_bond_order[k]-BOA_jk) * e_coa; /* END COALITION ENERGY */ + /* FORCES */ bo_ij->Cdbo += (CEval1 + CEpen2 + (CEcoa1 - CEcoa4)); @@ -385,7 +394,6 @@ void Valence_Angles( reax_system *system, control_params *control, bo_jt->Cdbopi2 += CEval5; } - if( control->virial == 0 ) { rvec_ScaledAdd( workspace->f[i], CEval8, p_ijk->dcos_di ); rvec_ScaledAdd( workspace->f[j], CEval8, p_ijk->dcos_dj ); @@ -406,6 +414,27 @@ void Valence_Angles( reax_system *system, control_params *control, rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); rvec_Add( data->my_ext_press, ext_press ); } + + /* tally into per-atom virials */ + if( system->vflag_atom || system->evflag) { + + /* Acquire vectors */ + rvec_ScaledSum( delij, 1., system->my_atoms[i].x, + -1., system->my_atoms[j].x ); + rvec_ScaledSum( delkj, 1., system->my_atoms[k].x, + -1., system->my_atoms[j].x ); + + rvec_Scale( fi_tmp, -CEval8, p_ijk->dcos_di ); + rvec_Scale( fj_tmp, -CEval8, p_ijk->dcos_dj ); + rvec_Scale( fk_tmp, -CEval8, p_ijk->dcos_dk ); + + eng_tmp = e_ang + e_pen + e_coa; + + if( system->evflag) + system->pair_ptr->ev_tally(j,j,system->N,1,eng_tmp,0.0,0.0,0.0,0.0,0.0); + if( system->vflag_atom) + system->pair_ptr->v_tally3(i,j,k,fi_tmp,fk_tmp,delij,delkj); + } #ifdef TEST_ENERGY /*fprintf( out_control->eval, "%12.8f%12.8f%12.8f%12.8f\n", diff --git a/src/USER-REAXC/reaxc_valence_angles.h b/src/USER-REAXC/reaxc_valence_angles.h index ac27db483d..21cb5ec451 100644 --- a/src/USER-REAXC/reaxc_valence_angles.h +++ b/src/USER-REAXC/reaxc_valence_angles.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of diff --git a/src/USER-REAXC/reaxc_vector.cpp b/src/USER-REAXC/reaxc_vector.cpp index 77feddf9dd..df4a546d8d 100644 --- a/src/USER-REAXC/reaxc_vector.cpp +++ b/src/USER-REAXC/reaxc_vector.cpp @@ -2,11 +2,16 @@ PuReMD - Purdue ReaxFF Molecular Dynamics Program Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -19,7 +24,7 @@ . ----------------------------------------------------------------------*/ -#include "reaxc_types.h" +#include "pair_reax_c.h" #if defined(PURE_REAX) #include "vector.h" #include "random.h" diff --git a/src/USER-REAXC/reaxc_vector.h b/src/USER-REAXC/reaxc_vector.h index 3771406478..2d43cc057c 100644 --- a/src/USER-REAXC/reaxc_vector.h +++ b/src/USER-REAXC/reaxc_vector.h @@ -1,12 +1,17 @@ /*---------------------------------------------------------------------- PuReMD - Purdue ReaxFF Molecular Dynamics Program - + Copyright (2010) Purdue University - Hasan Metin Aktulga, haktulga@cs.purdue.edu + Hasan Metin Aktulga, hmaktulga@lbl.gov Joseph Fogarty, jcfogart@mail.usf.edu Sagar Pandit, pandit@usf.edu Ananth Y Grama, ayg@cs.purdue.edu + Please cite the related publication: + H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, + "Parallel Reactive Molecular Dynamics: Numerical Methods and + Algorithmic Techniques", Parallel Computing, in press. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of @@ -22,6 +27,7 @@ #ifndef __VECTOR_H_ #define __VECTOR_H_ +#include "pair.h" #include "reaxc_types.h" #include "reaxc_defs.h" diff --git a/src/USER-SPH/Install.sh b/src/USER-SPH/Install.sh new file mode 100644 index 0000000000..56b8b50b5b --- /dev/null +++ b/src/USER-SPH/Install.sh @@ -0,0 +1,59 @@ +# Install/unInstall package files in LAMMPS + +if (test $1 = 1) then + + cp -p atom_vec_meso.cpp .. + cp -p pair_sph_heatconduction.cpp .. + cp -p pair_sph_idealgas.cpp .. + cp -p pair_sph_lj.cpp .. + cp -p pair_sph_rhosum.cpp .. + cp -p pair_sph_taitwater.cpp .. + cp -p pair_sph_taitwater_morris.cpp .. + cp -p compute_meso_e_atom.cpp .. + cp -p compute_meso_rho_atom.cpp .. + cp -p compute_meso_t_atom.cpp .. + cp -p fix_meso.cpp .. + cp -p fix_meso_stationary.cpp .. + + cp -p atom_vec_meso.h .. + cp -p pair_sph_heatconduction.h .. + cp -p pair_sph_idealgas.h .. + cp -p pair_sph_lj.h .. + cp -p pair_sph_rhosum.h .. + cp -p pair_sph_taitwater.h .. + cp -p pair_sph_taitwater_morris.h .. + cp -p compute_meso_e_atom.h .. + cp -p compute_meso_rho_atom.h .. + cp -p compute_meso_t_atom.h .. + cp -p fix_meso.h .. + cp -p fix_meso_stationary.h .. + +elif (test $1 = 0) then + + rm -f ../atom_vec_meso.cpp + rm -f ../pair_sph_heatconduction.cpp + rm -f ../pair_sph_idealgas.cpp + rm -f ../pair_sph_lj.cpp + rm -f ../pair_sph_rhosum.cpp + rm -f ../pair_sph_taitwater.cpp + rm -f ../pair_sph_taitwater_morris.cpp + rm -f ../compute_meso_e_atom.cpp + rm -f ../compute_meso_rho_atom.cpp + rm -f ../compute_meso_t_atom.cpp + rm -f ../fix_meso.cpp + rm -f ../fix_meso_stationary.cpp + + rm -f ../atom_vec_meso.h + rm -f ../pair_sph_heatconduction.h + rm -f ../pair_sph_idealgas.h + rm -f ../pair_sph_lj.h + rm -f ../pair_sph_rhosum.h + rm -f ../pair_sph_taitwater.h + rm -f ../pair_sph_taitwater_morris.h + rm -f ../compute_meso_e_atom.h + rm -f ../compute_meso_rho_atom.h + rm -f ../compute_meso_t_atom.h + rm -f ../fix_meso.h + rm -f ../fix_meso_stationary.h + +fi diff --git a/src/USER-SPH/README b/src/USER-SPH/README new file mode 100644 index 0000000000..1658ff2f7a --- /dev/null +++ b/src/USER-SPH/README @@ -0,0 +1,20 @@ +This package implements smoothed particle hydrodynamics (SPH) in +LAMMPS. Currently, the package has the following features: + +* Tait, ideal gas, Lennard-Jones equation of states, full support for + complete (i.e. internal-energy dependent) equations of state +* plain or Monaghans XSPH integration of the equations of motion +* density continuity or density summation to propagate the density field +* commands to set internal energy and density of particles from the + input script +* output commands to access internal energy and density for dumping and + thermo output + +See the file doc/USER/sph/SPH_LAMMPS_userguide.pdf to get started. + +There are example scripts for using this package in examples/USER/sph. + +The person who created this package is Georg Ganzenmuller at the +Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in +Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if +you have questions. diff --git a/src/USER-SPH/atom_vec_meso.cpp b/src/USER-SPH/atom_vec_meso.cpp new file mode 100644 index 0000000000..792355007b --- /dev/null +++ b/src/USER-SPH/atom_vec_meso.cpp @@ -0,0 +1,869 @@ +/* ---------------------------------------------------------------------- + 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 "stdlib.h" +#include "atom_vec_meso.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; + +#define DELTA 10000 + +/* ---------------------------------------------------------------------- */ + +AtomVecMeso::AtomVecMeso(LAMMPS *lmp, int narg, char **arg) : + AtomVec(lmp, narg, arg) { + molecular = 0; + mass_type = 1; + + comm_x_only = 0; // we communicate not only x forward but also vest ... + comm_f_only = 0; // we also communicate de and drho in reverse direction + size_forward = 8; // 3 + rho + e + vest[3], that means we may only communicate 5 in hybrid + size_reverse = 5; // 3 + drho + de + size_border = 12; // 6 + rho + e + vest[3] + cv + size_velocity = 3; + size_data_atom = 8; + size_data_vel = 4; + xcol_data = 6; + + atom->e_flag = 1; + atom->rho_flag = 1; + atom->cv_flag = 1; + atom->vest_flag = 1; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by DELTA + n > 0 allocates arrays to size n + ------------------------------------------------------------------------- */ + +void AtomVecMeso::grow(int n) { + if (n == 0) + nmax += DELTA; + else + nmax = n; + atom->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + tag = memory->grow(atom->tag, nmax, "atom:tag"); + type = memory->grow(atom->type, nmax, "atom:type"); + mask = memory->grow(atom->mask, nmax, "atom:mask"); + image = memory->grow(atom->image, nmax, "atom:image"); + x = memory->grow(atom->x, nmax, 3, "atom:x"); + v = memory->grow(atom->v, nmax, 3, "atom:v"); + f = memory->grow(atom->f, nmax*comm->nthreads, 3, "atom:f"); + + rho = memory->grow(atom->rho, nmax, "atom:rho"); + drho = memory->grow(atom->drho, nmax*comm->nthreads, "atom:drho"); + e = memory->grow(atom->e, nmax, "atom:e"); + de = memory->grow(atom->de, nmax*comm->nthreads, "atom:de"); + vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); + cv = memory->grow(atom->cv, nmax, "atom:cv"); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs + ------------------------------------------------------------------------- */ + +void AtomVecMeso::grow_reset() { + tag = atom->tag; + type = atom->type; + mask = atom->mask; + image = atom->image; + x = atom->x; + v = atom->v; + f = atom->f; + rho = atom->rho; + drho = atom->drho; + e = atom->e; + de = atom->de; + vest = atom->vest; + cv = atom->cv; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMeso::copy(int i, int j, int delflag) { + //printf("in AtomVecMeso::copy\n"); + tag[j] = tag[i]; + type[j] = type[i]; + mask[j] = mask[i]; + image[j] = image[i]; + x[j][0] = x[i][0]; + x[j][1] = x[i][1]; + x[j][2] = x[i][2]; + v[j][0] = v[i][0]; + v[j][1] = v[i][1]; + v[j][2] = v[i][2]; + + rho[j] = rho[i]; + drho[j] = drho[i]; + e[j] = e[i]; + de[j] = de[i]; + cv[j] = cv[i]; + vest[j][0] = vest[i][0]; + vest[j][1] = vest[i][1]; + vest[j][2] = vest[i][2]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i, j); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::pack_comm_hybrid(int n, int *list, double *buf) { + //printf("in AtomVecMeso::pack_comm_hybrid\n"); + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = rho[j]; + buf[m++] = e[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::unpack_comm_hybrid(int n, int first, double *buf) { + //printf("in AtomVecMeso::unpack_comm_hybrid\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + rho[i] = buf[m++]; + e[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::pack_border_hybrid(int n, int *list, double *buf) { + //printf("in AtomVecMeso::pack_border_hybrid\n"); + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = rho[j]; + buf[m++] = e[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::unpack_border_hybrid(int n, int first, double *buf) { + //printf("in AtomVecMeso::unpack_border_hybrid\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + rho[i] = buf[m++]; + e[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::pack_reverse_hybrid(int n, int first, double *buf) { + //printf("in AtomVecMeso::pack_reverse_hybrid\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = drho[i]; + buf[m++] = de[i]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::unpack_reverse_hybrid(int n, int *list, double *buf) { + //printf("in AtomVecMeso::unpack_reverse_hybrid\n"); + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + drho[j] += buf[m++]; + de[j] += buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::pack_comm(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + //printf("in AtomVecMeso::pack_comm\n"); + 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++] = rho[j]; + buf[m++] = e[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[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; + } + 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++] = rho[j]; + buf[m++] = e[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + //printf("in AtomVecMeso::pack_comm_vel\n"); + 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++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = e[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[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; + } + 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++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = e[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMeso::unpack_comm(int n, int first, double *buf) { + //printf("in AtomVecMeso::unpack_comm\n"); + 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++]; + rho[i] = buf[m++]; + e[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMeso::unpack_comm_vel(int n, int first, double *buf) { + //printf("in AtomVecMeso::unpack_comm_vel\n"); + 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++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + rho[i] = buf[m++]; + e[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::pack_reverse(int n, int first, double *buf) { + //printf("in AtomVecMeso::pack_reverse\n"); + 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]; + buf[m++] = drho[i]; + buf[m++] = de[i]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMeso::unpack_reverse(int n, int *list, double *buf) { + //printf("in AtomVecMeso::unpack_reverse\n"); + 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++]; + drho[j] += buf[m++]; + de[j] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::pack_border(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + //printf("in AtomVecMeso::pack_border\n"); + 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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = rho[j]; + buf[m++] = e[j]; + buf[m++] = cv[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[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]; + } + 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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = rho[j]; + buf[m++] = e[j]; + buf[m++] = cv[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMeso::pack_border_vel(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + //printf("in AtomVecMeso::pack_border_vel\n"); + 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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = e[j]; + buf[m++] = cv[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[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]; + } + 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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = e[j]; + buf[m++] = cv[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMeso::unpack_border(int n, int first, double *buf) { + //printf("in AtomVecMeso::unpack_border\n"); + 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] = static_cast (buf[m++]); + type[i] = static_cast (buf[m++]); + mask[i] = static_cast (buf[m++]); + rho[i] = buf[m++]; + e[i] = buf[m++]; + cv[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMeso::unpack_border_vel(int n, int first, double *buf) { + //printf("in AtomVecMeso::unpack_border_vel\n"); + 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] = static_cast (buf[m++]); + type[i] = static_cast (buf[m++]); + mask[i] = static_cast (buf[m++]); + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + rho[i] = buf[m++]; + e[i] = buf[m++]; + cv[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them + ------------------------------------------------------------------------- */ + +int AtomVecMeso::pack_exchange(int i, double *buf) { + //printf("in AtomVecMeso::pack_exchange\n"); + 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++] = tag[i]; + buf[m++] = type[i]; + buf[m++] = mask[i]; + buf[m++] = image[i]; + buf[m++] = rho[i]; + buf[m++] = e[i]; + buf[m++] = cv[i]; + buf[m++] = vest[i][0]; + buf[m++] = vest[i][1]; + buf[m++] = vest[i][2]; + + 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 AtomVecMeso::unpack_exchange(double *buf) { + //printf("in AtomVecMeso::unpack_exchange\n"); + 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] = static_cast (buf[m++]); + type[nlocal] = static_cast (buf[m++]); + mask[nlocal] = static_cast (buf[m++]); + image[nlocal] = static_cast (buf[m++]); + rho[nlocal] = buf[m++]; + e[nlocal] = buf[m++]; + cv[nlocal] = buf[m++]; + vest[nlocal][0] = buf[m++]; + vest[nlocal][1] = buf[m++]; + vest[nlocal][2] = buf[m++]; + + 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 AtomVecMeso::size_restart() { + int i; + + int nlocal = atom->nlocal; + int n = 17 * nlocal; // 11 + rho + e + cv + vest[3] + + 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 AtomVecMeso::pack_restart(int i, double *buf) { + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = tag[i]; + buf[m++] = type[i]; + buf[m++] = mask[i]; + buf[m++] = image[i]; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = rho[i]; + buf[m++] = e[i]; + buf[m++] = cv[i]; + buf[m++] = vest[i][0]; + buf[m++] = vest[i][1]; + buf[m++] = vest[i][2]; + + 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 AtomVecMeso::unpack_restart(double *buf) { + 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] = static_cast (buf[m++]); + type[nlocal] = static_cast (buf[m++]); + mask[nlocal] = static_cast (buf[m++]); + image[nlocal] = static_cast (buf[m++]); + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + rho[nlocal] = buf[m++]; + e[nlocal] = buf[m++]; + cv[nlocal] = buf[m++]; + vest[nlocal][0] = buf[m++]; + vest[nlocal][1] = buf[m++]; + vest[nlocal][2] = buf[m++]; + + 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 AtomVecMeso::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] = (512 << 20) | (512 << 10) | 512; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + rho[nlocal] = 0.0; + e[nlocal] = 0.0; + cv[nlocal] = 1.0; + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + de[nlocal] = 0.0; + drho[nlocal] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities + ------------------------------------------------------------------------- */ + +void AtomVecMeso::data_atom(double *coord, int imagetmp, char **values) { + int nlocal = atom->nlocal; + if (nlocal == nmax) + grow(0); + + tag[nlocal] = atoi(values[0]); + if (tag[nlocal] <= 0) + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); + + type[nlocal] = atoi(values[1]); + if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + rho[nlocal] = atof(values[2]); + e[nlocal] = atof(values[3]); + cv[nlocal] = atof(values[4]); + + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + + //printf("rho=%f, e=%f, cv=%f, x=%f\n", rho[nlocal], e[nlocal], cv[nlocal], x[nlocal][0]); + + image[nlocal] = imagetmp; + + mask[nlocal] = 1; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + + de[nlocal] = 0.0; + drho[nlocal] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one line in Atoms section of data file + initialize other atom quantities for this sub-style + ------------------------------------------------------------------------- */ + +int AtomVecMeso::data_atom_hybrid(int nlocal, char **values) { + + rho[nlocal] = atof(values[0]); + e[nlocal] = atof(values[1]); + cv[nlocal] = atof(values[2]); + + return 3; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory + ------------------------------------------------------------------------- */ + +bigint AtomVecMeso::memory_usage() { + bigint bytes = 0; + + if (atom->memcheck("tag")) + bytes += memory->usage(tag, nmax); + if (atom->memcheck("type")) + bytes += memory->usage(type, nmax); + if (atom->memcheck("mask")) + bytes += memory->usage(mask, nmax); + if (atom->memcheck("image")) + bytes += memory->usage(image, nmax); + if (atom->memcheck("x")) + bytes += memory->usage(x, nmax, 3); + if (atom->memcheck("v")) + bytes += memory->usage(v, nmax, 3); + if (atom->memcheck("f")) + bytes += memory->usage(f, nmax*comm->nthreads, 3); + if (atom->memcheck("rho")) + bytes += memory->usage(rho, nmax); + if (atom->memcheck("drho")) + bytes += memory->usage(drho, nmax*comm->nthreads); + if (atom->memcheck("e")) + bytes += memory->usage(e, nmax); + if (atom->memcheck("de")) + bytes += memory->usage(de, nmax*comm->nthreads); + if (atom->memcheck("cv")) + bytes += memory->usage(cv, nmax); + if (atom->memcheck("vest")) + bytes += memory->usage(vest, nmax); + + return bytes; +} diff --git a/src/USER-SPH/atom_vec_meso.h b/src/USER-SPH/atom_vec_meso.h new file mode 100644 index 0000000000..b187198c09 --- /dev/null +++ b/src/USER-SPH/atom_vec_meso.h @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------- + 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(meso,AtomVecMeso) + +#else + +#ifndef LMP_ATOM_VEC_MESO_H +#define LMP_ATOM_VEC_MESO_H + +#include "atom_vec.h" + +namespace LAMMPS_NS { + +class AtomVecMeso : public AtomVec { + public: + AtomVecMeso(class LAMMPS *, int, char **); + ~AtomVecMeso() {} + 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 *); + void unpack_comm(int, int, double *); + void unpack_comm_vel(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + + int pack_comm_hybrid(int, int *, double *); + int unpack_comm_hybrid(int, int, double *); + + int pack_border_hybrid(int, int *, double *); + int unpack_border_hybrid(int, int, double *); + + int pack_reverse_hybrid(int, int, double *); + int unpack_reverse_hybrid(int, int *, double *); + + int pack_border(int, int *, double *, int, int *); + int pack_border_vel(int, int *, double *, int, int *); + void unpack_border(int, int, double *); + void unpack_border_vel(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 *, int, char **); + int data_atom_hybrid(int, char **); + bigint memory_usage(); + + private: + int *tag,*type,*mask,*image; + double **x,**v,**f; + double *rho, *drho, *e, *de, *cv; + double **vest; // estimated velocity during force computation +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/compute_meso_e_atom.cpp b/src/USER-SPH/compute_meso_e_atom.cpp new file mode 100644 index 0000000000..4ee0dce518 --- /dev/null +++ b/src/USER-SPH/compute_meso_e_atom.cpp @@ -0,0 +1,97 @@ +/* ---------------------------------------------------------------------- + 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 "string.h" +#include "compute_meso_e_atom.h" +#include "atom.h" +#include "update.h" +#include "modify.h" +#include "comm.h" +#include "force.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeMesoEAtom::ComputeMesoEAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Number of arguments for compute meso_e/atom command != 3"); + if (atom->e_flag != 1) error->all(FLERR,"compute meso_e/atom command requires atom_style with energy (e.g. meso)"); + + peratom_flag = 1; + size_peratom_cols = 0; + + nmax = 0; + evector = NULL; +} + +/* ---------------------------------------------------------------------- */ + +ComputeMesoEAtom::~ComputeMesoEAtom() +{ + memory->sfree(evector); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeMesoEAtom::init() +{ + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"evector/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute evector/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeMesoEAtom::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // grow evector array if necessary + + if (atom->nlocal > nmax) { + memory->sfree(evector); + nmax = atom->nmax; + evector = (double *) memory->smalloc(nmax*sizeof(double),"evector/atom:evector"); + vector_atom = evector; + } + + double *e = atom->e; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + evector[i] = e[i]; + } + else { + evector[i] = 0.0; + } + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeMesoEAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/USER-SPH/compute_meso_e_atom.h b/src/USER-SPH/compute_meso_e_atom.h new file mode 100644 index 0000000000..07fc01c920 --- /dev/null +++ b/src/USER-SPH/compute_meso_e_atom.h @@ -0,0 +1,43 @@ +/* ---------------------------------------------------------------------- + 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(meso_e/atom,ComputeMesoEAtom) + +#else + +#ifndef LMP_COMPUTE_MESO_E_ATOM_H +#define LMP_COMPUTE_MESO_E_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeMesoEAtom : public Compute { + public: + ComputeMesoEAtom(class LAMMPS *, int, char **); + ~ComputeMesoEAtom(); + void init(); + void compute_peratom(); + double memory_usage(); + + private: + int nmax; + double *evector; +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/compute_meso_rho_atom.cpp b/src/USER-SPH/compute_meso_rho_atom.cpp new file mode 100644 index 0000000000..465bbfe164 --- /dev/null +++ b/src/USER-SPH/compute_meso_rho_atom.cpp @@ -0,0 +1,99 @@ +/* ---------------------------------------------------------------------- + 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 "string.h" +#include "compute_meso_rho_atom.h" +#include "atom.h" +#include "update.h" +#include "modify.h" +#include "comm.h" +#include "force.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeMesoRhoAtom::ComputeMesoRhoAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Illegal compute meso_rho/atom command"); + if (atom->rho_flag != 1) error->all(FLERR,"compute meso_rho/atom command requires atom_style with density (e.g. meso)"); + + peratom_flag = 1; + size_peratom_cols = 0; + + nmax = 0; + rhoVector = NULL; +} + +/* ---------------------------------------------------------------------- */ + +ComputeMesoRhoAtom::~ComputeMesoRhoAtom() +{ + memory->sfree(rhoVector); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeMesoRhoAtom::init() +{ + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"rhoVector/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute rhoVector/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeMesoRhoAtom::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // grow rhoVector array if necessary + + if (atom->nlocal > nmax) { + memory->sfree(rhoVector); + nmax = atom->nmax; + rhoVector = (double *) memory->smalloc(nmax*sizeof(double),"atom:rhoVector"); + vector_atom = rhoVector; + } + + // compute kinetic energy for each atom in group + + double *rho = atom->rho; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + rhoVector[i] = rho[i]; + } + else { + rhoVector[i] = 0.0; + } + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeMesoRhoAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/USER-SPH/compute_meso_rho_atom.h b/src/USER-SPH/compute_meso_rho_atom.h new file mode 100644 index 0000000000..e1100a2f81 --- /dev/null +++ b/src/USER-SPH/compute_meso_rho_atom.h @@ -0,0 +1,43 @@ +/* ---------------------------------------------------------------------- + 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(meso_rho/atom,ComputeMesoRhoAtom) + +#else + +#ifndef LMP_COMPUTE_MESO_RHO_ATOM_H +#define LMP_COMPUTE_MESO_RHO_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeMesoRhoAtom : public Compute { + public: + ComputeMesoRhoAtom(class LAMMPS *, int, char **); + ~ComputeMesoRhoAtom(); + void init(); + void compute_peratom(); + double memory_usage(); + + private: + int nmax; + double *rhoVector; +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/compute_meso_t_atom.cpp b/src/USER-SPH/compute_meso_t_atom.cpp new file mode 100644 index 0000000000..5d4f1177ba --- /dev/null +++ b/src/USER-SPH/compute_meso_t_atom.cpp @@ -0,0 +1,101 @@ +/* ---------------------------------------------------------------------- + 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 "string.h" +#include "compute_meso_t_atom.h" +#include "atom.h" +#include "update.h" +#include "modify.h" +#include "comm.h" +#include "force.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeMesoTAtom::ComputeMesoTAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Number of arguments for compute meso_t/atom command != 3"); + if ((atom->e_flag != 1) || (atom->cv_flag != 1)) + error->all(FLERR,"compute meso_e/atom command requires atom_style with both energy and heat capacity (e.g. meso)"); + + peratom_flag = 1; + size_peratom_cols = 0; + + nmax = 0; + tvector = NULL; +} + +/* ---------------------------------------------------------------------- */ + +ComputeMesoTAtom::~ComputeMesoTAtom() +{ + memory->sfree(tvector); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeMesoTAtom::init() +{ + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"meso_t/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute meso_t/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeMesoTAtom::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // grow tvector array if necessary + + if (atom->nlocal > nmax) { + memory->sfree(tvector); + nmax = atom->nmax; + tvector = (double *) memory->smalloc(nmax*sizeof(double),"tvector/atom:tvector"); + vector_atom = tvector; + } + + double *e = atom->e; + double *cv = atom->cv; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + if (cv[i] > 0.0) { + tvector[i] = e[i] / cv[i]; + } + } + else { + tvector[i] = 0.0; + } + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeMesoTAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/USER-SPH/compute_meso_t_atom.h b/src/USER-SPH/compute_meso_t_atom.h new file mode 100644 index 0000000000..279d749f87 --- /dev/null +++ b/src/USER-SPH/compute_meso_t_atom.h @@ -0,0 +1,43 @@ +/* ---------------------------------------------------------------------- + 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(meso_t/atom,ComputeMesoTAtom) + +#else + +#ifndef LMP_COMPUTE_MESO_T_ATOM_H +#define LMP_COMPUTE_MESO_T_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeMesoTAtom : public Compute { + public: + ComputeMesoTAtom(class LAMMPS *, int, char **); + ~ComputeMesoTAtom(); + void init(); + void compute_peratom(); + double memory_usage(); + + private: + int nmax; + double *tvector; +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/fix_meso.cpp b/src/USER-SPH/fix_meso.cpp new file mode 100644 index 0000000000..cfab98164e --- /dev/null +++ b/src/USER-SPH/fix_meso.cpp @@ -0,0 +1,167 @@ +/* ---------------------------------------------------------------------- + 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 "stdio.h" +#include "string.h" +#include "fix_meso.h" +#include "math.h" +#include "stdlib.h" +#include "string.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "update.h" +#include "integrate.h" +#include "respa.h" +#include "memory.h" +#include "error.h" +#include "pair.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +FixMeso::FixMeso(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) { + + if ((atom->e_flag != 1) || (atom->rho_flag != 1)) + error->all(FLERR, + "fix meso command requires atom_style with both energy and density"); + + if (narg != 3) + error->all(FLERR,"Illegal number of arguments for fix meso command"); + + time_integrate = 1; +} + +/* ---------------------------------------------------------------------- */ + +int FixMeso::setmask() { + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixMeso::init() { + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} + +/* ---------------------------------------------------------------------- + allow for both per-type and per-atom mass + ------------------------------------------------------------------------- */ + +void FixMeso::initial_integrate(int vflag) { + // update v and x and rho and e of atoms in group + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double **vest = atom->vest; + double *rho = atom->rho; + double *drho = atom->drho; + double *e = atom->e; + double *de = atom->de; + double *mass = atom->mass; + double *rmass = atom->rmass; + int rmass_flag = atom->rmass_flag; + + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int i; + double dtfm; + + if (igroup == atom->firstgroup) + nlocal = atom->nfirst; + + for (i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + if (rmass_flag) { + dtfm = dtf / rmass[i]; + } else { + dtfm = dtf / mass[type[i]]; + } + + e[i] += dtf * de[i]; // half-step update of particle internal energy + rho[i] += dtf * drho[i]; // ... and density + + // extrapolate velocity for use with velocity-dependent potentials, e.g. SPH + vest[i][0] = v[i][0] + 2.0 * dtfm * f[i][0]; + vest[i][1] = v[i][1] + 2.0 * dtfm * f[i][1]; + vest[i][2] = v[i][2] + 2.0 * dtfm * f[i][2]; + + v[i][0] += dtfm * f[i][0]; + v[i][1] += dtfm * f[i][1]; + v[i][2] += dtfm * f[i][2]; + + x[i][0] += dtv * v[i][0]; + x[i][1] += dtv * v[i][1]; + x[i][2] += dtv * v[i][2]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMeso::final_integrate() { + + // update v, rho, and e of atoms in group + + double **v = atom->v; + double **f = atom->f; + double *e = atom->e; + double *de = atom->de; + double *rho = atom->rho; + double *drho = atom->drho; + int *type = atom->type; + int *mask = atom->mask; + double *mass = atom->mass; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) + nlocal = atom->nfirst; + double dtfm; + double *rmass = atom->rmass; + int rmass_flag = atom->rmass_flag; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + + if (rmass_flag) { + dtfm = dtf / rmass[i]; + } else { + dtfm = dtf / mass[type[i]]; + } + v[i][0] += dtfm * f[i][0]; + v[i][1] += dtfm * f[i][1]; + v[i][2] += dtfm * f[i][2]; + + e[i] += dtf * de[i]; + rho[i] += dtf * drho[i]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMeso::reset_dt() { + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} + diff --git a/src/USER-SPH/fix_meso.h b/src/USER-SPH/fix_meso.h new file mode 100644 index 0000000000..eee5ee1d45 --- /dev/null +++ b/src/USER-SPH/fix_meso.h @@ -0,0 +1,49 @@ +/* ---------------------------------------------------------------------- + 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(meso,FixMeso) + +#else + +#ifndef LMP_FIX_MESO_H +#define LMP_FIX_MESO_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixMeso : public Fix { + public: + FixMeso(class LAMMPS *, int, char **); + int setmask(); + virtual void init(); + virtual void initial_integrate(int); + virtual void final_integrate(); + void reset_dt(); + + private: + class NeighList *list; + protected: + double dtv,dtf; + double *step_respa; + int mass_require; + + class Pair *pair; +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/fix_meso_stationary.cpp b/src/USER-SPH/fix_meso_stationary.cpp new file mode 100644 index 0000000000..793e8dd217 --- /dev/null +++ b/src/USER-SPH/fix_meso_stationary.cpp @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- + 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 "stdio.h" +#include "string.h" +#include "fix_meso_stationary.h" +#include "math.h" +#include "stdlib.h" +#include "string.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "update.h" +#include "integrate.h" +#include "respa.h" +#include "memory.h" +#include "error.h" +#include "pair.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +FixMesoStationary::FixMesoStationary(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) { + + if ((atom->e_flag != 1) || (atom->rho_flag != 1)) + error->all(FLERR, + "fix meso/stationary command requires atom_style with both energy and density, e.g. meso"); + + if (narg != 3) + error->all(FLERR,"Illegal number of arguments for fix meso/stationary command"); + + time_integrate = 0; +} + +/* ---------------------------------------------------------------------- */ + +int FixMesoStationary::setmask() { + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixMesoStationary::init() { + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} + +/* ---------------------------------------------------------------------- + allow for both per-type and per-atom mass + ------------------------------------------------------------------------- */ + +void FixMesoStationary::initial_integrate(int vflag) { + + double *rho = atom->rho; + double *drho = atom->drho; + double *e = atom->e; + double *de = atom->de; + + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int i; + + if (igroup == atom->firstgroup) + nlocal = atom->nfirst; + + for (i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + e[i] += dtf * de[i]; // half-step update of particle internal energy + rho[i] += dtf * drho[i]; // ... and density + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMesoStationary::final_integrate() { + + double *e = atom->e; + double *de = atom->de; + double *rho = atom->rho; + double *drho = atom->drho; + int *type = atom->type; + int *mask = atom->mask; + double *mass = atom->mass; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) + nlocal = atom->nfirst; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + e[i] += dtf * de[i]; + rho[i] += dtf * drho[i]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMesoStationary::reset_dt() { + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} + diff --git a/src/USER-SPH/fix_meso_stationary.h b/src/USER-SPH/fix_meso_stationary.h new file mode 100644 index 0000000000..08869d2105 --- /dev/null +++ b/src/USER-SPH/fix_meso_stationary.h @@ -0,0 +1,49 @@ +/* ---------------------------------------------------------------------- + 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(meso/stationary,FixMesoStationary) + +#else + +#ifndef LMP_FIX_MESO_STATIONARY_H +#define LMP_FIX_MESO_STATIONARY_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixMesoStationary : public Fix { + public: + FixMesoStationary(class LAMMPS *, int, char **); + int setmask(); + virtual void init(); + virtual void initial_integrate(int); + virtual void final_integrate(); + void reset_dt(); + + private: + class NeighList *list; + protected: + double dtv,dtf; + double *step_respa; + int mass_require; + + class Pair *pair; +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/pair_sph_heatconduction.cpp b/src/USER-SPH/pair_sph_heatconduction.cpp new file mode 100644 index 0000000000..5f2f3b9002 --- /dev/null +++ b/src/USER-SPH/pair_sph_heatconduction.cpp @@ -0,0 +1,219 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "stdlib.h" +#include "pair_sph_heatconduction.h" +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "memory.h" +#include "error.h" +#include "neigh_list.h" +#include "domain.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairSPHHeatConduction::PairSPHHeatConduction(LAMMPS *lmp) : Pair(lmp) +{ + restartinfo = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairSPHHeatConduction::~PairSPHHeatConduction() { + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + memory->destroy(cut); + memory->destroy(alpha); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairSPHHeatConduction::compute(int eflag, int vflag) { + int i, j, ii, jj, inum, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz; + + int *ilist, *jlist, *numneigh, **firstneigh; + double imass, jmass, h, ih, ihsq; + double rsq, wfd, D, deltaE; + + if (eflag || vflag) + ev_setup(eflag, vflag); + else + evflag = vflag_fdotr = 0; + + double **x = atom->x; + double *e = atom->e; + double *de = atom->de; + double *mass = atom->mass; + double *rho = atom->rho; + int *type = atom->type; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms and do heat diffusion + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + itype = type[i]; + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + imass = mass[itype]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + 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]; + jmass = mass[jtype]; + + if (rsq < cutsq[itype][jtype]) { + h = cut[itype][jtype]; + ih = 1.0 / h; + ihsq = ih * ih; + + // kernel function + wfd = h - sqrt(rsq); + if (domain->dimension == 3) { + // Lucy Kernel, 3d + // Note that wfd, the derivative of the weight function with respect to r, + // is lacking a factor of r. + // The missing factor of r is recovered by + // deltaE, which is missing a factor of 1/r + wfd = -25.066903536973515383e0 * wfd * wfd * ihsq * ihsq * ihsq * ih; + } else { + // Lucy Kernel, 2d + wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + } + + jmass = mass[jtype]; + D = alpha[itype][jtype]; // diffusion coefficient + + deltaE = 2.0 * imass * jmass / (imass+jmass); + deltaE *= (rho[i] + rho[j]) / (rho[i] * rho[j]); + deltaE *= D * (e[i] - e[j]) * wfd; + + de[i] += deltaE; + if (newton_pair || j < nlocal) { + de[j] -= deltaE; + } + + } + } + } +} + +/* ---------------------------------------------------------------------- + allocate all arrays + ------------------------------------------------------------------------- */ + +void PairSPHHeatConduction::allocate() { + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag, n + 1, n + 1, "pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq, n + 1, n + 1, "pair:cutsq"); + memory->create(cut, n + 1, n + 1, "pair:cut"); + memory->create(alpha, n + 1, n + 1, "pair:alpha"); +} + +/* ---------------------------------------------------------------------- + global settings + ------------------------------------------------------------------------- */ + +void PairSPHHeatConduction::settings(int narg, char **arg) { + if (narg != 0) + error->all(FLERR, + "Illegal number of setting arguments for pair_style sph/heatconduction"); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + ------------------------------------------------------------------------- */ + +void PairSPHHeatConduction::coeff(int narg, char **arg) { + if (narg != 4) + error->all(FLERR,"Incorrect number of args for pair_style sph/heatconduction coefficients"); + if (!allocated) + allocate(); + + int ilo, ihi, jlo, jhi; + force->bounds(arg[0], atom->ntypes, ilo, ihi); + force->bounds(arg[1], atom->ntypes, jlo, jhi); + + double alpha_one = force->numeric(arg[2]); + double cut_one = force->numeric(arg[3]); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + //printf("setting cut[%d][%d] = %f\n", i, j, cut_one); + cut[i][j] = cut_one; + alpha[i][j] = alpha_one; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) + error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i + ------------------------------------------------------------------------- */ + +double PairSPHHeatConduction::init_one(int i, int j) { + + if (setflag[i][j] == 0) { + error->all(FLERR,"All pair sph/heatconduction coeffs are not set"); + } + + cut[j][i] = cut[i][j]; + alpha[j][i] = alpha[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- */ + +double PairSPHHeatConduction::single(int i, int j, int itype, int jtype, + double rsq, double factor_coul, double factor_lj, double &fforce) { + fforce = 0.0; + + return 0.0; +} diff --git a/src/USER-SPH/pair_sph_heatconduction.h b/src/USER-SPH/pair_sph_heatconduction.h new file mode 100644 index 0000000000..81402fda2e --- /dev/null +++ b/src/USER-SPH/pair_sph_heatconduction.h @@ -0,0 +1,45 @@ +/* ---------------------------------------------------------------------- + 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(sph/heatconduction,PairSPHHeatConduction) + +#else + +#ifndef LMP_PAIR_SPH_HEATCONDUCTION_H +#define LMP_PAIR_SPH_HEATCONDUCTION_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairSPHHeatConduction : public Pair { + public: + PairSPHHeatConduction(class LAMMPS *); + virtual ~PairSPHHeatConduction(); + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + virtual double init_one(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + + protected: + double **cut, **alpha; + void allocate(); +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/pair_sph_idealgas.cpp b/src/USER-SPH/pair_sph_idealgas.cpp new file mode 100644 index 0000000000..f18cceacd8 --- /dev/null +++ b/src/USER-SPH/pair_sph_idealgas.cpp @@ -0,0 +1,260 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "stdlib.h" +#include "pair_sph_idealgas.h" +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "neigh_list.h" +#include "memory.h" +#include "error.h" +#include "domain.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairSPHIdealGas::PairSPHIdealGas(LAMMPS *lmp) : Pair(lmp) +{ + restartinfo = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairSPHIdealGas::~PairSPHIdealGas() { + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(viscosity); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairSPHIdealGas::compute(int eflag, int vflag) { + int i, j, ii, jj, inum, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz, fpair; + + int *ilist, *jlist, *numneigh, **firstneigh; + double vxtmp, vytmp, vztmp, imass, jmass, fi, fj, fvisc, h, ih, ihsq; + double rsq, wfd, delVdotDelR, mu, deltaE, ci, cj; + + if (eflag || vflag) + ev_setup(eflag, vflag); + else + evflag = vflag_fdotr = 0; + + double **v = atom->vest; + double **x = atom->x; + double **f = atom->f; + double *rho = atom->rho; + double *mass = atom->mass; + double *de = atom->de; + double *e = atom->e; + double *drho = atom->drho; + int *type = atom->type; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + vxtmp = v[i][0]; + vytmp = v[i][1]; + vztmp = v[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + imass = mass[itype]; + + fi = 0.4 * e[i] / imass / rho[i]; // ideal gas EOS; this expression is fi = pressure / rho^2 + ci = sqrt(0.4*e[i]/imass); // speed of sound with heat capacity ratio gamma=1.4 + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + 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]; + jmass = mass[jtype]; + + if (rsq < cutsq[itype][jtype]) { + h = cut[itype][jtype]; + ih = 1. / h; + ihsq = ih * ih; + + wfd = h - sqrt(rsq); + if (domain->dimension == 3) { + // Lucy Kernel, 3d + // Note that wfd, the derivative of the weight function with respect to r, + // is lacking a factor of r. + // The missing factor of r is recovered by + // (1) using delV . delX instead of delV . (delX/r) and + // (2) using f[i][0] += delx * fpair instead of f[i][0] += (delx/r) * fpair + wfd = -25.066903536973515383e0 * wfd * wfd * ihsq * ihsq * ihsq * ih; + } else { + // Lucy Kernel, 2d + wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + } + + fj = 0.4 * e[j] / jmass / rho[j]; + + // dot product of velocity delta and distance vector + delVdotDelR = delx * (vxtmp - v[j][0]) + dely * (vytmp - v[j][1]) + + delz * (vztmp - v[j][2]); + + // artificial viscosity (Monaghan 1992) + if (delVdotDelR < 0.) { + cj = sqrt(0.4*e[j]/jmass); + mu = h * delVdotDelR / (rsq + 0.01 * h * h); + fvisc = -viscosity[itype][jtype] * (ci + cj) * mu / (rho[i] + rho[j]); + } else { + fvisc = 0.; + } + + // total pair force & thermal energy increment + fpair = -imass * jmass * (fi + fj + fvisc) * wfd; + deltaE = -0.5 * fpair * delVdotDelR; + + f[i][0] += delx * fpair; + f[i][1] += dely * fpair; + f[i][2] += delz * fpair; + + // and change in density + drho[i] += jmass * delVdotDelR * wfd; + + // change in thermal energy + de[i] += deltaE; + + if (newton_pair || j < nlocal) { + f[j][0] -= delx * fpair; + f[j][1] -= dely * fpair; + f[j][2] -= delz * fpair; + de[j] += deltaE; + drho[j] += imass * delVdotDelR * wfd; + } + + if (evflag) + ev_tally(i, j, nlocal, newton_pair, 0.0, 0.0, fpair, delx, dely, delz); + + if (evflag) + ev_tally(i, j, nlocal, newton_pair, 0.0, 0.0, fpair, delx, dely, + delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays + ------------------------------------------------------------------------- */ + +void PairSPHIdealGas::allocate() { + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag, n + 1, n + 1, "pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq, n + 1, n + 1, "pair:cutsq"); + + memory->create(cut, n + 1, n + 1, "pair:cut"); + memory->create(viscosity, n + 1, n + 1, "pair:viscosity"); +} + +/* ---------------------------------------------------------------------- + global settings + ------------------------------------------------------------------------- */ + +void PairSPHIdealGas::settings(int narg, char **arg) { + if (narg != 0) + error->all(FLERR, + "Illegal number of setting arguments for pair_style sph/idealgas"); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + ------------------------------------------------------------------------- */ + +void PairSPHIdealGas::coeff(int narg, char **arg) { + if (narg != 4) + error->all(FLERR,"Incorrect number of args for pair_style sph/idealgas coefficients"); + if (!allocated) + allocate(); + + int ilo, ihi, jlo, jhi; + force->bounds(arg[0], atom->ntypes, ilo, ihi); + force->bounds(arg[1], atom->ntypes, jlo, jhi); + + double viscosity_one = force->numeric(arg[2]); + double cut_one = force->numeric(arg[3]); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + viscosity[i][j] = viscosity_one; + //printf("setting cut[%d][%d] = %f\n", i, j, cut_one); + cut[i][j] = cut_one; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) + error->all(FLERR,"Incorrect args for pair sph/idealgas coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i + ------------------------------------------------------------------------- */ + +double PairSPHIdealGas::init_one(int i, int j) { + + if (setflag[i][j] == 0) { + error->all(FLERR,"All pair sph/idealgas coeffs are not set"); + } + + cut[j][i] = cut[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- */ + +double PairSPHIdealGas::single(int i, int j, int itype, int jtype, + double rsq, double factor_coul, double factor_lj, double &fforce) { + fforce = 0.0; + + return 0.0; +} diff --git a/src/USER-SPH/pair_sph_idealgas.h b/src/USER-SPH/pair_sph_idealgas.h new file mode 100644 index 0000000000..540789afeb --- /dev/null +++ b/src/USER-SPH/pair_sph_idealgas.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------- + 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(sph/idealgas,PairSPHIdealGas) + +#else + +#ifndef LMP_PAIR_IDEALGAS_H +#define LMP_PAIR_IDEALGAS_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairSPHIdealGas : public Pair { + public: + PairSPHIdealGas(class LAMMPS *); + virtual ~PairSPHIdealGas(); + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + virtual double init_one(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + + protected: + double **cut,**viscosity; + + void allocate(); +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/pair_sph_lj.cpp b/src/USER-SPH/pair_sph_lj.cpp new file mode 100644 index 0000000000..e25e1857d8 --- /dev/null +++ b/src/USER-SPH/pair_sph_lj.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. + ------------------------------------------------------------------------- */ + +#include "math.h" +#include "stdlib.h" +#include "pair_sph_lj.h" +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "neigh_list.h" +#include "memory.h" +#include "error.h" +#include "domain.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairSPHLJ::PairSPHLJ(LAMMPS *lmp) : Pair(lmp) +{ + restartinfo = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairSPHLJ::~PairSPHLJ() { + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(viscosity); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairSPHLJ::compute(int eflag, int vflag) { + int i, j, ii, jj, inum, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz, fpair; + + int *ilist, *jlist, *numneigh, **firstneigh; + double vxtmp, vytmp, vztmp, imass, jmass, fi, fj, fvisc, h, ih, ihsq, ihcub; + double rsq, wfd, delVdotDelR, mu, deltaE, ci, cj, lrc; + + if (eflag || vflag) + ev_setup(eflag, vflag); + else + evflag = vflag_fdotr = 0; + + double **v = atom->vest; + double **x = atom->x; + double **f = atom->f; + double *rho = atom->rho; + double *mass = atom->mass; + double *de = atom->de; + double *e = atom->e; + double *cv = atom->cv; + double *drho = atom->drho; + int *type = atom->type; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + vxtmp = v[i][0]; + vytmp = v[i][1]; + vztmp = v[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + imass = mass[itype]; + + // compute pressure of particle i with LJ EOS + LJEOS2(rho[i], e[i], cv[i], &fi, &ci); + fi /= (rho[i] * rho[i]); + //printf("fi = %f\n", fi); + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + 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]; + jmass = mass[jtype]; + + if (rsq < cutsq[itype][jtype]) { + h = cut[itype][jtype]; + ih = 1.0 / h; + ihsq = ih * ih; + ihcub = ihsq * ih; + + wfd = h - sqrt(rsq); + if (domain->dimension == 3) { + // Lucy Kernel, 3d + // Note that wfd, the derivative of the weight function with respect to r, + // is lacking a factor of r. + // The missing factor of r is recovered by + // (1) using delV . delX instead of delV . (delX/r) and + // (2) using f[i][0] += delx * fpair instead of f[i][0] += (delx/r) * fpair + wfd = -25.066903536973515383e0 * wfd * wfd * ihsq * ihsq * ihsq * ih; + } else { + // Lucy Kernel, 2d + wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + } + + // function call to LJ EOS + LJEOS2(rho[j], e[j], cv[j], &fj, &cj); + fj /= (rho[j] * rho[j]); + + // apply long-range correction to model a LJ fluid with cutoff + // this implies that the modelled LJ fluid has cutoff == SPH cutoff + lrc = - 11.1701 * (ihcub * ihcub * ihcub - 1.5 * ihcub); + fi += lrc; + fj += lrc; + + // dot product of velocity delta and distance vector + delVdotDelR = delx * (vxtmp - v[j][0]) + dely * (vytmp - v[j][1]) + + delz * (vztmp - v[j][2]); + + // artificial viscosity (Monaghan 1992) + if (delVdotDelR < 0.) { + mu = h * delVdotDelR / (rsq + 0.01 * h * h); + fvisc = -viscosity[itype][jtype] * (ci + cj) * mu / (rho[i] + rho[j]); + } else { + fvisc = 0.; + } + + // total pair force & thermal energy increment + fpair = -imass * jmass * (fi + fj + fvisc) * wfd; + deltaE = -0.5 * fpair * delVdotDelR; + + f[i][0] += delx * fpair; + f[i][1] += dely * fpair; + f[i][2] += delz * fpair; + + // and change in density + drho[i] += jmass * delVdotDelR * wfd; + + // change in thermal energy + de[i] += deltaE; + + if (newton_pair || j < nlocal) { + f[j][0] -= delx * fpair; + f[j][1] -= dely * fpair; + f[j][2] -= delz * fpair; + de[j] += deltaE; + drho[j] += imass * delVdotDelR * wfd; + } + + if (evflag) + ev_tally(i, j, nlocal, newton_pair, 0.0, 0.0, fpair, delx, dely, delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays + ------------------------------------------------------------------------- */ + +void PairSPHLJ::allocate() { + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag, n + 1, n + 1, "pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq, n + 1, n + 1, "pair:cutsq"); + + memory->create(cut, n + 1, n + 1, "pair:cut"); + memory->create(viscosity, n + 1, n + 1, "pair:viscosity"); +} + +/* ---------------------------------------------------------------------- + global settings + ------------------------------------------------------------------------- */ + +void PairSPHLJ::settings(int narg, char **arg) { + if (narg != 0) + error->all(FLERR, + "Illegal number of setting arguments for pair_style sph/lj"); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + ------------------------------------------------------------------------- */ + +void PairSPHLJ::coeff(int narg, char **arg) { + if (narg != 4) + error->all(FLERR, + "Incorrect args for pair_style sph/lj coefficients"); + if (!allocated) + allocate(); + + int ilo, ihi, jlo, jhi; + force->bounds(arg[0], atom->ntypes, ilo, ihi); + force->bounds(arg[1], atom->ntypes, jlo, jhi); + + double viscosity_one = force->numeric(arg[2]); + double cut_one = force->numeric(arg[3]); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + viscosity[i][j] = viscosity_one; + printf("setting cut[%d][%d] = %f\n", i, j, cut_one); + cut[i][j] = cut_one; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) + error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i + ------------------------------------------------------------------------- */ + +double PairSPHLJ::init_one(int i, int j) { + + if (setflag[i][j] == 0) { + error->all(FLERR,"All pair sph/lj coeffs are not set"); + } + + cut[j][i] = cut[i][j]; + viscosity[j][i] = viscosity[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- */ + +double PairSPHLJ::single(int i, int j, int itype, int jtype, + double rsq, double factor_coul, double factor_lj, double &fforce) { + fforce = 0.0; + + return 0.0; +} + + +/*double PairSPHLJ::LJEOS2(double rho, double e, double cv) { + + + double T = e / cv; + if (T < 1.e-2) T = 1.e-2; + //printf("%f %f\n", T, rho); + double iT = 0.1e1 / T; + //double itpow1_4 = exp(0.25 * log(iT)); //pow(iT, 0.1e1 / 0.4e1); + double itpow1_4 = pow(iT, 0.1e1 / 0.4e1); + double x = rho * itpow1_4; + double xsq = x * x; + double xpow3 = xsq * x; + double xpow4 = xsq * xsq; + double xpow9 = xpow3 * xpow3 * xpow3; + + + return (0.1e1 + rho * (0.3629e1 + 0.7264e1 * x + 0.104925e2 * xsq + 0.11460e2 + * xpow3 + 0.21760e1 * xpow9 - itpow1_4 * itpow1_4 * (0.5369e1 + 0.13160e2 + * x + 0.18525e2 * xsq - 0.17076e2 * xpow3 + 0.9320e1 * xpow4) + iT + * (-0.3492e1 + 0.18698e2 * x - 0.35505e2 * xsq + 0.31816e2 * xpow3 + - 0.11195e2 * xpow4)) * itpow1_4) * rho * T; +}*/ + + +/* --------------------------------------------------------------------------------------------- */ +/* Lennard-Jones EOS, + Francis H. Ree + "Analytic representation of thermodynamic data for the Lennard‐Jones fluid", + Journal of Chemical Physics 73 pp. 5401-5403 (1980) +*/ + +void PairSPHLJ::LJEOS2(double rho, double e, double cv, double *p, double *c) { + double T = e/cv; + double beta = 1.0 / T; + double beta_sqrt = sqrt(beta); + double x = rho * sqrt(beta_sqrt); + + double xsq = x * x; + double xpow3 = xsq * x; + double xpow4 = xsq * xsq; + + /* differential of Helmholtz free energy w.r.t. x */ + double diff_A_NkT = 3.629 + 7.264*x - beta*(3.492 - 18.698*x + 35.505*xsq - 31.816*xpow3 + 11.195*xpow4) + - beta_sqrt*(5.369 + 13.16*x + 18.525*xsq - 17.076*xpow3 + 9.32*xpow4) + + 10.4925*xsq + 11.46*xpow3 + 2.176*xpow4*xpow4*x; + + /* differential of Helmholtz free energy w.r.t. x^2 */ + double d2A_dx2 = 7.264 + 20.985*x \ + + beta*(18.698 - 71.01*x + 95.448*xsq - 44.78*xpow3)\ + - beta_sqrt*(13.16 + 37.05*x - 51.228*xsq + 37.28*xpow3)\ + + 34.38*xsq + 19.584*xpow4*xpow4; + + // p = rho k T * (1 + rho * d(A/(NkT))/drho) + // dx/drho = rho/x + *p = rho * T * (1.0 + diff_A_NkT * x); // pressure + double csq = T * (1.0 + 2.0 * diff_A_NkT * x + d2A_dx2 * x * x); // soundspeed squared + if (csq > 0.0) { + *c = sqrt(csq); // soundspeed + } else { + *c = 0.0; + } +} + +/* ------------------------------------------------------------------------------ */ + +/* Jirí Kolafa, Ivo Nezbeda + * "The Lennard-Jones fluid: an accurate analytic and theoretically-based equation of state", + * Fluid Phase Equilibria 100 pp. 1-34 (1994) */ +/*double PairSPHLJ::LJEOS2(double rho, double e, double cv) { + double T = e / cv; + + double sT = sqrt(T); + double isT = 1.0 / sT; + double dC = -0.063920968 * log(T) + 0.011117524 / T - 0.076383859 / sT + + 1.080142248 + 0.000693129 * sT; + double eta = 3.141592654 / 6. * rho * (dC * dC * dC); + double zHS = (1 + eta * (1 + eta * (1 - eta / 1.5 * (1 + eta)))) + / ((1. - eta) * (1. - eta) * (1. - eta)); + double BC = (((((-0.58544978 * isT + 0.43102052) * isT + .87361369) * isT + - 4.13749995) * isT + 2.90616279) * isT - 7.02181962) / T + 0.02459877; + double gammaBH = 1.92907278; + + double sum = ((2.01546797 * 2 + rho * ((-28.17881636) * 3 + rho + * (28.28313847 * 4 + rho * (-10.42402873) * 5))) + (-19.58371655 * 2 + + rho * (+75.62340289 * 3 + rho * ((-120.70586598) * 4 + rho + * (+93.92740328 * 5 + rho * (-27.37737354) * 6)))) / sqrt(T) + + ((29.34470520 * 2 + rho * ((-112.35356937) * 3 + rho * (+170.64908980 + * 4 + rho * ((-123.06669187) * 5 + rho * 34.42288969 * 6)))) + + ((-13.37031968) * 2 + rho * (65.38059570 * 3 + rho + * ((-115.09233113) * 4 + rho * (88.91973082 * 5 + rho + * (-25.62099890) * 6)))) / T) / T) * rho * rho; + return ((zHS + BC / exp(gammaBH * rho * rho) * rho * (1 - 2 * gammaBH * rho + * rho)) * T + sum) * rho; + } +*/ diff --git a/src/USER-SPH/pair_sph_lj.h b/src/USER-SPH/pair_sph_lj.h new file mode 100644 index 0000000000..244ee044a5 --- /dev/null +++ b/src/USER-SPH/pair_sph_lj.h @@ -0,0 +1,48 @@ +/* ---------------------------------------------------------------------- + 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(sph/lj,PairSPHLJ) + +#else + +#ifndef LMP_PAIR_LJ_H +#define LMP_PAIR_LJ_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairSPHLJ : public Pair { + public: + PairSPHLJ(class LAMMPS *); + virtual ~PairSPHLJ(); + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + virtual double init_one(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + //double LJEOS(int); + void LJEOS2(double, double, double, double *, double *); + + protected: + double **cut,**viscosity; + + void allocate(); +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/pair_sph_rhosum.cpp b/src/USER-SPH/pair_sph_rhosum.cpp new file mode 100644 index 0000000000..3985297dd8 --- /dev/null +++ b/src/USER-SPH/pair_sph_rhosum.cpp @@ -0,0 +1,314 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "stdlib.h" +#include "pair_sph_rhosum.h" +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "memory.h" +#include "error.h" +#include "neighbor.h" +#include "update.h" +#include "domain.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairSPHRhoSum::PairSPHRhoSum(LAMMPS *lmp) : Pair(lmp) +{ + restartinfo = 0; + + // set comm size needed by this Pair + + comm_forward = 1; + first = 1; +} + +/* ---------------------------------------------------------------------- */ + +PairSPHRhoSum::~PairSPHRhoSum() { + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + } +} + +/* ---------------------------------------------------------------------- + init specific to this pair style + ------------------------------------------------------------------------- */ + +void PairSPHRhoSum::init_style() { + // need a full neighbor list + int irequest = neighbor->request(this); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; +} + +/* ---------------------------------------------------------------------- */ + +void PairSPHRhoSum::compute(int eflag, int vflag) { + int i, j, ii, jj, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz; + double r, rsq, imass, h, ih, ihsq; + int *jlist; + double wf; + // neighbor list variables + int inum, *ilist, *numneigh, **firstneigh; + + if (eflag || vflag) + ev_setup(eflag, vflag); + else + evflag = vflag_fdotr = 0; + + double **x = atom->x; + double *rho = atom->rho; + int *type = atom->type; + double *mass = atom->mass; + + // check consistency of pair coefficients + + if (first) { + for (i = 1; i <= atom->ntypes; i++) { + for (j = 1; i <= atom->ntypes; i++) { + if (cutsq[i][j] > 0.0) { + if (!setflag[i][i] || !setflag[j][j]) { + if (comm->me == 0) { + printf( + "SPH particle types %d and %d interact, but not all of their single particle properties are set.\n", + i, j); + } + } + } + } + } + first = 0; + } + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // recompute density + // we use a full neighborlist here + + if (nstep != 0) { + if ((update->ntimestep % nstep) == 0) { + + // initialize density with self-contribution, + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + itype = type[i]; + imass = mass[itype]; + + h = cut[itype][itype]; + if (domain->dimension == 3) { + /* + // Lucy kernel, 3d + wf = 2.0889086280811262819e0 / (h * h * h); + */ + + // quadric kernel, 3d + wf = 2.1541870227086614782 / (h * h * h); + } else { + /* + // Lucy kernel, 2d + wf = 1.5915494309189533576e0 / (h * h); + */ + + // quadric kernel, 2d + wf = 1.5915494309189533576e0 / (h * h); + } + + rho[i] = imass * wf; + } + + // add density at each atom via kernel function overlap + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + jtype = type[j]; + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (rsq < cutsq[itype][jtype]) { + h = cut[itype][jtype]; + ih = 1.0 / h; + ihsq = ih * ih; + + if (domain->dimension == 3) { + /* + // Lucy kernel, 3d + r = sqrt(rsq); + wf = (h - r) * ihsq; + wf = 2.0889086280811262819e0 * (h + 3. * r) * wf * wf * wf * ih; + */ + + // quadric kernel, 3d + wf = 1.0 - rsq * ihsq; + wf = wf * wf; + wf = wf * wf; + wf = 2.1541870227086614782e0 * wf * ihsq * ih; + } else { + // Lucy kernel, 2d + //r = sqrt(rsq); + //wf = (h - r) * ihsq; + //wf = 1.5915494309189533576e0 * (h + 3. * r) * wf * wf * wf; + + // quadric kernel, 2d + wf = 1.0 - rsq * ihsq; + wf = wf * wf; + wf = wf * wf; + wf = 1.5915494309189533576e0 * wf * ihsq; + } + + rho[i] += mass[jtype] * wf; + } + + } + } + } + } + + // communicate densities + comm->forward_comm_pair(this); +} + +/* ---------------------------------------------------------------------- + allocate all arrays + ------------------------------------------------------------------------- */ + +void PairSPHRhoSum::allocate() { + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag, n + 1, n + 1, "pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq, n + 1, n + 1, "pair:cutsq"); + + memory->create(cut, n + 1, n + 1, "pair:cut"); +} + +/* ---------------------------------------------------------------------- + global settings + ------------------------------------------------------------------------- */ + +void PairSPHRhoSum::settings(int narg, char **arg) { + if (narg != 1) + error->all(FLERR, + "Illegal number of setting arguments for pair_style sph/rhosum"); + nstep = force->inumeric(arg[0]); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + ------------------------------------------------------------------------- */ + +void PairSPHRhoSum::coeff(int narg, char **arg) { + if (narg != 3) + error->all(FLERR,"Incorrect number of args for sph/rhosum coefficients"); + if (!allocated) + allocate(); + + int ilo, ihi, jlo, jhi; + force->bounds(arg[0], atom->ntypes, ilo, ihi); + force->bounds(arg[1], atom->ntypes, jlo, jhi); + + double cut_one = force->numeric(arg[2]); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + //printf("setting cut[%d][%d] = %f\n", i, j, cut_one); + cut[i][j] = cut_one; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) + error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i + ------------------------------------------------------------------------- */ + +double PairSPHRhoSum::init_one(int i, int j) { + if (setflag[i][j] == 0) { + error->all(FLERR,"All pair sph/rhosum coeffs are not set"); + } + + cut[j][i] = cut[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- */ + +double PairSPHRhoSum::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, double &fforce) { + fforce = 0.0; + + return 0.0; +} + +/* ---------------------------------------------------------------------- */ + +int PairSPHRhoSum::pack_comm(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + int i, j, m; + double *rho = atom->rho; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = rho[j]; + } + return 1; +} + +/* ---------------------------------------------------------------------- */ + +void PairSPHRhoSum::unpack_comm(int n, int first, double *buf) { + int i, m, last; + double *rho = atom->rho; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + rho[i] = buf[m++]; +} + diff --git a/src/COLLOID/pair_lubricate.h b/src/USER-SPH/pair_sph_rhosum.h similarity index 59% rename from src/COLLOID/pair_lubricate.h rename to src/USER-SPH/pair_sph_rhosum.h index 30c7bee63c..227cdef95c 100644 --- a/src/COLLOID/pair_lubricate.h +++ b/src/USER-SPH/pair_sph_rhosum.h @@ -13,40 +13,33 @@ #ifdef PAIR_CLASS -PairStyle(lubricate,PairLubricate) +PairStyle(sph/rhosum,PairSPHRhoSum) #else -#ifndef LMP_PAIR_LUBRICATE_H -#define LMP_PAIR_LUBRICATE_H +#ifndef LMP_PAIR_SPH_RHOSUM_H +#define LMP_PAIR_SPH_RHOSUM_H #include "pair.h" namespace LAMMPS_NS { -class PairLubricate : public Pair { +class PairSPHRhoSum : public Pair { public: - PairLubricate(class LAMMPS *); - ~PairLubricate(); - void compute(int, int); + PairSPHRhoSum(class LAMMPS *); + virtual ~PairSPHRhoSum(); + void init_style(); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); - double init_one(int, int); - void init_style(); - void write_restart(FILE *); - void read_restart(FILE *); - void write_restart_settings(FILE *); - void read_restart_settings(FILE *); - void *extract(char *, int &); + virtual double init_one(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + int pack_comm(int, int *, double *, int, int *); + void unpack_comm(int, int, double *); protected: - double cut_inner_global,cut_global; - double t_target,mu; - int flag1,flag2,flag3,flag4; - int seed; - double **cut_inner,**cut; - - class RanMars *random; + double **cut; + int nstep, first; void allocate(); }; diff --git a/src/USER-SPH/pair_sph_taitwater.cpp b/src/USER-SPH/pair_sph_taitwater.cpp new file mode 100644 index 0000000000..d709d4cc9b --- /dev/null +++ b/src/USER-SPH/pair_sph_taitwater.cpp @@ -0,0 +1,301 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "stdlib.h" +#include "pair_sph_taitwater.h" +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "neigh_list.h" +#include "memory.h" +#include "error.h" +#include "domain.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairSPHTaitwater::PairSPHTaitwater(LAMMPS *lmp) : Pair(lmp) +{ + restartinfo = 0; + + first = 1; +} + +/* ---------------------------------------------------------------------- */ + +PairSPHTaitwater::~PairSPHTaitwater() { + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(rho0); + memory->destroy(soundspeed); + memory->destroy(B); + memory->destroy(viscosity); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairSPHTaitwater::compute(int eflag, int vflag) { + int i, j, ii, jj, inum, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz, fpair; + + int *ilist, *jlist, *numneigh, **firstneigh; + double vxtmp, vytmp, vztmp, imass, jmass, fi, fj, fvisc, h, ih, ihsq; + double rsq, tmp, wfd, delVdotDelR, mu, deltaE; + + if (eflag || vflag) + ev_setup(eflag, vflag); + else + evflag = vflag_fdotr = 0; + + double **v = atom->vest; + double **x = atom->x; + double **f = atom->f; + double *rho = atom->rho; + double *mass = atom->mass; + double *de = atom->de; + double *drho = atom->drho; + int *type = atom->type; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + // check consistency of pair coefficients + + if (first) { + for (i = 1; i <= atom->ntypes; i++) { + for (j = 1; i <= atom->ntypes; i++) { + if (cutsq[i][j] > 1.e-32) { + if (!setflag[i][i] || !setflag[j][j]) { + if (comm->me == 0) { + printf( + "SPH particle types %d and %d interact with cutoff=%g, but not all of their single particle properties are set.\n", + i, j, sqrt(cutsq[i][j])); + } + } + } + } + } + first = 0; + } + + 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]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + vxtmp = v[i][0]; + vytmp = v[i][1]; + vztmp = v[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + imass = mass[itype]; + + // compute pressure of atom i with Tait EOS + tmp = rho[i] / rho0[itype]; + fi = tmp * tmp * tmp; + fi = B[itype] * (fi * fi * tmp - 1.0) / (rho[i] * rho[i]); + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + 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]; + jmass = mass[jtype]; + + if (rsq < cutsq[itype][jtype]) { + + h = cut[itype][jtype]; + ih = 1.0 / h; + ihsq = ih * ih; + + wfd = h - sqrt(rsq); + if (domain->dimension == 3) { + // Lucy Kernel, 3d + // Note that wfd, the derivative of the weight function with respect to r, + // is lacking a factor of r. + // The missing factor of r is recovered by + // (1) using delV . delX instead of delV . (delX/r) and + // (2) using f[i][0] += delx * fpair instead of f[i][0] += (delx/r) * fpair + wfd = -25.066903536973515383e0 * wfd * wfd * ihsq * ihsq * ihsq * ih; + } else { + // Lucy Kernel, 2d + wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + } + + // compute pressure of atom j with Tait EOS + tmp = rho[j] / rho0[jtype]; + fj = tmp * tmp * tmp; + fj = B[jtype] * (fj * fj * tmp - 1.0) / (rho[j] * rho[j]); + + // dot product of velocity delta and distance vector + delVdotDelR = delx * (vxtmp - v[j][0]) + dely * (vytmp - v[j][1]) + + delz * (vztmp - v[j][2]); + + // artificial viscosity (Monaghan 1992) + if (delVdotDelR < 0.) { + mu = h * delVdotDelR / (rsq + 0.01 * h * h); + fvisc = -viscosity[itype][jtype] * (soundspeed[itype] + + soundspeed[jtype]) * mu / (rho[i] + rho[j]); + } else { + fvisc = 0.; + } + + // total pair force & thermal energy increment + fpair = -imass * jmass * (fi + fj + fvisc) * wfd; + deltaE = -0.5 * fpair * delVdotDelR; + + f[i][0] += delx * fpair; + f[i][1] += dely * fpair; + f[i][2] += delz * fpair; + + // and change in density + drho[i] += jmass * delVdotDelR * wfd; + + // change in thermal energy + de[i] += deltaE; + + if (newton_pair || j < nlocal) { + f[j][0] -= delx * fpair; + f[j][1] -= dely * fpair; + f[j][2] -= delz * fpair; + de[j] += deltaE; + drho[j] += imass * delVdotDelR * wfd; + } + + if (evflag) + ev_tally(i, j, nlocal, newton_pair, 0.0, 0.0, fpair, delx, dely, delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays + ------------------------------------------------------------------------- */ + +void PairSPHTaitwater::allocate() { + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag, n + 1, n + 1, "pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq, n + 1, n + 1, "pair:cutsq"); + + memory->create(rho0, n + 1, "pair:rho0"); + memory->create(soundspeed, n + 1, "pair:soundspeed"); + memory->create(B, n + 1, "pair:B"); + memory->create(cut, n + 1, n + 1, "pair:cut"); + memory->create(viscosity, n + 1, n + 1, "pair:viscosity"); +} + +/* ---------------------------------------------------------------------- + global settings + ------------------------------------------------------------------------- */ + +void PairSPHTaitwater::settings(int narg, char **arg) { + if (narg != 0) + error->all(FLERR, + "Illegal number of setting arguments for pair_style sph/taitwater"); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + ------------------------------------------------------------------------- */ + +void PairSPHTaitwater::coeff(int narg, char **arg) { + if (narg != 6) + error->all(FLERR, + "Incorrect args for pair_style sph/taitwater coefficients"); + if (!allocated) + allocate(); + + int ilo, ihi, jlo, jhi; + force->bounds(arg[0], atom->ntypes, ilo, ihi); + force->bounds(arg[1], atom->ntypes, jlo, jhi); + + double rho0_one = force->numeric(arg[2]); + double soundspeed_one = force->numeric(arg[3]); + double viscosity_one = force->numeric(arg[4]); + double cut_one = force->numeric(arg[5]); + double B_one = soundspeed_one * soundspeed_one * rho0_one / 7.0; + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + rho0[i] = rho0_one; + soundspeed[i] = soundspeed_one; + B[i] = B_one; + for (int j = MAX(jlo,i); j <= jhi; j++) { + viscosity[i][j] = viscosity_one; + //printf("setting cut[%d][%d] = %f\n", i, j, cut_one); + cut[i][j] = cut_one; + + setflag[i][j] = 1; + + //cut[j][i] = cut[i][j]; + //viscosity[j][i] = viscosity[i][j]; + //setflag[j][i] = 1; + count++; + } + } + + if (count == 0) + error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i + ------------------------------------------------------------------------- */ + +double PairSPHTaitwater::init_one(int i, int j) { + + if (setflag[i][j] == 0) { + error->all(FLERR,"Not all pair sph/taitwater coeffs are set"); + } + + cut[j][i] = cut[i][j]; + viscosity[j][i] = viscosity[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- */ + +double PairSPHTaitwater::single(int i, int j, int itype, int jtype, + double rsq, double factor_coul, double factor_lj, double &fforce) { + fforce = 0.0; + + return 0.0; +} diff --git a/src/USER-SPH/pair_sph_taitwater.h b/src/USER-SPH/pair_sph_taitwater.h new file mode 100644 index 0000000000..de081aa544 --- /dev/null +++ b/src/USER-SPH/pair_sph_taitwater.h @@ -0,0 +1,48 @@ +/* ---------------------------------------------------------------------- + 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(sph/taitwater,PairSPHTaitwater) + +#else + +#ifndef LMP_PAIR_TAITWATER_H +#define LMP_PAIR_TAITWATER_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairSPHTaitwater : public Pair { + public: + PairSPHTaitwater(class LAMMPS *); + virtual ~PairSPHTaitwater(); + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + virtual double init_one(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + + protected: + double *rho0, *soundspeed, *B; + double **cut,**viscosity; + int first; + + void allocate(); +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/pair_sph_taitwater_morris.cpp b/src/USER-SPH/pair_sph_taitwater_morris.cpp new file mode 100644 index 0000000000..1a4dc70cf7 --- /dev/null +++ b/src/USER-SPH/pair_sph_taitwater_morris.cpp @@ -0,0 +1,297 @@ +/* ---------------------------------------------------------------------- + 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 "math.h" +#include "stdlib.h" +#include "pair_sph_taitwater_morris.h" +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "neigh_list.h" +#include "memory.h" +#include "error.h" +#include "domain.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairSPHTaitwaterMorris::PairSPHTaitwaterMorris(LAMMPS *lmp) : Pair(lmp) +{ + restartinfo = 0; + first = 1; +} + +/* ---------------------------------------------------------------------- */ + +PairSPHTaitwaterMorris::~PairSPHTaitwaterMorris() { + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(rho0); + memory->destroy(soundspeed); + memory->destroy(B); + memory->destroy(viscosity); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairSPHTaitwaterMorris::compute(int eflag, int vflag) { + int i, j, ii, jj, inum, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz, fpair; + + int *ilist, *jlist, *numneigh, **firstneigh; + double vxtmp, vytmp, vztmp, imass, jmass, fi, fj, fvisc, h, ih, ihsq, velx, vely, velz; + double rsq, tmp, wfd, delVdotDelR, deltaE; + + if (eflag || vflag) + ev_setup(eflag, vflag); + else + evflag = vflag_fdotr = 0; + + double **v = atom->vest; + double **x = atom->x; + double **f = atom->f; + double *rho = atom->rho; + double *mass = atom->mass; + double *de = atom->de; + double *drho = atom->drho; + int *type = atom->type; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + // check consistency of pair coefficients + + if (first) { + for (i = 1; i <= atom->ntypes; i++) { + for (j = 1; i <= atom->ntypes; i++) { + if (cutsq[i][j] > 1.e-32) { + if (!setflag[i][i] || !setflag[j][j]) { + if (comm->me == 0) { + printf( + "SPH particle types %d and %d interact with cutoff=%g, but not all of their single particle properties are set.\n", + i, j, sqrt(cutsq[i][j])); + } + } + } + } + } + first = 0; + } + + 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]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + vxtmp = v[i][0]; + vytmp = v[i][1]; + vztmp = v[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + imass = mass[itype]; + + // compute pressure of atom i with Tait EOS + tmp = rho[i] / rho0[itype]; + fi = tmp * tmp * tmp; + fi = B[itype] * (fi * fi * tmp - 1.0) / (rho[i] * rho[i]); + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + 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]; + jmass = mass[jtype]; + + if (rsq < cutsq[itype][jtype]) { + h = cut[itype][jtype]; + ih = 1.0 / h; + ihsq = ih * ih; + + wfd = h - sqrt(rsq); + if (domain->dimension == 3) { + // Lucy Kernel, 3d + // Note that wfd, the derivative of the weight function with respect to r, + // is lacking a factor of r. + // The missing factor of r is recovered by + // (1) using delV . delX instead of delV . (delX/r) and + // (2) using f[i][0] += delx * fpair instead of f[i][0] += (delx/r) * fpair + wfd = -25.066903536973515383e0 * wfd * wfd * ihsq * ihsq * ihsq * ih; + } else { + // Lucy Kernel, 2d + wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + } + + // compute pressure of atom j with Tait EOS + tmp = rho[j] / rho0[jtype]; + fj = tmp * tmp * tmp; + fj = B[jtype] * (fj * fj * tmp - 1.0) / (rho[j] * rho[j]); + + velx=vxtmp - v[j][0]; + vely=vytmp - v[j][1]; + velz=vztmp - v[j][2]; + + // dot product of velocity delta and distance vector + delVdotDelR = delx * velx + dely * vely + delz * velz; + + // Morris Viscosity (Morris, 1996) + + fvisc = 2 * viscosity[itype][jtype] / (rho[i] * rho[j]); + + fvisc *= imass * jmass * wfd; + + // total pair force & thermal energy increment + fpair = -imass * jmass * (fi + fj) * wfd; + deltaE = -0.5 *(fpair * delVdotDelR + fvisc * (velx*velx + vely*vely + velz*velz)); + + // printf("testvar= %f, %f \n", delx, dely); + + f[i][0] += delx * fpair + velx * fvisc; + f[i][1] += dely * fpair + vely * fvisc; + f[i][2] += delz * fpair + velz * fvisc; + + // and change in density + drho[i] += jmass * delVdotDelR * wfd; + + // change in thermal energy + de[i] += deltaE; + + if (newton_pair || j < nlocal) { + f[j][0] -= delx * fpair + velx * fvisc; + f[j][1] -= dely * fpair + vely * fvisc; + f[j][2] -= delz * fpair + velz * fvisc; + de[j] += deltaE; + drho[j] += imass * delVdotDelR * wfd; + } + + if (evflag) + ev_tally(i, j, nlocal, newton_pair, 0.0, 0.0, fpair, delx, dely, delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays + ------------------------------------------------------------------------- */ + +void PairSPHTaitwaterMorris::allocate() { + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag, n + 1, n + 1, "pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq, n + 1, n + 1, "pair:cutsq"); + + memory->create(rho0, n + 1, "pair:rho0"); + memory->create(soundspeed, n + 1, "pair:soundspeed"); + memory->create(B, n + 1, "pair:B"); + memory->create(cut, n + 1, n + 1, "pair:cut"); + memory->create(viscosity, n + 1, n + 1, "pair:viscosity"); +} + +/* ---------------------------------------------------------------------- + global settings + ------------------------------------------------------------------------- */ + +void PairSPHTaitwaterMorris::settings(int narg, char **arg) { + if (narg != 0) + error->all(FLERR, + "Illegal number of setting arguments for pair_style sph/taitwater/morris"); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + ------------------------------------------------------------------------- */ + +void PairSPHTaitwaterMorris::coeff(int narg, char **arg) { + if (narg != 6) + error->all(FLERR, + "Incorrect args for pair_style sph/taitwater/morris coefficients"); + if (!allocated) + allocate(); + + int ilo, ihi, jlo, jhi; + force->bounds(arg[0], atom->ntypes, ilo, ihi); + force->bounds(arg[1], atom->ntypes, jlo, jhi); + + double rho0_one = force->numeric(arg[2]); + double soundspeed_one = force->numeric(arg[3]); + double viscosity_one = force->numeric(arg[4]); + double cut_one = force->numeric(arg[5]); + double B_one = soundspeed_one * soundspeed_one * rho0_one / 7.0; + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + rho0[i] = rho0_one; + soundspeed[i] = soundspeed_one; + B[i] = B_one; + for (int j = MAX(jlo,i); j <= jhi; j++) { + viscosity[i][j] = viscosity_one; + //printf("setting cut[%d][%d] = %f\n", i, j, cut_one); + cut[i][j] = cut_one; + + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) + error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i + ------------------------------------------------------------------------- */ + +double PairSPHTaitwaterMorris::init_one(int i, int j) { + + if (setflag[i][j] == 0) { + error->all(FLERR,"Not all pair sph/taitwater/morris coeffs are not set"); + } + + cut[j][i] = cut[i][j]; + viscosity[j][i] = viscosity[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- */ + +double PairSPHTaitwaterMorris::single(int i, int j, int itype, int jtype, + double rsq, double factor_coul, double factor_lj, double &fforce) { + fforce = 0.0; + + return 0.0; +} diff --git a/src/USER-SPH/pair_sph_taitwater_morris.h b/src/USER-SPH/pair_sph_taitwater_morris.h new file mode 100644 index 0000000000..5390d73f08 --- /dev/null +++ b/src/USER-SPH/pair_sph_taitwater_morris.h @@ -0,0 +1,48 @@ +/* ---------------------------------------------------------------------- + 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(sph/taitwater/morris,PairSPHTaitwaterMorris) + +#else + +#ifndef LMP_PAIR_TAITWATER_MORRIS_H +#define LMP_PAIR_TAITWATER_MORRIS_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairSPHTaitwaterMorris : public Pair { + public: + PairSPHTaitwaterMorris(class LAMMPS *); + virtual ~PairSPHTaitwaterMorris(); + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + virtual double init_one(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + + protected: + double *rho0, *soundspeed, *B; + double **cut,**viscosity; + int first; + + void allocate(); +}; + +} + +#endif +#endif diff --git a/src/XTC/dump_xtc.cpp b/src/XTC/dump_xtc.cpp index f5355cdf5f..12d3719dad 100644 --- a/src/XTC/dump_xtc.cpp +++ b/src/XTC/dump_xtc.cpp @@ -54,9 +54,9 @@ int xdr3dfcoord(XDR *, float *, int *, float *); DumpXTC::DumpXTC(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) { - if (narg != 5) error->all("Illegal dump xtc command"); + if (narg != 5) error->all(FLERR,"Illegal dump xtc command"); if (binary || compressed || multifile || multiproc) - error->all("Invalid dump xtc filename"); + error->all(FLERR,"Invalid dump xtc filename"); size_one = 3; sort_flag = 1; @@ -70,7 +70,7 @@ DumpXTC::DumpXTC(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) bigint n = group->count(igroup); if (n > MAXSMALLINT/3/sizeof(float)) - error->all("Too many atoms for dump xtc"); + error->all(FLERR,"Too many atoms for dump xtc"); natoms = static_cast (n); memory->create(coords,3*natoms,"dump:coords"); @@ -103,11 +103,11 @@ DumpXTC::~DumpXTC() void DumpXTC::init_style() { if (sort_flag == 0 || sortcol != 0) - error->all("Dump xtc requires sorting by atom ID"); + error->all(FLERR,"Dump xtc requires sorting by atom ID"); // check that flush_flag is not set since dump::write() will use it - if (flush_flag) error->all("Cannot set dump_modify flush for dump xtc"); + if (flush_flag) error->all(FLERR,"Cannot set dump_modify flush for dump xtc"); // check that dump frequency has not changed and is not a variable @@ -115,11 +115,11 @@ void DumpXTC::init_style() for (idump = 0; idump < output->ndump; idump++) if (strcmp(id,output->dump[idump]->id) == 0) break; if (output->every_dump[idump] == 0) - error->all("Cannot use variable every setting for dump xtc"); + error->all(FLERR,"Cannot use variable every setting for dump xtc"); if (nevery_save == 0) nevery_save = output->every_dump[idump]; else if (nevery_save != output->every_dump[idump]) - error->all("Cannot change dump_modify every for dump xtc"); + error->all(FLERR,"Cannot change dump_modify every for dump xtc"); } /* ---------------------------------------------------------------------- */ @@ -131,17 +131,17 @@ void DumpXTC::openfile() fp = NULL; if (me == 0) - if (xdropen(&xd,filename,"w") == 0) error->one("Cannot open dump file"); + if (xdropen(&xd,filename,"w") == 0) error->one(FLERR,"Cannot open dump file"); } /* ---------------------------------------------------------------------- */ void DumpXTC::write_header(bigint nbig) { - if (nbig > MAXSMALLINT) error->all("Too many atoms for dump xtc"); + if (nbig > MAXSMALLINT) error->all(FLERR,"Too many atoms for dump xtc"); int n = nbig; if (update->ntimestep > MAXSMALLINT) - error->all("Too big a timestep for dump xtc"); + error->all(FLERR,"Too big a timestep for dump xtc"); int ntimestep = update->ntimestep; // all procs realloc coords if total count grew @@ -281,19 +281,19 @@ void DumpXTC::write_data(int n, double *mybuf) int DumpXTC::modify_param(int narg, char **arg) { if (strcmp(arg[0],"unwrap") == 0) { - if (narg < 2) error->all("Illegal dump_modify command"); + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[1],"yes") == 0) unwrap_flag = 1; else if (strcmp(arg[1],"no") == 0) unwrap_flag = 0; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); return 2; } else if (strcmp(arg[0],"precision") == 0) { - if (narg < 2) error->all("Illegal dump_modify command"); + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); precision = atof(arg[1]); if ((fabs(precision-10.0) > EPS) && (fabs(precision-100.0) > EPS) && (fabs(precision-1000.0) > EPS) && (fabs(precision-10000.0) > EPS) && (fabs(precision-100000.0) > EPS) && (fabs(precision-1000000.0) > EPS)) - error->all("Illegal dump_modify command"); + error->all(FLERR,"Illegal dump_modify command"); return 2; } return 0; diff --git a/src/angle.cpp b/src/angle.cpp index 0073044d3c..54a3a5d051 100644 --- a/src/angle.cpp +++ b/src/angle.cpp @@ -14,11 +14,14 @@ #include "math.h" #include "angle.h" #include "atom.h" +#include "comm.h" #include "force.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -27,8 +30,6 @@ Angle::Angle(LAMMPS *lmp) : Pointers(lmp) energy = 0.0; allocated = 0; - PI = 4.0*atan(1.0); - THIRD = 1.0/3.0; maxeatom = maxvatom = 0; eatom = NULL; @@ -49,9 +50,9 @@ Angle::~Angle() void Angle::init() { - if (!allocated) error->all("Angle coeffs are not set"); + if (!allocated) error->all(FLERR,"Angle coeffs are not set"); for (int i = 1; i <= atom->nangletypes; i++) - if (setflag[i] == 0) error->all("All angle coeffs are not set"); + if (setflag[i] == 0) error->all(FLERR,"All angle coeffs are not set"); } /* ---------------------------------------------------------------------- @@ -78,12 +79,12 @@ void Angle::ev_setup(int eflag, int vflag) if (eflag_atom && atom->nmax > maxeatom) { maxeatom = atom->nmax; memory->destroy(eatom); - memory->create(eatom,maxeatom,"bond:eatom"); + memory->create(eatom,comm->nthreads*maxeatom,"bond:eatom"); } if (vflag_atom && atom->nmax > maxvatom) { maxvatom = atom->nmax; memory->destroy(vatom); - memory->create(vatom,maxvatom,6,"bond:vatom"); + memory->create(vatom,comm->nthreads*maxvatom,6,"bond:vatom"); } // zero accumulators @@ -216,7 +217,7 @@ void Angle::ev_tally(int i, int j, int k, int nlocal, int newton_bond, double Angle::memory_usage() { - double bytes = maxeatom * sizeof(double); - bytes += maxvatom*6 * sizeof(double); + double bytes = comm->nthreads*maxeatom * sizeof(double); + bytes += comm->nthreads*maxvatom*6 * sizeof(double); return bytes; } diff --git a/src/angle.h b/src/angle.h index 99d8dc105f..46ee5e1dc6 100644 --- a/src/angle.h +++ b/src/angle.h @@ -20,6 +20,7 @@ namespace LAMMPS_NS { class Angle : protected Pointers { + friend class ThrOMP; public: int allocated; int *setflag; @@ -40,8 +41,6 @@ class Angle : protected Pointers { virtual double memory_usage(); protected: - double PI,THIRD; - int evflag; int eflag_either,eflag_global,eflag_atom; int vflag_either,vflag_global,vflag_atom; diff --git a/src/atom.cpp b/src/atom.cpp index b9c9c3e707..023d7a173f 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -42,9 +42,6 @@ using namespace LAMMPS_NS; #define EPSILON 1.0e-6 #define CUDA_CHUNK 3000 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) @@ -78,11 +75,15 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) radius = rmass = NULL; vfrac = s0 = NULL; x0 = NULL; - ellipsoid = NULL; + ellipsoid = line = tri = NULL; spin = NULL; eradius = ervel = erforce = NULL; cs = csforce = vforce = ervelforce = NULL; etag = NULL; + rho = drho = NULL; + e = de = NULL; + cv = NULL; + vest = NULL; maxspecial = 1; nspecial = NULL; @@ -105,13 +106,15 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) // initialize atom style and array existence flags // customize by adding new flag - sphere_flag = ellipsoid_flag = peri_flag = electron_flag = 0; - wavepacket_flag = 0; + sphere_flag = ellipsoid_flag = line_flag = tri_flag = 0; + peri_flag = electron_flag = 0; + wavepacket_flag = sph_flag = 0; molecule_flag = q_flag = mu_flag = 0; rmass_flag = radius_flag = omega_flag = torque_flag = angmom_flag = 0; vfrac_flag = spin_flag = eradius_flag = ervel_flag = erforce_flag = 0; cs_flag = csforce_flag = vforce_flag = ervelforce_flag= etag_flag = 0; + rho_flag = e_flag = cv_flag = vest_flag = 0; // ntype-length arrays @@ -183,6 +186,8 @@ Atom::~Atom() memory->destroy(s0); memory->destroy(x0); memory->destroy(ellipsoid); + memory->destroy(line); + memory->destroy(tri); memory->destroy(spin); memory->destroy(eradius); memory->destroy(ervel); @@ -257,8 +262,9 @@ void Atom::create_avec(const char *style, int narg, char **arg, char *suffix) // may have been set by old avec // customize by adding new flag - sphere_flag = ellipsoid_flag = peri_flag = electron_flag = 0; - + sphere_flag = ellipsoid_flag = line_flag = tri_flag = 0; + peri_flag = electron_flag = 0; + molecule_flag = q_flag = mu_flag = 0; rmass_flag = radius_flag = omega_flag = torque_flag = angmom_flag = 0; vfrac_flag = spin_flag = eradius_flag = ervel_flag = erforce_flag = 0; @@ -317,7 +323,7 @@ AtomVec *Atom::new_avec(const char *style, int narg, char **arg, #include "style_atom.h" #undef ATOM_CLASS - else error->all("Invalid atom style"); + else error->all(FLERR,"Invalid atom style"); return NULL; } @@ -343,7 +349,7 @@ void Atom::init() if (firstgroupname) { firstgroup = group->find(firstgroupname); if (firstgroup < 0) - error->all("Could not find atom_modify first group ID"); + error->all(FLERR,"Could not find atom_modify first group ID"); } else firstgroup = -1; // init AtomVec @@ -386,20 +392,20 @@ AtomVec *Atom::style_match(const char *style) void Atom::modify_params(int narg, char **arg) { - if (narg == 0) error->all("Illegal atom_modify command"); + if (narg == 0) error->all(FLERR,"Illegal atom_modify command"); int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"map") == 0) { - if (iarg+2 > narg) error->all("Illegal atom_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal atom_modify command"); if (strcmp(arg[iarg+1],"array") == 0) map_style = 1; else if (strcmp(arg[iarg+1],"hash") == 0) map_style = 2; - else error->all("Illegal atom_modify command"); + else error->all(FLERR,"Illegal atom_modify command"); if (domain->box_exist) - error->all("Atom_modify map command after simulation box is defined"); + error->all(FLERR,"Atom_modify map command after simulation box is defined"); iarg += 2; } else if (strcmp(arg[iarg],"first") == 0) { - if (iarg+2 > narg) error->all("Illegal atom_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal atom_modify command"); if (strcmp(arg[iarg+1],"all") == 0) { delete [] firstgroupname; firstgroupname = NULL; @@ -411,16 +417,16 @@ void Atom::modify_params(int narg, char **arg) } iarg += 2; } else if (strcmp(arg[iarg],"sort") == 0) { - if (iarg+3 > narg) error->all("Illegal atom_modify command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal atom_modify command"); sortfreq = atoi(arg[iarg+1]); userbinsize = atof(arg[iarg+2]); if (sortfreq < 0 || userbinsize < 0.0) - error->all("Illegal atom_modify command"); + error->all(FLERR,"Illegal atom_modify command"); if (sortfreq >= 0 && firstgroupname) - error->all("Atom_modify sort and first options " + error->all(FLERR,"Atom_modify sort and first options " "cannot be used together"); iarg += 3; - } else error->all("Illegal atom_modify command"); + } else error->all(FLERR,"Illegal atom_modify command"); } } @@ -441,7 +447,7 @@ void Atom::map_init() map_delete(); if (tag_enable == 0) - error->all("Cannot create an atom map unless atoms have IDs"); + error->all(FLERR,"Cannot create an atom map unless atoms have IDs"); int max = 0; for (int i = 0; i < nlocal; i++) max = MAX(max,tag[i]); @@ -759,7 +765,7 @@ void Atom::data_atoms(int n, char *buf) *next = '\n'; if (nwords != avec->size_data_atom && nwords != avec->size_data_atom + 3) - error->all("Incorrect atom format in data file"); + error->all(FLERR,"Incorrect atom format in data file"); char **values = new char*[nwords]; @@ -809,10 +815,10 @@ void Atom::data_atoms(int n, char *buf) next = strchr(buf,'\n'); values[0] = strtok(buf," \t\n\r\f"); - if (values[0] == NULL) error->all("Incorrect atom format in data file"); + if (values[0] == NULL) error->all(FLERR,"Incorrect atom format in data file"); for (m = 1; m < nwords; m++) { values[m] = strtok(NULL," \t\n\r\f"); - if (values[m] == NULL) error->all("Incorrect atom format in data file"); + if (values[m] == NULL) error->all(FLERR,"Incorrect atom format in data file"); } if (imageflag) @@ -858,7 +864,7 @@ void Atom::data_vels(int n, char *buf) *next = '\n'; if (nwords != avec->size_data_vel) - error->all("Incorrect velocity format in data file"); + error->all(FLERR,"Incorrect velocity format in data file"); char **values = new char*[nwords]; @@ -875,7 +881,7 @@ void Atom::data_vels(int n, char *buf) tagdata = atoi(values[0]); if (tagdata <= 0 || tagdata > map_tag_max) - error->one("Invalid atom ID in Velocities section of data file"); + error->one(FLERR,"Invalid atom ID in Velocities section of data file"); if ((m = map(tagdata)) >= 0) avec->data_vel(m,&values[1]); buf = next + 1; @@ -901,7 +907,7 @@ void Atom::data_bonus(int n, char *buf, AtomVec *avec_bonus) *next = '\n'; if (nwords != avec_bonus->size_data_bonus) - error->all("Incorrect bonus data format in data file"); + error->all(FLERR,"Incorrect bonus data format in data file"); char **values = new char*[nwords]; @@ -918,7 +924,7 @@ void Atom::data_bonus(int n, char *buf, AtomVec *avec_bonus) tagdata = atoi(values[0]); if (tagdata <= 0 || tagdata > map_tag_max) - error->one("Invalid atom ID in Bonus section of data file"); + error->one(FLERR,"Invalid atom ID in Bonus section of data file"); // ok to call child's data_atom_bonus() method thru parent avec_bonus, // since data_bonus() was called with child ptr, and method is virtual @@ -947,9 +953,9 @@ void Atom::data_bonds(int n, char *buf) sscanf(buf,"%d %d %d %d",&tmp,&itype,&atom1,&atom2); if (atom1 <= 0 || atom1 > map_tag_max || atom2 <= 0 || atom2 > map_tag_max) - error->one("Invalid atom ID in Bonds section of data file"); + error->one(FLERR,"Invalid atom ID in Bonds section of data file"); if (itype <= 0 || itype > nbondtypes) - error->one("Invalid bond type in Bonds section of data file"); + error->one(FLERR,"Invalid bond type in Bonds section of data file"); if ((m = map(atom1)) >= 0) { bond_type[m][num_bond[m]] = itype; bond_atom[m][num_bond[m]] = atom2; @@ -983,9 +989,9 @@ void Atom::data_angles(int n, char *buf) if (atom1 <= 0 || atom1 > map_tag_max || atom2 <= 0 || atom2 > map_tag_max || atom3 <= 0 || atom3 > map_tag_max) - error->one("Invalid atom ID in Angles section of data file"); + error->one(FLERR,"Invalid atom ID in Angles section of data file"); if (itype <= 0 || itype > nangletypes) - error->one("Invalid angle type in Angles section of data file"); + error->one(FLERR,"Invalid angle type in Angles section of data file"); if ((m = map(atom2)) >= 0) { angle_type[m][num_angle[m]] = itype; angle_atom1[m][num_angle[m]] = atom1; @@ -1031,9 +1037,9 @@ void Atom::data_dihedrals(int n, char *buf) atom2 <= 0 || atom2 > map_tag_max || atom3 <= 0 || atom3 > map_tag_max || atom4 <= 0 || atom4 > map_tag_max) - error->one("Invalid atom ID in Dihedrals section of data file"); + error->one(FLERR,"Invalid atom ID in Dihedrals section of data file"); if (itype <= 0 || itype > ndihedraltypes) - error->one("Invalid dihedral type in Dihedrals section of data file"); + error->one(FLERR,"Invalid dihedral type in Dihedrals section of data file"); if ((m = map(atom2)) >= 0) { dihedral_type[m][num_dihedral[m]] = itype; dihedral_atom1[m][num_dihedral[m]] = atom1; @@ -1090,9 +1096,9 @@ void Atom::data_impropers(int n, char *buf) atom2 <= 0 || atom2 > map_tag_max || atom3 <= 0 || atom3 > map_tag_max || atom4 <= 0 || atom4 > map_tag_max) - error->one("Invalid atom ID in Impropers section of data file"); + error->one(FLERR,"Invalid atom ID in Impropers section of data file"); if (itype <= 0 || itype > nimpropertypes) - error->one("Invalid improper type in Impropers section of data file"); + error->one(FLERR,"Invalid improper type in Impropers section of data file"); if ((m = map(atom2)) >= 0) { improper_type[m][num_improper[m]] = itype; improper_atom1[m][num_improper[m]] = atom1; @@ -1152,19 +1158,19 @@ void Atom::allocate_type_arrays() void Atom::set_mass(const char *str) { - if (mass == NULL) error->all("Cannot set mass for this atom style"); + if (mass == NULL) error->all(FLERR,"Cannot set mass for this atom style"); int itype; double mass_one; int n = sscanf(str,"%d %lg",&itype,&mass_one); - if (n != 2) error->all("Invalid mass line in data file"); + if (n != 2) error->all(FLERR,"Invalid mass line in data file"); - if (itype < 1 || itype > ntypes) error->all("Invalid type for mass set"); + if (itype < 1 || itype > ntypes) error->all(FLERR,"Invalid type for mass set"); mass[itype] = mass_one; mass_setflag[itype] = 1; - if (mass[itype] <= 0.0) error->all("Invalid mass value"); + if (mass[itype] <= 0.0) error->all(FLERR,"Invalid mass value"); } /* ---------------------------------------------------------------------- @@ -1174,13 +1180,13 @@ void Atom::set_mass(const char *str) void Atom::set_mass(int itype, double value) { - if (mass == NULL) error->all("Cannot set mass for this atom style"); - if (itype < 1 || itype > ntypes) error->all("Invalid type for mass set"); + if (mass == NULL) error->all(FLERR,"Cannot set mass for this atom style"); + if (itype < 1 || itype > ntypes) error->all(FLERR,"Invalid type for mass set"); mass[itype] = value; mass_setflag[itype] = 1; - if (mass[itype] <= 0.0) error->all("Invalid mass value"); + if (mass[itype] <= 0.0) error->all(FLERR,"Invalid mass value"); } /* ---------------------------------------------------------------------- @@ -1190,17 +1196,17 @@ void Atom::set_mass(int itype, double value) void Atom::set_mass(int narg, char **arg) { - if (mass == NULL) error->all("Cannot set mass for this atom style"); + if (mass == NULL) error->all(FLERR,"Cannot set mass for this atom style"); int lo,hi; force->bounds(arg[0],ntypes,lo,hi); - if (lo < 1 || hi > ntypes) error->all("Invalid type for mass set"); + if (lo < 1 || hi > ntypes) error->all(FLERR,"Invalid type for mass set"); for (int itype = lo; itype <= hi; itype++) { mass[itype] = atof(arg[1]); mass_setflag[itype] = 1; - if (mass[itype] <= 0.0) error->all("Invalid mass value"); + if (mass[itype] <= 0.0) error->all(FLERR,"Invalid mass value"); } } @@ -1224,7 +1230,7 @@ void Atom::check_mass() { if (mass == NULL) return; for (int itype = 1; itype <= ntypes; itype++) - if (mass_setflag[itype] == 0) error->all("All masses are not set"); + if (mass_setflag[itype] == 0) error->all(FLERR,"All masses are not set"); } /* ---------------------------------------------------------------------- @@ -1428,7 +1434,7 @@ void Atom::sort() // if (current[i] != permute[i]) flag = 1; //int flagall; //MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); - //if (flagall) error->all("Atom sort did not operate correctly"); + //if (flagall) error->all(FLERR,"Atom sort did not operate correctly"); } /* ---------------------------------------------------------------------- @@ -1458,7 +1464,7 @@ void Atom::setup_sort_bins() binsize = pow(1.0*CUDA_CHUNK/natoms*area,1.0/2.0); } } - if (binsize == 0.0) error->all("Atom sorting has bin size = 0.0"); + if (binsize == 0.0) error->all(FLERR,"Atom sorting has bin size = 0.0"); double bininv = 1.0/binsize; @@ -1490,7 +1496,7 @@ void Atom::setup_sort_bins() bininvz = nbinz / (bboxhi[2]-bboxlo[2]); if (1.0*nbinx*nbiny*nbinz > INT_MAX) - error->one("Too many atom sorting bins"); + error->one(FLERR,"Too many atom sorting bins"); nbins = nbinx*nbiny*nbinz; diff --git a/src/atom.h b/src/atom.h index 9b56510ca3..429aacb1c2 100644 --- a/src/atom.h +++ b/src/atom.h @@ -51,11 +51,15 @@ class Atom : protected Pointers { double **omega,**angmom,**torque; double *radius,*rmass,*vfrac,*s0; double **x0; - int *ellipsoid; + int *ellipsoid,*line,*tri; int *spin; double *eradius,*ervel,*erforce,*ervelforce; double *cs,*csforce,*vforce; int *etag; + double *rho, *drho; + double *e, *de; + double **vest; + double *cv; int **nspecial; // 0,1,2 = cummulative # of 1-2,1-3,1-4 neighs int **special; // IDs of 1-2,1-3,1-4 neighs of each atom @@ -80,13 +84,14 @@ class Atom : protected Pointers { // atom style and per-atom array existence flags // customize by adding new flag - int sphere_flag,ellipsoid_flag,peri_flag,electron_flag; - int wavepacket_flag; + int sphere_flag,ellipsoid_flag,line_flag,tri_flag,peri_flag,electron_flag; + int wavepacket_flag,sph_flag; int molecule_flag,q_flag,mu_flag; int rmass_flag,radius_flag,omega_flag,torque_flag,angmom_flag; int vfrac_flag,spin_flag,eradius_flag,ervel_flag,erforce_flag; int cs_flag,csforce_flag,vforce_flag,ervelforce_flag,etag_flag; + int rho_flag,e_flag,cv_flag,vest_flag; // extra peratom info in restart file destined for fix & diag diff --git a/src/atom_vec_atomic.cpp b/src/atom_vec_atomic.cpp index 9f991eb289..e4e2dcf5ee 100644 --- a/src/atom_vec_atomic.cpp +++ b/src/atom_vec_atomic.cpp @@ -56,7 +56,7 @@ void AtomVecAtomic::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); @@ -64,7 +64,7 @@ void AtomVecAtomic::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) @@ -596,11 +596,11 @@ void AtomVecAtomic::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); type[nlocal] = atoi(values[1]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); x[nlocal][0] = coord[0]; x[nlocal][1] = coord[1]; @@ -630,7 +630,7 @@ bigint AtomVecAtomic::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); return bytes; } diff --git a/src/atom_vec_charge.cpp b/src/atom_vec_charge.cpp index 1b9159c33d..81fc7a8ef8 100644 --- a/src/atom_vec_charge.cpp +++ b/src/atom_vec_charge.cpp @@ -58,7 +58,7 @@ void AtomVecCharge::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); @@ -66,7 +66,7 @@ void AtomVecCharge::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); q = memory->grow(atom->q,nmax,"atom:q"); @@ -647,11 +647,11 @@ void AtomVecCharge::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); type[nlocal] = atoi(values[1]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); q[nlocal] = atof(values[2]); @@ -695,7 +695,7 @@ bigint AtomVecCharge::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("q")) bytes += memory->usage(q,nmax); diff --git a/src/atom_vec_ellipsoid.cpp b/src/atom_vec_ellipsoid.cpp index 80776fedd1..4baff5b602 100755 --- a/src/atom_vec_ellipsoid.cpp +++ b/src/atom_vec_ellipsoid.cpp @@ -25,10 +25,12 @@ #include "domain.h" #include "modify.h" #include "fix.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define DELTA 10000 #define DELTA_BONUS 10000 @@ -53,8 +55,6 @@ AtomVecEllipsoid::AtomVecEllipsoid(LAMMPS *lmp, int narg, char **arg) : atom->ellipsoid_flag = 1; atom->rmass_flag = atom->angmom_flag = atom->torque_flag = 1; - PI = 4.0*atan(1.0); - nlocal_bonus = nghost_bonus = nmax_bonus = 0; bonus = NULL; } @@ -78,7 +78,7 @@ void AtomVecEllipsoid::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); @@ -86,11 +86,11 @@ void AtomVecEllipsoid::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); angmom = memory->grow(atom->angmom,nmax,3,"atom:angmom"); - torque = memory->grow(atom->torque,nmax,3,"atom:torque"); + torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); ellipsoid = memory->grow(atom->ellipsoid,nmax,"atom:ellipsoid"); if (atom->nextra_grow) @@ -118,7 +118,7 @@ void AtomVecEllipsoid::grow_bonus() { nmax_bonus += DELTA_BONUS; if (nmax_bonus < 0 || nmax_bonus > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); bonus = (Bonus *) memory->srealloc(bonus,nmax_bonus*sizeof(Bonus), "atom:bonus"); @@ -1121,20 +1121,20 @@ void AtomVecEllipsoid::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); type[nlocal] = atoi(values[1]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); ellipsoid[nlocal] = atoi(values[2]); if (ellipsoid[nlocal] == 0) ellipsoid[nlocal] = -1; else if (ellipsoid[nlocal] == 1) ellipsoid[nlocal] = 0; - else error->one("Invalid atom type in Atoms section of data file"); + else error->one(FLERR,"Invalid atom type in Atoms section of data file"); rmass[nlocal] = atof(values[3]); if (rmass[nlocal] <= 0.0) - error->one("Invalid density in Atoms section of data file"); + error->one(FLERR,"Invalid density in Atoms section of data file"); x[nlocal][0] = coord[0]; x[nlocal][1] = coord[1]; @@ -1163,11 +1163,11 @@ int AtomVecEllipsoid::data_atom_hybrid(int nlocal, char **values) ellipsoid[nlocal] = atoi(values[0]); if (ellipsoid[nlocal] == 0) ellipsoid[nlocal] = -1; else if (ellipsoid[nlocal] == 1) ellipsoid[nlocal] = 0; - else error->one("Invalid atom type in Atoms section of data file"); + else error->one(FLERR,"Invalid atom type in Atoms section of data file"); rmass[nlocal] = atof(values[1]); if (rmass[nlocal] <= 0.0) - error->one("Invalid density in Atoms section of data file"); + error->one(FLERR,"Invalid density in Atoms section of data file"); return 2; } @@ -1179,7 +1179,7 @@ int AtomVecEllipsoid::data_atom_hybrid(int nlocal, char **values) void AtomVecEllipsoid::data_atom_bonus(int m, char **values) { if (ellipsoid[m]) - error->one("Assigning ellipsoid parameters to non-ellipsoid atom"); + error->one(FLERR,"Assigning ellipsoid parameters to non-ellipsoid atom"); if (nlocal_bonus == nmax_bonus) grow_bonus(); @@ -1188,7 +1188,7 @@ void AtomVecEllipsoid::data_atom_bonus(int m, char **values) shape[1] = 0.5 * atof(values[1]); shape[2] = 0.5 * atof(values[2]); if (shape[0] <= 0.0 || shape[1] <= 0.0 || shape[2] <= 0.0) - error->one("Invalid shape in Ellipsoids section of data file"); + error->one(FLERR,"Invalid shape in Ellipsoids section of data file"); double *quat = bonus[nlocal_bonus].quat; quat[0] = atof(values[3]); @@ -1200,7 +1200,7 @@ void AtomVecEllipsoid::data_atom_bonus(int m, char **values) // reset ellipsoid mass // previously stored density in rmass - rmass[m] *= 4.0*PI/3.0 * shape[0]*shape[1]*shape[2]; + rmass[m] *= 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]; bonus[nlocal_bonus].ilocal = m; ellipsoid[m] = nlocal_bonus++; @@ -1246,11 +1246,11 @@ bigint AtomVecEllipsoid::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); if (atom->memcheck("angmom")) bytes += memory->usage(angmom,nmax,3); - if (atom->memcheck("torque")) bytes += memory->usage(torque,nmax,3); + if (atom->memcheck("torque")) bytes += memory->usage(torque,nmax*comm->nthreads,3); if (atom->memcheck("ellipsoid")) bytes += memory->usage(ellipsoid,nmax); bytes += nmax_bonus*sizeof(Bonus); diff --git a/src/atom_vec_ellipsoid.h b/src/atom_vec_ellipsoid.h index 537f1eaab7..0020eb5f28 100755 --- a/src/atom_vec_ellipsoid.h +++ b/src/atom_vec_ellipsoid.h @@ -76,7 +76,6 @@ class AtomVecEllipsoid : public AtomVec { void set_shape(int, double, double, double); private: - double PI; int *tag,*type,*mask,*image; double **x,**v,**f; double *rmass; diff --git a/src/atom_vec_hybrid.cpp b/src/atom_vec_hybrid.cpp index 03c0c501ea..b6b1dabdea 100644 --- a/src/atom_vec_hybrid.cpp +++ b/src/atom_vec_hybrid.cpp @@ -24,9 +24,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define DELTA 10000 /* ---------------------------------------------------------------------- */ @@ -36,7 +33,7 @@ AtomVecHybrid::AtomVecHybrid(LAMMPS *lmp, int narg, char **arg) : { int i,k,dummy; - if (narg < 1) error->all("Illegal atom_style command"); + if (narg < 1) error->all(FLERR,"Illegal atom_style command"); // create sub-styles @@ -47,9 +44,9 @@ AtomVecHybrid::AtomVecHybrid(LAMMPS *lmp, int narg, char **arg) : for (i = 0; i < narg; i++) { for (k = 0; k < i; k++) if (strcmp(arg[i],keywords[k]) == 0) - error->all("Atom style hybrid cannot use same atom style twice"); + error->all(FLERR,"Atom style hybrid cannot use same atom style twice"); if (strcmp(arg[i],"hybrid") == 0) - error->all("Atom style hybrid cannot have hybrid as an argument"); + error->all(FLERR,"Atom style hybrid cannot have hybrid as an argument"); styles[i] = atom->new_avec(arg[i],0,NULL,NULL,dummy); keywords[i] = new char[strlen(arg[i])+1]; strcpy(keywords[i],arg[i]); @@ -121,7 +118,7 @@ void AtomVecHybrid::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); // sub-styles perform all reallocation // turn off nextra_grow so hybrid can do that once below @@ -814,11 +811,11 @@ void AtomVecHybrid::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); type[nlocal] = atoi(values[1]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); x[nlocal][0] = coord[0]; x[nlocal][1] = coord[1]; diff --git a/src/atom_vec_line.cpp b/src/atom_vec_line.cpp new file mode 100644 index 0000000000..c49cd6b6ad --- /dev/null +++ b/src/atom_vec_line.cpp @@ -0,0 +1,1170 @@ +/* ---------------------------------------------------------------------- + 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 "lmptype.h" +#include "math.h" +#include "stdlib.h" +#include "string.h" +#include "atom_vec_line.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "modify.h" +#include "force.h" +#include "fix.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define DELTA 10000 +#define DELTA_BONUS 10000 +#define EPSILON 0.001 + +/* ---------------------------------------------------------------------- */ + +AtomVecLine::AtomVecLine(LAMMPS *lmp, int narg, char **arg) : + AtomVec(lmp, narg, arg) +{ + molecular = 0; + + comm_x_only = comm_f_only = 0; + size_forward = 4; + size_reverse = 6; + size_border = 10; + size_velocity = 6; + size_data_atom = 8; + size_data_vel = 7; + size_data_bonus = 5; + xcol_data = 6; + + atom->line_flag = 1; + atom->molecule_flag = atom->rmass_flag = 1; + atom->omega_flag = atom->torque_flag = 1; + + nlocal_bonus = nghost_bonus = nmax_bonus = 0; + bonus = NULL; +} + +/* ---------------------------------------------------------------------- */ + +AtomVecLine::~AtomVecLine() +{ + memory->sfree(bonus); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecLine::init() +{ + AtomVec::init(); + + if (domain->dimension != 2) + error->all(FLERR,"Atom_style line can only be used in 2d simulations"); +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by DELTA + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecLine::grow(int n) +{ + if (n == 0) nmax += DELTA; + else nmax = n; + atom->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + tag = memory->grow(atom->tag,nmax,"atom:tag"); + type = memory->grow(atom->type,nmax,"atom:type"); + mask = memory->grow(atom->mask,nmax,"atom:mask"); + image = memory->grow(atom->image,nmax,"atom:image"); + x = memory->grow(atom->x,nmax,3,"atom:x"); + v = memory->grow(atom->v,nmax,3,"atom:v"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + + molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); + rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); + omega = memory->grow(atom->omega,nmax,3,"atom:omega"); + torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); + line = memory->grow(atom->line,nmax,"atom:line"); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVecLine::grow_reset() +{ + tag = atom->tag; type = atom->type; + mask = atom->mask; image = atom->image; + x = atom->x; v = atom->v; f = atom->f; + molecule = atom->molecule; rmass = atom->rmass; + omega = atom->omega; torque = atom->torque; +} + +/* ---------------------------------------------------------------------- + grow bonus data structure +------------------------------------------------------------------------- */ + +void AtomVecLine::grow_bonus() +{ + nmax_bonus += DELTA_BONUS; + if (nmax_bonus < 0 || nmax_bonus > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + bonus = (Bonus *) memory->srealloc(bonus,nmax_bonus*sizeof(Bonus), + "atom:bonus"); +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVecLine::copy(int i, int j, int delflag) +{ + tag[j] = tag[i]; + type[j] = type[i]; + mask[j] = mask[i]; + image[j] = image[i]; + x[j][0] = x[i][0]; + x[j][1] = x[i][1]; + x[j][2] = x[i][2]; + v[j][0] = v[i][0]; + v[j][1] = v[i][1]; + v[j][2] = v[i][2]; + + molecule[j] = molecule[i]; + rmass[j] = rmass[i]; + omega[j][0] = omega[i][0]; + omega[j][1] = omega[i][1]; + omega[j][2] = omega[i][2]; + + // if delflag and atom J has bonus data, then delete it + + if (delflag && line[j] >= 0) { + copy_bonus(nlocal_bonus-1,line[j]); + nlocal_bonus--; + } + + // if atom I has bonus data and not deleting I, repoint I's bonus to J + + if (line[i] >= 0 && i != j) bonus[line[i]].ilocal = j; + line[j] = line[i]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j); +} + +/* ---------------------------------------------------------------------- + copy bonus data from I to J, effectively deleting the J entry + insure index pointers between per-atom and bonus data are updated +------------------------------------------------------------------------- */ + +void AtomVecLine::copy_bonus(int i, int j) +{ + memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); + line[bonus[j].ilocal] = j; +} + +/* ---------------------------------------------------------------------- + clear ghost info in bonus data + called before ghosts are recommunicated in comm and irregular +------------------------------------------------------------------------- */ + +void AtomVecLine::clear_bonus() +{ + nghost_bonus = 0; +} + +/* ---------------------------------------------------------------------- + set length value in bonus data for particle I + oriented along x axis + this may create or delete entry in bonus data +------------------------------------------------------------------------- */ + +void AtomVecLine::set_length(int i, double value) +{ + if (line[i] < 0) { + if (value == 0.0) return; + if (nlocal_bonus == nmax_bonus) grow_bonus(); + bonus[nlocal_bonus].length = value; + bonus[nlocal_bonus].theta = 0.0; + bonus[nlocal_bonus].ilocal = i; + line[i] = nlocal_bonus++; + } else if (value == 0.0) { + copy_bonus(nlocal_bonus-1,line[i]); + nlocal_bonus--; + line[i] = -1; + } else bonus[line[i]].length = value; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::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]; + if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; + } + } 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; + if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::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]; + if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = omega[j][0]; + buf[m++] = omega[j][1]; + buf[m++] = omega[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; + if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = omega[j][0]; + buf[m++] = omega[j][1]; + buf[m++] = omega[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; + if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; + 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]; + } + buf[m++] = omega[j][0]; + buf[m++] = omega[j][1]; + buf[m++] = omega[j][2]; + } + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::pack_comm_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecLine::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++]; + if (line[i] >= 0) bonus[line[i]].theta = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecLine::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++]; + if (line[i] >= 0) bonus[line[i]].theta = buf[m++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + omega[i][0] = buf[m++]; + omega[i][1] = buf[m++]; + omega[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::unpack_comm_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + if (line[i] >= 0) bonus[line[i]].theta = buf[m++]; + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::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]; + buf[m++] = torque[i][0]; + buf[m++] = torque[i][1]; + buf[m++] = torque[i][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::pack_reverse_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = torque[i][0]; + buf[m++] = torque[i][1]; + buf[m++] = torque[i][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecLine::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++]; + torque[j][0] += buf[m++]; + torque[j][1] += buf[m++]; + torque[j][2] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::unpack_reverse_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + torque[j][0] += buf[m++]; + torque[j][1] += buf[m++]; + torque[j][2] += buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = molecule[j]; + if (line[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + buf[m++] = bonus[line[j]].length; + buf[m++] = bonus[line[j]].theta; + } + } + } 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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = molecule[j]; + if (line[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + buf[m++] = bonus[line[j]].length; + buf[m++] = bonus[line[j]].theta; + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = molecule[j]; + if (line[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + buf[m++] = bonus[line[j]].length; + buf[m++] = bonus[line[j]].theta; + } + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = omega[j][0]; + buf[m++] = omega[j][1]; + buf[m++] = omega[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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = molecule[j]; + if (line[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + buf[m++] = bonus[line[j]].length; + buf[m++] = bonus[line[j]].theta; + } + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = omega[j][0]; + buf[m++] = omega[j][1]; + buf[m++] = omega[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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = molecule[j]; + if (line[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + buf[m++] = bonus[line[j]].length; + buf[m++] = bonus[line[j]].theta; + } + 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]; + } + buf[m++] = omega[j][0]; + buf[m++] = omega[j][1]; + buf[m++] = omega[j][2]; + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::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++] = molecule[j]; + if (line[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + buf[m++] = bonus[line[j]].length; + buf[m++] = bonus[line[j]].theta; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecLine::unpack_border(int n, int first, double *buf) +{ + int i,j,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] = static_cast (buf[m++]); + type[i] = static_cast (buf[m++]); + mask[i] = static_cast (buf[m++]); + molecule[i] = static_cast (buf[m++]); + line[i] = static_cast (buf[m++]); + if (line[i] == 0) line[i] = -1; + else { + j = nlocal_bonus + nghost_bonus; + if (j == nmax_bonus) grow_bonus(); + bonus[j].length = buf[m++]; + bonus[j].theta = buf[m++]; + bonus[j].ilocal = i; + line[i] = j; + nghost_bonus++; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecLine::unpack_border_vel(int n, int first, double *buf) +{ + int i,j,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] = static_cast (buf[m++]); + type[i] = static_cast (buf[m++]); + mask[i] = static_cast (buf[m++]); + molecule[i] = static_cast (buf[m++]); + line[i] = static_cast (buf[m++]); + if (line[i] == 0) line[i] = -1; + else { + j = nlocal_bonus + nghost_bonus; + if (j == nmax_bonus) grow_bonus(); + bonus[j].length = buf[m++]; + bonus[j].theta = buf[m++]; + bonus[j].ilocal = i; + line[i] = j; + nghost_bonus++; + } + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + omega[i][0] = buf[m++]; + omega[i][1] = buf[m++]; + omega[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecLine::unpack_border_hybrid(int n, int first, double *buf) +{ + int i,j,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + molecule[i] = static_cast (buf[m++]); + line[i] = static_cast (buf[m++]); + if (line[i] == 0) line[i] = -1; + else { + j = nlocal_bonus + nghost_bonus; + if (j == nmax_bonus) grow_bonus(); + bonus[j].length = buf[m++]; + bonus[j].theta = buf[m++]; + bonus[j].ilocal = i; + line[i] = j; + nghost_bonus++; + } + } + return m; +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them +------------------------------------------------------------------------- */ + +int AtomVecLine::pack_exchange(int i, double *buf) +{ + 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++] = tag[i]; + buf[m++] = type[i]; + buf[m++] = mask[i]; + buf[m++] = image[i]; + + buf[m++] = molecule[i]; + buf[m++] = rmass[i]; + buf[m++] = omega[i][0]; + buf[m++] = omega[i][1]; + buf[m++] = omega[i][2]; + + if (line[i] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + int j = line[i]; + buf[m++] = bonus[j].length; + buf[m++] = bonus[j].theta; + } + + 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 AtomVecLine::unpack_exchange(double *buf) +{ + 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] = static_cast (buf[m++]); + type[nlocal] = static_cast (buf[m++]); + mask[nlocal] = static_cast (buf[m++]); + image[nlocal] = static_cast (buf[m++]); + + molecule[nlocal] = static_cast (buf[m++]); + rmass[nlocal] = buf[m++]; + omega[nlocal][0] = buf[m++]; + omega[nlocal][1] = buf[m++]; + omega[nlocal][2] = buf[m++]; + + line[nlocal] = static_cast (buf[m++]); + if (line[nlocal] == 0) line[nlocal] = -1; + else { + if (nlocal_bonus == nmax_bonus) grow_bonus(); + bonus[nlocal_bonus].length = buf[m++]; + bonus[nlocal_bonus].theta = buf[m++]; + bonus[nlocal_bonus].ilocal = nlocal; + line[nlocal] = nlocal_bonus++; + } + + 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 AtomVecLine::size_restart() +{ + int i; + + int n = 0; + int nlocal = atom->nlocal; + for (i = 0; i < nlocal; i++) + if (line[i] >= 0) n += 19; + else n += 17; + + 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 AtomVecLine::pack_restart(int i, double *buf) +{ + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = tag[i]; + buf[m++] = type[i]; + buf[m++] = mask[i]; + buf[m++] = image[i]; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + + buf[m++] = molecule[i]; + buf[m++] = rmass[i]; + buf[m++] = omega[i][0]; + buf[m++] = omega[i][1]; + buf[m++] = omega[i][2]; + + if (line[i] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + int j = line[i]; + buf[m++] = bonus[j].length; + buf[m++] = bonus[j].theta; + } + + 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 AtomVecLine::unpack_restart(double *buf) +{ + 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] = static_cast (buf[m++]); + type[nlocal] = static_cast (buf[m++]); + mask[nlocal] = static_cast (buf[m++]); + image[nlocal] = static_cast (buf[m++]); + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + + molecule[nlocal] = static_cast (buf[m++]); + rmass[nlocal] = buf[m++]; + omega[nlocal][0] = buf[m++]; + omega[nlocal][1] = buf[m++]; + omega[nlocal][2] = buf[m++]; + + line[nlocal] = static_cast (buf[m++]); + if (line[nlocal] == 0) line[nlocal] = -1; + else { + if (nlocal_bonus == nmax_bonus) grow_bonus(); + bonus[nlocal_bonus].length = buf[m++]; + bonus[nlocal_bonus].theta = buf[m++]; + bonus[nlocal_bonus].ilocal = nlocal; + line[nlocal] = nlocal_bonus++; + } + + 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 AtomVecLine::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] = (512 << 20) | (512 << 10) | 512; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + molecule[nlocal] = 0; + rmass[nlocal] = 1.0; + omega[nlocal][0] = 0.0; + omega[nlocal][1] = 0.0; + omega[nlocal][2] = 0.0; + line[nlocal] = -1; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecLine::data_atom(double *coord, int imagetmp, char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = atoi(values[0]); + if (tag[nlocal] <= 0) + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); + + molecule[nlocal] = atoi(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"); + + line[nlocal] = atoi(values[3]); + if (line[nlocal] == 0) line[nlocal] = -1; + else if (line[nlocal] == 1) line[nlocal] = 0; + else error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + rmass[nlocal] = atof(values[4]); + if (rmass[nlocal] <= 0.0) + error->one(FLERR,"Invalid density in Atoms section of data file"); + + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + + image[nlocal] = imagetmp; + + mask[nlocal] = 1; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + omega[nlocal][0] = 0.0; + omega[nlocal][1] = 0.0; + omega[nlocal][2] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one line in Atoms section of data file + initialize other atom quantities for this sub-style +------------------------------------------------------------------------- */ + +int AtomVecLine::data_atom_hybrid(int nlocal, char **values) +{ + molecule[nlocal] = atoi(values[0]); + + line[nlocal] = atoi(values[1]); + if (line[nlocal] == 0) line[nlocal] = -1; + else if (line[nlocal] == 1) line[nlocal] = 0; + else error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + rmass[nlocal] = atof(values[2]); + if (rmass[nlocal] <= 0.0) + error->one(FLERR,"Invalid density in Atoms section of data file"); + + return 3; +} + +/* ---------------------------------------------------------------------- + unpack one line from Lines section of data file +------------------------------------------------------------------------- */ + +void AtomVecLine::data_atom_bonus(int m, char **values) +{ + if (line[m]) error->one(FLERR,"Assigning line parameters to non-line atom"); + + if (nlocal_bonus == nmax_bonus) grow_bonus(); + + double x1 = atof(values[0]); + double y1 = atof(values[1]); + double x2 = atof(values[2]); + double y2 = atof(values[3]); + double dx = x2 - x1; + double dy = y2 - y1; + double length = sqrt(dx*dx + dy*dy); + + bonus[nlocal_bonus].length = length; + if (dy >= 0.0) bonus[nlocal_bonus].theta = acos(dx/length); + else bonus[nlocal_bonus].theta = -acos(dx/length); + + double xc = 0.5*(x1+x2); + double yc = 0.5*(y1+y2); + dx = xc - x[m][0]; + dy = yc - x[m][1]; + double delta = sqrt(dx*dx + dy*dy); + + if (delta/length > EPSILON) + error->one(FLERR,"Inconsistent line segment in data file"); + + x[m][0] = xc; + x[m][1] = yc; + + // reset line mass + // previously stored density in rmass + + rmass[m] *= length; + + bonus[nlocal_bonus].ilocal = m; + line[m] = nlocal_bonus++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Velocities section of data file +------------------------------------------------------------------------- */ + +void AtomVecLine::data_vel(int m, char **values) +{ + v[m][0] = atof(values[0]); + v[m][1] = atof(values[1]); + v[m][2] = atof(values[2]); + omega[m][0] = atof(values[3]); + omega[m][1] = atof(values[4]); + omega[m][2] = atof(values[5]); +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one line in Velocities section of data file +------------------------------------------------------------------------- */ + +int AtomVecLine::data_vel_hybrid(int m, char **values) +{ + omega[m][0] = atof(values[0]); + omega[m][1] = atof(values[1]); + omega[m][2] = atof(values[2]); + return 3; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecLine::memory_usage() +{ + bigint bytes = 0; + + if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); + if (atom->memcheck("type")) bytes += memory->usage(type,nmax); + if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); + if (atom->memcheck("image")) bytes += memory->usage(image,nmax); + if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); + if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); + + if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); + if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); + if (atom->memcheck("omega")) bytes += memory->usage(omega,nmax,3); + if (atom->memcheck("torque")) bytes += memory->usage(torque,nmax*comm->nthreads,3); + if (atom->memcheck("line")) bytes += memory->usage(line,nmax); + + bytes += nmax_bonus*sizeof(Bonus); + + return bytes; +} + +/* ---------------------------------------------------------------------- + check consistency of internal Bonus data structure + n = # of atoms in regular structure to check against +------------------------------------------------------------------------- */ + +/* +void AtomVecLine::consistency_check(int n, char *str) +{ + int iflag = 0; + int count = 0; + for (int i = 0; i < n; i++) { + + if (line[i] >= 0) { + count++; + if (line[i] >= nlocal_bonus) iflag++; + if (bonus[line[i]].ilocal != i) iflag++; + //if (comm->me == 1 && update->ntimestep == 873) + // printf("CCHK %s: %d %d: %d %d: %d %d\n", + // str,i,n,line[i],nlocal_bonus,bonus[line[i]].ilocal,iflag); + } + } + + if (iflag) { + char msg[128]; + sprintf(msg,"BAD VECLINE PTRS: %s: %d %d: %d\n",str,comm->me, + update->ntimestep,iflag); + error->one(FLERR,msg); + } + + if (count != nlocal_bonus) { + char msg[128]; + sprintf(msg,"BAD VECLINE COUNT: %s: %d %d: %d %d\n", + str,comm->me,update->ntimestep,count,nlocal_bonus); + error->one(FLERR,msg); + } +} +*/ diff --git a/src/atom_vec_line.h b/src/atom_vec_line.h new file mode 100644 index 0000000000..3dd6d6e37c --- /dev/null +++ b/src/atom_vec_line.h @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------- + 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(line,AtomVecLine) + +#else + +#ifndef LMP_ATOM_VEC_LINE_H +#define LMP_ATOM_VEC_LINE_H + +#include "atom_vec.h" + +namespace LAMMPS_NS { + +class AtomVecLine : public AtomVec { + public: + struct Bonus { + double length,theta; + int ilocal; + }; + struct Bonus *bonus; + + AtomVecLine(class LAMMPS *, int, char **); + ~AtomVecLine(); + void init(); + 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 *); + int pack_reverse_hybrid(int, int, double *); + void unpack_reverse(int, int *, double *); + int unpack_reverse_hybrid(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 *, int, char **); + int data_atom_hybrid(int, char **); + void data_vel(int, char **); + int data_vel_hybrid(int, char **); + bigint memory_usage(); + + // manipulate Bonus data structure for extra atom info + + void clear_bonus(); + void data_atom_bonus(int, char **); + + // unique to AtomVecLine + + void set_length(int, double); + + private: + int *tag,*type,*mask,*image; + double **x,**v,**f; + int *molecule; + double *rmass; + double **omega,**torque; + int *line; + + int nlocal_bonus,nghost_bonus,nmax_bonus; + + void grow_bonus(); + void copy_bonus(int, int); + // void consistency_check(int, char *); +}; + +} + +#endif +#endif diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index 77b33cc816..96b2d766d8 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -23,10 +23,12 @@ #include "force.h" #include "fix.h" #include "fix_adapt.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define DELTA 10000 @@ -50,8 +52,6 @@ AtomVecSphere::AtomVecSphere(LAMMPS *lmp, int narg, char **arg) : atom->sphere_flag = 1; atom->radius_flag = atom->rmass_flag = atom->omega_flag = atom->torque_flag = 1; - - PI = 4.0*atan(1.0); } /* ---------------------------------------------------------------------- */ @@ -89,7 +89,7 @@ void AtomVecSphere::grow(int n) else nmax = n; atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) - error->one("Per-processor system is too big"); + error->one(FLERR,"Per-processor system is too big"); tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); @@ -97,12 +97,12 @@ void AtomVecSphere::grow(int n) image = memory->grow(atom->image,nmax,"atom:image"); x = memory->grow(atom->x,nmax,3,"atom:x"); v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax,3*comm->nthreads,"atom:f"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); radius = memory->grow(atom->radius,nmax,"atom:radius"); rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); omega = memory->grow(atom->omega,nmax,3,"atom:omega"); - torque = memory->grow(atom->torque,nmax,3,"atom:torque"); + torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) @@ -929,7 +929,7 @@ void AtomVecSphere::create_atom(int itype, double *coord) v[nlocal][2] = 0.0; radius[nlocal] = 0.5; - rmass[nlocal] = 4.0*PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal]; + rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal]; omega[nlocal][0] = 0.0; omega[nlocal][1] = 0.0; omega[nlocal][2] = 0.0; @@ -949,23 +949,23 @@ void AtomVecSphere::data_atom(double *coord, int imagetmp, char **values) tag[nlocal] = atoi(values[0]); if (tag[nlocal] <= 0) - error->one("Invalid atom ID in Atoms section of data file"); + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); type[nlocal] = atoi(values[1]); if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one("Invalid atom type in Atoms section of data file"); + error->one(FLERR,"Invalid atom type in Atoms section of data file"); radius[nlocal] = 0.5 * atof(values[2]); if (radius[nlocal] < 0.0) - error->one("Invalid radius in Atoms section of data file"); + error->one(FLERR,"Invalid radius in Atoms section of data file"); double density = atof(values[3]); if (density <= 0.0) - error->one("Invalid density in Atoms section of data file"); + error->one(FLERR,"Invalid density in Atoms section of data file"); if (radius[nlocal] == 0.0) rmass[nlocal] = density; else - rmass[nlocal] = 4.0*PI/3.0 * + rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal] * density; x[nlocal][0] = coord[0]; @@ -994,15 +994,15 @@ int AtomVecSphere::data_atom_hybrid(int nlocal, char **values) { radius[nlocal] = 0.5 * atof(values[0]); if (radius[nlocal] < 0.0) - error->one("Invalid radius in Atoms section of data file"); + error->one(FLERR,"Invalid radius in Atoms section of data file"); double density = atof(values[1]); if (density <= 0.0) - error->one("Invalid density in Atoms section of data file"); + error->one(FLERR,"Invalid density in Atoms section of data file"); if (radius[nlocal] == 0.0) rmass[nlocal] = density; else - rmass[nlocal] = 4.0*PI/3.0 * + rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal] * density; return 2; @@ -1048,12 +1048,12 @@ bigint AtomVecSphere::memory_usage() if (atom->memcheck("image")) bytes += memory->usage(image,nmax); if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax,3*comm->nthreads); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); if (atom->memcheck("radius")) bytes += memory->usage(radius,nmax); if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); if (atom->memcheck("omega")) bytes += memory->usage(omega,nmax,3); - if (atom->memcheck("torque")) bytes += memory->usage(torque,nmax,3); + if (atom->memcheck("torque")) bytes += memory->usage(torque,nmax*comm->nthreads,3); return bytes; } diff --git a/src/atom_vec_sphere.h b/src/atom_vec_sphere.h index 8157029615..78357b7d1a 100644 --- a/src/atom_vec_sphere.h +++ b/src/atom_vec_sphere.h @@ -61,7 +61,6 @@ class AtomVecSphere : public AtomVec { bigint memory_usage(); private: - double PI; int *tag,*type,*mask,*image; double **x,**v,**f; double *radius,*density,*rmass; diff --git a/src/atom_vec_tri.cpp b/src/atom_vec_tri.cpp new file mode 100644 index 0000000000..0f3fbe161a --- /dev/null +++ b/src/atom_vec_tri.cpp @@ -0,0 +1,1564 @@ +/* ---------------------------------------------------------------------- + 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 "lmptype.h" +#include "math.h" +#include "stdlib.h" +#include "string.h" +#include "atom_vec_tri.h" +#include "math_extra.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "modify.h" +#include "force.h" +#include "fix.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define DELTA 10000 +#define DELTA_BONUS 10000 +#define EPSILON 0.001 + +/* ---------------------------------------------------------------------- */ + +AtomVecTri::AtomVecTri(LAMMPS *lmp, int narg, char **arg) : + AtomVec(lmp, narg, arg) +{ + molecular = 0; + + comm_x_only = comm_f_only = 0; + size_forward = 7; + size_reverse = 6; + size_border = 24; + size_velocity = 6; + size_data_atom = 8; + size_data_vel = 7; + size_data_bonus = 10; + xcol_data = 6; + + atom->tri_flag = 1; + atom->molecule_flag = atom->rmass_flag = 1; + atom->angmom_flag = atom->torque_flag = 1; + + nlocal_bonus = nghost_bonus = nmax_bonus = 0; + bonus = NULL; +} + +/* ---------------------------------------------------------------------- */ + +AtomVecTri::~AtomVecTri() +{ + memory->sfree(bonus); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTri::init() +{ + AtomVec::init(); + + if (domain->dimension != 3) + error->all(FLERR,"Atom_style tri can only be used in 3d simulations"); +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by DELTA + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecTri::grow(int n) +{ + if (n == 0) nmax += DELTA; + else nmax = n; + atom->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + tag = memory->grow(atom->tag,nmax,"atom:tag"); + type = memory->grow(atom->type,nmax,"atom:type"); + mask = memory->grow(atom->mask,nmax,"atom:mask"); + image = memory->grow(atom->image,nmax,"atom:image"); + x = memory->grow(atom->x,nmax,3,"atom:x"); + v = memory->grow(atom->v,nmax,3,"atom:v"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + + molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); + rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); + angmom = memory->grow(atom->angmom,nmax,3,"atom:angmom"); + torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); + tri = memory->grow(atom->tri,nmax,"atom:tri"); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVecTri::grow_reset() +{ + tag = atom->tag; type = atom->type; + mask = atom->mask; image = atom->image; + x = atom->x; v = atom->v; f = atom->f; + molecule = atom->molecule; rmass = atom->rmass; + angmom = atom->angmom; torque = atom->torque; +} + +/* ---------------------------------------------------------------------- + grow bonus data structure +------------------------------------------------------------------------- */ + +void AtomVecTri::grow_bonus() +{ + nmax_bonus += DELTA_BONUS; + if (nmax_bonus < 0 || nmax_bonus > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + bonus = (Bonus *) memory->srealloc(bonus,nmax_bonus*sizeof(Bonus), + "atom:bonus"); +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J + if delflag and atom J has bonus data, then delete it +------------------------------------------------------------------------- */ + +void AtomVecTri::copy(int i, int j, int delflag) +{ + tag[j] = tag[i]; + type[j] = type[i]; + mask[j] = mask[i]; + image[j] = image[i]; + x[j][0] = x[i][0]; + x[j][1] = x[i][1]; + x[j][2] = x[i][2]; + v[j][0] = v[i][0]; + v[j][1] = v[i][1]; + v[j][2] = v[i][2]; + + molecule[j] = molecule[i]; + rmass[j] = rmass[i]; + angmom[j][0] = angmom[i][0]; + angmom[j][1] = angmom[i][1]; + angmom[j][2] = angmom[i][2]; + + // if delflag and atom J has bonus data, then delete it + + if (delflag && tri[j] >= 0) { + copy_bonus(nlocal_bonus-1,tri[j]); + nlocal_bonus--; + } + + // if atom I has bonus data and not deleting I, repoint I's bonus to J + + if (tri[i] >= 0 && i != j) bonus[tri[i]].ilocal = j; + tri[j] = tri[i]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j); +} + +/* ---------------------------------------------------------------------- + copy bonus data from I to J, effectively deleting the J entry + insure index pointers between per-atom and bonus data are updated +------------------------------------------------------------------------- */ + +void AtomVecTri::copy_bonus(int i, int j) +{ + memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); + tri[bonus[j].ilocal] = j; +} + +/* ---------------------------------------------------------------------- + clear ghost info in bonus data + called before ghosts are recommunicated in comm and irregular +------------------------------------------------------------------------- */ + +void AtomVecTri::clear_bonus() +{ + nghost_bonus = 0; +} + +/* ---------------------------------------------------------------------- + set equilateral tri of size in bonus data for particle I + oriented symmetrically in xy plane + this may create or delete entry in bonus data +------------------------------------------------------------------------- */ + +void AtomVecTri::set_equilateral(int i, double size) +{ + if (tri[i] < 0) { + if (size == 0.0) return; + if (nlocal_bonus == nmax_bonus) grow_bonus(); + double *quat = bonus[nlocal_bonus].quat; + double *c1 = bonus[nlocal_bonus].c1; + double *c2 = bonus[nlocal_bonus].c2; + double *c3 = bonus[nlocal_bonus].c3; + double *inertia = bonus[nlocal_bonus].inertia; + quat[0] = 1.0; + quat[1] = 0.0; + quat[2] = 0.0; + quat[3] = 0.0; + c1[0] = -size/2.0; + c1[1] = -sqrt(3.0)/2.0 * size / 3.0; + c1[2] = 0.0; + c2[0] = size/2.0; + c2[1] = -sqrt(3.0)/2.0 * size / 3.0; + c2[2] = 0.0; + c3[0] = 0.0; + c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0; + c3[2] = 0.0; + inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; + bonus[nlocal_bonus].ilocal = i; + tri[i] = nlocal_bonus++; + } else if (size == 0.0) { + copy_bonus(nlocal_bonus-1,tri[i]); + nlocal_bonus--; + tri[i] = -1; + } else { + double *c1 = bonus[tri[i]].c1; + double *c2 = bonus[tri[i]].c2; + double *c3 = bonus[tri[i]].c3; + double *inertia = bonus[tri[i]].inertia; + c1[0] = -size/2.0; + c1[1] = -sqrt(3.0)/2.0 * size / 3.0; + c1[2] = 0.0; + c2[0] = size/2.0; + c2[1] = -sqrt(3.0)/2.0 * size / 3.0; + c2[2] = 0.0; + c3[0] = 0.0; + c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0; + c3[2] = 0.0; + inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + double *quat; + + 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]; + if (tri[j] >= 0) { + quat = bonus[tri[j]].quat; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + } + } + } 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; + if (tri[j] >= 0) { + quat = bonus[tri[j]].quat; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + } + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::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; + double *quat; + + 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]; + if (tri[j] >= 0) { + quat = bonus[tri[j]].quat; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + } + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = angmom[j][0]; + buf[m++] = angmom[j][1]; + buf[m++] = angmom[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; + if (tri[j] >= 0) { + quat = bonus[tri[j]].quat; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + } + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = angmom[j][0]; + buf[m++] = angmom[j][1]; + buf[m++] = angmom[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; + if (tri[j] >= 0) { + quat = bonus[tri[j]].quat; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + } + 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]; + } + buf[m++] = angmom[j][0]; + buf[m++] = angmom[j][1]; + buf[m++] = angmom[j][2]; + } + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::pack_comm_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + double *quat; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + if (tri[j] >= 0) { + quat = bonus[tri[j]].quat; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTri::unpack_comm(int n, int first, double *buf) +{ + int i,m,last; + double *quat; + + 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++]; + if (tri[i] >= 0) { + quat = bonus[tri[i]].quat; + quat[0] = buf[m++]; + quat[1] = buf[m++]; + quat[2] = buf[m++]; + quat[3] = buf[m++]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTri::unpack_comm_vel(int n, int first, double *buf) +{ + int i,m,last; + double *quat; + + 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++]; + if (tri[i] >= 0) { + quat = bonus[tri[i]].quat; + quat[0] = buf[m++]; + quat[1] = buf[m++]; + quat[2] = buf[m++]; + quat[3] = buf[m++]; + } + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + angmom[i][0] = buf[m++]; + angmom[i][1] = buf[m++]; + angmom[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::unpack_comm_hybrid(int n, int first, double *buf) +{ + int i,m,last; + double *quat; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + if (tri[i] >= 0) { + quat = bonus[tri[i]].quat; + quat[0] = buf[m++]; + quat[1] = buf[m++]; + quat[2] = buf[m++]; + quat[3] = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::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]; + buf[m++] = torque[i][0]; + buf[m++] = torque[i][1]; + buf[m++] = torque[i][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::pack_reverse_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = torque[i][0]; + buf[m++] = torque[i][1]; + buf[m++] = torque[i][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTri::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++]; + torque[j][0] += buf[m++]; + torque[j][1] += buf[m++]; + torque[j][2] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::unpack_reverse_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + torque[j][0] += buf[m++]; + torque[j][1] += buf[m++]; + torque[j][2] += buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + double *quat,*c1,*c2,*c3,*inertia; + + 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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = molecule[j]; + if (tri[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + quat = bonus[tri[j]].quat; + c1 = bonus[tri[j]].c1; + c2 = bonus[tri[j]].c2; + c3 = bonus[tri[j]].c3; + inertia = bonus[tri[j]].inertia; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + buf[m++] = c1[0]; + buf[m++] = c1[1]; + buf[m++] = c1[2]; + buf[m++] = c2[0]; + buf[m++] = c2[1]; + buf[m++] = c2[2]; + buf[m++] = c3[0]; + buf[m++] = c3[1]; + buf[m++] = c3[2]; + buf[m++] = inertia[0]; + buf[m++] = inertia[1]; + buf[m++] = inertia[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]; + } + 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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = molecule[j]; + if (tri[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + quat = bonus[tri[j]].quat; + c1 = bonus[tri[j]].c1; + c2 = bonus[tri[j]].c2; + c3 = bonus[tri[j]].c3; + inertia = bonus[tri[j]].inertia; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + buf[m++] = c1[0]; + buf[m++] = c1[1]; + buf[m++] = c1[2]; + buf[m++] = c2[0]; + buf[m++] = c2[1]; + buf[m++] = c2[2]; + buf[m++] = c3[0]; + buf[m++] = c3[1]; + buf[m++] = c3[2]; + buf[m++] = inertia[0]; + buf[m++] = inertia[1]; + buf[m++] = inertia[2]; + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::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; + double *quat,*c1,*c2,*c3,*inertia; + + 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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = molecule[j]; + if (tri[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + quat = bonus[tri[j]].quat; + c1 = bonus[tri[j]].c1; + c2 = bonus[tri[j]].c2; + c3 = bonus[tri[j]].c3; + inertia = bonus[tri[j]].inertia; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + buf[m++] = c1[0]; + buf[m++] = c1[1]; + buf[m++] = c1[2]; + buf[m++] = c2[0]; + buf[m++] = c2[1]; + buf[m++] = c2[2]; + buf[m++] = c3[0]; + buf[m++] = c3[1]; + buf[m++] = c3[2]; + buf[m++] = inertia[0]; + buf[m++] = inertia[1]; + buf[m++] = inertia[2]; + } + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = angmom[j][0]; + buf[m++] = angmom[j][1]; + buf[m++] = angmom[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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = molecule[j]; + if (tri[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + quat = bonus[tri[j]].quat; + c1 = bonus[tri[j]].c1; + c2 = bonus[tri[j]].c2; + c3 = bonus[tri[j]].c3; + inertia = bonus[tri[j]].inertia; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + buf[m++] = c1[0]; + buf[m++] = c1[1]; + buf[m++] = c1[2]; + buf[m++] = c2[0]; + buf[m++] = c2[1]; + buf[m++] = c2[2]; + buf[m++] = c3[0]; + buf[m++] = c3[1]; + buf[m++] = c3[2]; + buf[m++] = inertia[0]; + buf[m++] = inertia[1]; + buf[m++] = inertia[2]; + } + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = angmom[j][0]; + buf[m++] = angmom[j][1]; + buf[m++] = angmom[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++] = tag[j]; + buf[m++] = type[j]; + buf[m++] = mask[j]; + buf[m++] = molecule[j]; + if (tri[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + quat = bonus[tri[j]].quat; + c1 = bonus[tri[j]].c1; + c2 = bonus[tri[j]].c2; + c3 = bonus[tri[j]].c3; + inertia = bonus[tri[j]].inertia; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + buf[m++] = c1[0]; + buf[m++] = c1[1]; + buf[m++] = c1[2]; + buf[m++] = c2[0]; + buf[m++] = c2[1]; + buf[m++] = c2[2]; + buf[m++] = c3[0]; + buf[m++] = c3[1]; + buf[m++] = c3[2]; + buf[m++] = inertia[0]; + buf[m++] = inertia[1]; + buf[m++] = inertia[2]; + } + 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]; + } + buf[m++] = angmom[j][0]; + buf[m++] = angmom[j][1]; + buf[m++] = angmom[j][2]; + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::pack_border_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + double *quat,*c1,*c2,*c3,*inertia; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = molecule[j]; + if (tri[j] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + quat = bonus[tri[j]].quat; + c1 = bonus[tri[j]].c1; + c2 = bonus[tri[j]].c2; + c3 = bonus[tri[j]].c3; + inertia = bonus[tri[j]].inertia; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + buf[m++] = c1[0]; + buf[m++] = c1[1]; + buf[m++] = c1[2]; + buf[m++] = c2[0]; + buf[m++] = c2[1]; + buf[m++] = c2[2]; + buf[m++] = c3[0]; + buf[m++] = c3[1]; + buf[m++] = c3[2]; + buf[m++] = inertia[0]; + buf[m++] = inertia[1]; + buf[m++] = inertia[2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTri::unpack_border(int n, int first, double *buf) +{ + int i,j,m,last; + double *quat,*c1,*c2,*c3,*inertia; + + 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] = static_cast (buf[m++]); + type[i] = static_cast (buf[m++]); + mask[i] = static_cast (buf[m++]); + molecule[i] = static_cast (buf[m++]); + tri[i] = static_cast (buf[m++]); + if (tri[i] == 0) tri[i] = -1; + else { + j = nlocal_bonus + nghost_bonus; + if (j == nmax_bonus) grow_bonus(); + quat = bonus[j].quat; + c1 = bonus[j].c1; + c2 = bonus[j].c2; + c3 = bonus[j].c3; + inertia = bonus[j].inertia; + quat[0] = buf[m++]; + quat[1] = buf[m++]; + quat[2] = buf[m++]; + quat[3] = buf[m++]; + c1[0] = buf[m++]; + c1[1] = buf[m++]; + c1[2] = buf[m++]; + c2[0] = buf[m++]; + c2[1] = buf[m++]; + c2[2] = buf[m++]; + c3[0] = buf[m++]; + c3[1] = buf[m++]; + c3[2] = buf[m++]; + inertia[0] = buf[m++]; + inertia[1] = buf[m++]; + inertia[2] = buf[m++]; + bonus[j].ilocal = i; + tri[i] = j; + nghost_bonus++; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTri::unpack_border_vel(int n, int first, double *buf) +{ + int i,j,m,last; + double *quat,*c1,*c2,*c3,*inertia; + + 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] = static_cast (buf[m++]); + type[i] = static_cast (buf[m++]); + mask[i] = static_cast (buf[m++]); + molecule[i] = static_cast (buf[m++]); + tri[i] = static_cast (buf[m++]); + if (tri[i] == 0) tri[i] = -1; + else { + j = nlocal_bonus + nghost_bonus; + if (j == nmax_bonus) grow_bonus(); + quat = bonus[j].quat; + c1 = bonus[j].c1; + c2 = bonus[j].c2; + c3 = bonus[j].c3; + inertia = bonus[j].inertia; + quat[0] = buf[m++]; + quat[1] = buf[m++]; + quat[2] = buf[m++]; + quat[3] = buf[m++]; + c1[0] = buf[m++]; + c1[1] = buf[m++]; + c1[2] = buf[m++]; + c2[0] = buf[m++]; + c2[1] = buf[m++]; + c2[2] = buf[m++]; + c3[0] = buf[m++]; + c3[1] = buf[m++]; + c3[2] = buf[m++]; + inertia[0] = buf[m++]; + inertia[1] = buf[m++]; + inertia[2] = buf[m++]; + bonus[j].ilocal = i; + tri[i] = j; + nghost_bonus++; + } + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + angmom[i][0] = buf[m++]; + angmom[i][1] = buf[m++]; + angmom[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTri::unpack_border_hybrid(int n, int first, double *buf) +{ + int i,j,m,last; + double *quat,*c1,*c2,*c3,*inertia; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + molecule[i] = static_cast (buf[m++]); + tri[i] = static_cast (buf[m++]); + if (tri[i] == 0) tri[i] = -1; + else { + j = nlocal_bonus + nghost_bonus; + if (j == nmax_bonus) grow_bonus(); + quat = bonus[j].quat; + c1 = bonus[j].c1; + c2 = bonus[j].c2; + c3 = bonus[j].c3; + inertia = bonus[j].inertia; + quat[0] = buf[m++]; + quat[1] = buf[m++]; + quat[2] = buf[m++]; + quat[3] = buf[m++]; + c1[0] = buf[m++]; + c1[1] = buf[m++]; + c1[2] = buf[m++]; + c2[0] = buf[m++]; + c2[1] = buf[m++]; + c2[2] = buf[m++]; + c3[0] = buf[m++]; + c3[1] = buf[m++]; + c3[2] = buf[m++]; + inertia[0] = buf[m++]; + inertia[1] = buf[m++]; + inertia[2] = buf[m++]; + bonus[j].ilocal = i; + tri[i] = j; + nghost_bonus++; + } + } + return m; +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them +------------------------------------------------------------------------- */ + +int AtomVecTri::pack_exchange(int i, double *buf) +{ + 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++] = tag[i]; + buf[m++] = type[i]; + buf[m++] = mask[i]; + buf[m++] = image[i]; + + buf[m++] = molecule[i]; + buf[m++] = rmass[i]; + buf[m++] = angmom[i][0]; + buf[m++] = angmom[i][1]; + buf[m++] = angmom[i][2]; + + if (tri[i] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + int j = tri[i]; + double *quat = bonus[j].quat; + double *c1 = bonus[j].c1; + double *c2 = bonus[j].c2; + double *c3 = bonus[j].c3; + double *inertia = bonus[j].inertia; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + buf[m++] = c1[0]; + buf[m++] = c1[1]; + buf[m++] = c1[2]; + buf[m++] = c2[0]; + buf[m++] = c2[1]; + buf[m++] = c2[2]; + buf[m++] = c3[0]; + buf[m++] = c3[1]; + buf[m++] = c3[2]; + buf[m++] = inertia[0]; + buf[m++] = inertia[1]; + buf[m++] = inertia[2]; + } + + 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 AtomVecTri::unpack_exchange(double *buf) +{ + 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] = static_cast (buf[m++]); + type[nlocal] = static_cast (buf[m++]); + mask[nlocal] = static_cast (buf[m++]); + image[nlocal] = static_cast (buf[m++]); + + molecule[nlocal] = static_cast (buf[m++]); + rmass[nlocal] = buf[m++]; + angmom[nlocal][0] = buf[m++]; + angmom[nlocal][1] = buf[m++]; + angmom[nlocal][2] = buf[m++]; + + tri[nlocal] = static_cast (buf[m++]); + if (tri[nlocal] == 0) tri[nlocal] = -1; + else { + if (nlocal_bonus == nmax_bonus) grow_bonus(); + double *quat = bonus[nlocal_bonus].quat; + double *c1 = bonus[nlocal_bonus].c1; + double *c2 = bonus[nlocal_bonus].c2; + double *c3 = bonus[nlocal_bonus].c3; + double *inertia = bonus[nlocal_bonus].inertia; + quat[0] = buf[m++]; + quat[1] = buf[m++]; + quat[2] = buf[m++]; + quat[3] = buf[m++]; + c1[0] = buf[m++]; + c1[1] = buf[m++]; + c1[2] = buf[m++]; + c2[0] = buf[m++]; + c2[1] = buf[m++]; + c2[2] = buf[m++]; + c3[0] = buf[m++]; + c3[1] = buf[m++]; + c3[2] = buf[m++]; + inertia[0] = buf[m++]; + inertia[1] = buf[m++]; + inertia[2] = buf[m++]; + bonus[nlocal_bonus].ilocal = nlocal; + tri[nlocal] = nlocal_bonus++; + } + + 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 AtomVecTri::size_restart() +{ + int i; + + int n = 0; + int nlocal = atom->nlocal; + for (i = 0; i < nlocal; i++) + if (tri[i] >= 0) n += 33; + else n += 17; + + 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 AtomVecTri::pack_restart(int i, double *buf) +{ + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = tag[i]; + buf[m++] = type[i]; + buf[m++] = mask[i]; + buf[m++] = image[i]; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + + buf[m++] = molecule[i]; + buf[m++] = rmass[i]; + buf[m++] = angmom[i][0]; + buf[m++] = angmom[i][1]; + buf[m++] = angmom[i][2]; + + if (tri[i] < 0) buf[m++] = 0; + else { + buf[m++] = 1; + int j = tri[i]; + double *quat = bonus[j].quat; + double *c1 = bonus[j].c1; + double *c2 = bonus[j].c2; + double *c3 = bonus[j].c3; + double *inertia = bonus[j].inertia; + buf[m++] = quat[0]; + buf[m++] = quat[1]; + buf[m++] = quat[2]; + buf[m++] = quat[3]; + buf[m++] = c1[0]; + buf[m++] = c1[1]; + buf[m++] = c1[2]; + buf[m++] = c2[0]; + buf[m++] = c2[1]; + buf[m++] = c2[2]; + buf[m++] = c3[0]; + buf[m++] = c3[1]; + buf[m++] = c3[2]; + buf[m++] = inertia[0]; + buf[m++] = inertia[1]; + buf[m++] = inertia[2]; + } + + 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 AtomVecTri::unpack_restart(double *buf) +{ + 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] = static_cast (buf[m++]); + type[nlocal] = static_cast (buf[m++]); + mask[nlocal] = static_cast (buf[m++]); + image[nlocal] = static_cast (buf[m++]); + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + + molecule[nlocal] = static_cast (buf[m++]); + rmass[nlocal] = buf[m++]; + angmom[nlocal][0] = buf[m++]; + angmom[nlocal][1] = buf[m++]; + angmom[nlocal][2] = buf[m++]; + + tri[nlocal] = static_cast (buf[m++]); + if (tri[nlocal] == 0) tri[nlocal] = -1; + else { + if (nlocal_bonus == nmax_bonus) grow_bonus(); + double *quat = bonus[nlocal_bonus].quat; + double *c1 = bonus[nlocal_bonus].c1; + double *c2 = bonus[nlocal_bonus].c2; + double *c3 = bonus[nlocal_bonus].c3; + double *inertia = bonus[nlocal_bonus].inertia; + quat[0] = buf[m++]; + quat[1] = buf[m++]; + quat[2] = buf[m++]; + quat[3] = buf[m++]; + c1[0] = buf[m++]; + c1[1] = buf[m++]; + c1[2] = buf[m++]; + c2[0] = buf[m++]; + c2[1] = buf[m++]; + c2[2] = buf[m++]; + c3[0] = buf[m++]; + c3[1] = buf[m++]; + c3[2] = buf[m++]; + inertia[0] = buf[m++]; + inertia[1] = buf[m++]; + inertia[2] = buf[m++]; + bonus[nlocal_bonus].ilocal = nlocal; + tri[nlocal] = nlocal_bonus++; + } + + 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 AtomVecTri::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] = (512 << 20) | (512 << 10) | 512; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + molecule[nlocal] = 0; + rmass[nlocal] = 1.0; + angmom[nlocal][0] = 0.0; + angmom[nlocal][1] = 0.0; + angmom[nlocal][2] = 0.0; + tri[nlocal] = -1; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one tri from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecTri::data_atom(double *coord, int imagetmp, char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = atoi(values[0]); + if (tag[nlocal] <= 0) + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); + + molecule[nlocal] = atoi(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"); + + tri[nlocal] = atoi(values[3]); + if (tri[nlocal] == 0) tri[nlocal] = -1; + else if (tri[nlocal] == 1) tri[nlocal] = 0; + else error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + rmass[nlocal] = atof(values[4]); + if (rmass[nlocal] <= 0.0) + error->one(FLERR,"Invalid density in Atoms section of data file"); + + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + + image[nlocal] = imagetmp; + + mask[nlocal] = 1; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + angmom[nlocal][0] = 0.0; + angmom[nlocal][1] = 0.0; + angmom[nlocal][2] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one tri in Atoms section of data file + initialize other atom quantities for this sub-style +------------------------------------------------------------------------- */ + +int AtomVecTri::data_atom_hybrid(int nlocal, char **values) +{ + molecule[nlocal] = atoi(values[0]); + + tri[nlocal] = atoi(values[1]); + if (tri[nlocal] == 0) tri[nlocal] = -1; + else if (tri[nlocal] == 1) tri[nlocal] = 0; + else error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + rmass[nlocal] = atof(values[2]); + if (rmass[nlocal] <= 0.0) + error->one(FLERR,"Invalid density in Atoms section of data file"); + + return 3; +} + +/* ---------------------------------------------------------------------- + unpack one tri from Tris section of data file +------------------------------------------------------------------------- */ + +void AtomVecTri::data_atom_bonus(int m, char **values) +{ + if (tri[m]) error->one(FLERR,"Assigning tri parameters to non-tri atom"); + + if (nlocal_bonus == nmax_bonus) grow_bonus(); + + double c1[3],c2[3],c3[3]; + c1[0] = atof(values[0]); + c1[1] = atof(values[1]); + c1[2] = atof(values[2]); + c2[0] = atof(values[3]); + c2[1] = atof(values[4]); + c2[2] = atof(values[5]); + c3[0] = atof(values[6]); + c3[1] = atof(values[7]); + c3[2] = atof(values[8]); + + // check for duplicate points + + if (c1[0] == c2[0] && c1[1] == c2[1] && c1[2] == c2[2]) + error->one(FLERR,"Invalid shape in Triangles section of data file"); + if (c1[0] == c3[0] && c1[1] == c3[1] && c1[2] == c3[2]) + error->one(FLERR,"Invalid shape in Triangles section of data file"); + if (c2[0] == c3[0] && c2[1] == c3[1] && c2[2] == c3[2]) + error->one(FLERR,"Invalid shape in Triangles section of data file"); + + // size = length of one edge + + double c2mc1[2],c3mc1[3]; + MathExtra::sub3(c2,c1,c2mc1); + MathExtra::sub3(c3,c1,c3mc1); + double size = MAX(MathExtra::len3(c2mc1),MathExtra::len3(c3mc1)); + + // centroid = 1/3 of sum of vertices + + double centroid[3]; + centroid[0] = (c1[0]+c2[0]+c3[0]) / 3.0; + centroid[1] = (c1[1]+c2[1]+c3[1]) / 3.0; + centroid[2] = (c1[2]+c2[2]+c3[2]) / 3.0; + + double dx = centroid[0] - x[m][0]; + double dy = centroid[1] - x[m][1]; + double dz = centroid[2] - x[m][2]; + double delta = sqrt(dx*dx + dy*dy + dz*dz); + + if (delta/size > EPSILON) + error->one(FLERR,"Inconsistent triangle in data file"); + + x[m][0] = centroid[0]; + x[m][1] = centroid[1]; + x[m][2] = centroid[2]; + + // reset tri mass + // previously stored density in rmass + // tri area = 0.5 len(U x V), where U,V are edge vectors from one vertex + + double norm[3]; + MathExtra::cross3(c2mc1,c3mc1,norm); + double area = 0.5 * MathExtra::len3(norm); + rmass[m] *= area; + + // inertia = inertia tensor of triangle as 6-vector in Voigt notation + + double inertia[6]; + MathExtra::inertia_triangle(c1,c2,c3,rmass[m],inertia); + + // diagonalize inertia tensor via Jacobi rotations + // bonus[].inertia = 3 eigenvalues = principal moments of inertia + // evectors and exzy_space = 3 evectors = principal axes of triangle + + double tensor[3][3],evectors[3][3]; + tensor[0][0] = inertia[0]; + tensor[1][1] = inertia[1]; + tensor[2][2] = inertia[2]; + tensor[1][2] = tensor[2][1] = inertia[3]; + tensor[0][2] = tensor[2][0] = inertia[4]; + tensor[0][1] = tensor[1][0] = inertia[5]; + + int ierror = MathExtra::jacobi(tensor,bonus[nlocal_bonus].inertia,evectors); + if (ierror) error->one(FLERR,"Insufficient Jacobi rotations for triangle"); + + double ex_space[3],ey_space[3],ez_space[3]; + ex_space[0] = evectors[0][0]; + ex_space[1] = evectors[1][0]; + ex_space[2] = evectors[2][0]; + ey_space[0] = evectors[0][1]; + ey_space[1] = evectors[1][1]; + ey_space[2] = evectors[2][1]; + ez_space[0] = evectors[0][2]; + ez_space[1] = evectors[1][2]; + ez_space[2] = evectors[2][2]; + + // enforce 3 orthogonal vectors as a right-handed coordinate system + // flip 3rd vector if needed + + MathExtra::cross3(ex_space,ey_space,norm); + if (MathExtra::dot3(norm,ez_space) < 0.0) MathExtra::negate3(ez_space); + + // create initial quaternion + + MathExtra::exyz_to_q(ex_space,ey_space,ez_space,bonus[nlocal_bonus].quat); + + // bonus c1,c2,c3 = displacement of c1,c2,c3 from centroid + // in basis of principal axes + + double disp[3]; + MathExtra::sub3(c1,centroid,disp); + MathExtra::transpose_matvec(ex_space,ey_space,ez_space, + disp,bonus[nlocal_bonus].c1); + MathExtra::sub3(c2,centroid,disp); + MathExtra::transpose_matvec(ex_space,ey_space,ez_space, + disp,bonus[nlocal_bonus].c2); + MathExtra::sub3(c3,centroid,disp); + MathExtra::transpose_matvec(ex_space,ey_space,ez_space, + disp,bonus[nlocal_bonus].c3); + + bonus[nlocal_bonus].ilocal = m; + tri[m] = nlocal_bonus++; +} + +/* ---------------------------------------------------------------------- + unpack one tri from Velocities section of data file +------------------------------------------------------------------------- */ + +void AtomVecTri::data_vel(int m, char **values) +{ + v[m][0] = atof(values[0]); + v[m][1] = atof(values[1]); + v[m][2] = atof(values[2]); + angmom[m][0] = atof(values[3]); + angmom[m][1] = atof(values[4]); + angmom[m][2] = atof(values[5]); +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one tri in Velocities section of data file +------------------------------------------------------------------------- */ + +int AtomVecTri::data_vel_hybrid(int m, char **values) +{ + angmom[m][0] = atof(values[0]); + angmom[m][1] = atof(values[1]); + angmom[m][2] = atof(values[2]); + return 3; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecTri::memory_usage() +{ + bigint bytes = 0; + + if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); + if (atom->memcheck("type")) bytes += memory->usage(type,nmax); + if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); + if (atom->memcheck("image")) bytes += memory->usage(image,nmax); + if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); + if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); + + if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); + if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); + if (atom->memcheck("angmom")) bytes += memory->usage(angmom,nmax,3); + if (atom->memcheck("torque")) bytes += memory->usage(torque,nmax*comm->nthreads,3); + if (atom->memcheck("tri")) bytes += memory->usage(tri,nmax); + + bytes += nmax_bonus*sizeof(Bonus); + + return bytes; +} diff --git a/src/atom_vec_tri.h b/src/atom_vec_tri.h new file mode 100644 index 0000000000..33f3e9cd6e --- /dev/null +++ b/src/atom_vec_tri.h @@ -0,0 +1,97 @@ +/* ---------------------------------------------------------------------- + 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(tri,AtomVecTri) + +#else + +#ifndef LMP_ATOM_VEC_TRI_H +#define LMP_ATOM_VEC_TRI_H + +#include "atom_vec.h" + +namespace LAMMPS_NS { + +class AtomVecTri : public AtomVec { + public: + struct Bonus { + double quat[4]; + double c1[3],c2[3],c3[3]; + double inertia[3]; + int ilocal; + }; + struct Bonus *bonus; + + AtomVecTri(class LAMMPS *, int, char **); + ~AtomVecTri(); + void init(); + 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 *); + int pack_reverse_hybrid(int, int, double *); + void unpack_reverse(int, int *, double *); + int unpack_reverse_hybrid(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 *, int, char **); + int data_atom_hybrid(int, char **); + void data_vel(int, char **); + int data_vel_hybrid(int, char **); + bigint memory_usage(); + + // manipulate Bonus data structure for extra atom info + + void clear_bonus(); + void data_atom_bonus(int, char **); + + // unique to AtomVecTri + + void set_equilateral(int, double); + + private: + int *tag,*type,*mask,*image; + double **x,**v,**f; + int *molecule; + double *rmass; + double **angmom,**torque; + int *tri; + + int nlocal_bonus,nghost_bonus,nmax_bonus; + + void grow_bonus(); + void copy_bonus(int, int); +}; + +} + +#endif +#endif diff --git a/src/bond.cpp b/src/bond.cpp index b4365acf36..aa168ff45c 100644 --- a/src/bond.cpp +++ b/src/bond.cpp @@ -14,6 +14,7 @@ #include "string.h" #include "bond.h" #include "atom.h" +#include "comm.h" #include "force.h" #include "memory.h" #include "error.h" @@ -50,9 +51,9 @@ Bond::~Bond() void Bond::init() { - if (!allocated) error->all("Bond coeffs are not set"); + if (!allocated) error->all(FLERR,"Bond coeffs are not set"); for (int i = 1; i <= atom->nbondtypes; i++) - if (setflag[i] == 0) error->all("All bond coeffs are not set"); + if (setflag[i] == 0) error->all(FLERR,"All bond coeffs are not set"); init_style(); } @@ -80,12 +81,12 @@ void Bond::ev_setup(int eflag, int vflag) if (eflag_atom && atom->nmax > maxeatom) { maxeatom = atom->nmax; memory->destroy(eatom); - memory->create(eatom,maxeatom,"bond:eatom"); + memory->create(eatom,comm->nthreads*maxeatom,"bond:eatom"); } if (vflag_atom && atom->nmax > maxvatom) { maxvatom = atom->nmax; memory->destroy(vatom); - memory->create(vatom,maxvatom,6,"bond:vatom"); + memory->create(vatom,comm->nthreads*maxvatom,6,"bond:vatom"); } // zero accumulators @@ -198,7 +199,7 @@ void Bond::ev_tally(int i, int j, int nlocal, int newton_bond, double Bond::memory_usage() { - double bytes = maxeatom * sizeof(double); - bytes += maxvatom*6 * sizeof(double); + double bytes = comm->nthreads*maxeatom * sizeof(double); + bytes += comm->nthreads*maxvatom*6 * sizeof(double); return bytes; } diff --git a/src/bond.h b/src/bond.h index 551d84b51f..29f9862fb7 100644 --- a/src/bond.h +++ b/src/bond.h @@ -20,6 +20,7 @@ namespace LAMMPS_NS { class Bond : protected Pointers { + friend class ThrOMP; public: int allocated; int *setflag; diff --git a/src/bond_hybrid.cpp b/src/bond_hybrid.cpp index c06aa5647b..c85c15b02a 100644 --- a/src/bond_hybrid.cpp +++ b/src/bond_hybrid.cpp @@ -161,7 +161,7 @@ void BondHybrid::settings(int narg, char **arg) { int i,m,istyle; - if (narg < 1) error->all("Illegal bond_style command"); + if (narg < 1) error->all(FLERR,"Illegal bond_style command"); // delete old lists, since cannot just change settings @@ -206,17 +206,19 @@ void BondHybrid::settings(int narg, char **arg) // one exception is 1st arg of style "table", which is non-numeric // need a better way to skip these exceptions + int dummy; nstyles = 0; i = 0; + while (i < narg) { for (m = 0; m < nstyles; m++) if (strcmp(arg[i],keywords[m]) == 0) - error->all("Bond style hybrid cannot use same pair style twice"); + error->all(FLERR,"Bond style hybrid cannot use same pair style twice"); if (strcmp(arg[i],"hybrid") == 0) - error->all("Bond style hybrid cannot have hybrid as an argument"); + error->all(FLERR,"Bond style hybrid cannot have hybrid as an argument"); if (strcmp(arg[i],"none") == 0) - error->all("Bond style hybrid cannot have none as an argument"); - styles[nstyles] = force->new_bond(arg[i]); + error->all(FLERR,"Bond style hybrid cannot have none as an argument"); + styles[nstyles] = force->new_bond(arg[i],lmp->suffix,dummy); keywords[nstyles] = new char[strlen(arg[i])+1]; strcpy(keywords[nstyles],arg[i]); istyle = i; @@ -249,7 +251,7 @@ void BondHybrid::coeff(int narg, char **arg) int none = 0; if (m == nstyles) { if (strcmp(arg[1],"none") == 0) none = 1; - else error->all("Bond coeff for hybrid has invalid style"); + else error->all(FLERR,"Bond coeff for hybrid has invalid style"); } // move 1st arg to 2nd arg @@ -285,7 +287,8 @@ void BondHybrid::init_style() double BondHybrid::equilibrium_distance(int i) { - if (map[i] < 0) error->one("Invoked bond equil distance on bond style none"); + if (map[i] < 0) + error->one(FLERR,"Invoked bond equil distance on bond style none"); return styles[map[i]]->equilibrium_distance(i); } @@ -319,14 +322,14 @@ void BondHybrid::read_restart(FILE *fp) allocate(); - int n; + int n,dummy; for (int m = 0; m < nstyles; m++) { if (me == 0) fread(&n,sizeof(int),1,fp); MPI_Bcast(&n,1,MPI_INT,0,world); keywords[m] = new char[n]; if (me == 0) fread(keywords[m],sizeof(char),n,fp); MPI_Bcast(keywords[m],n,MPI_CHAR,0,world); - styles[m] = force->new_bond(keywords[m]); + styles[m] = force->new_bond(keywords[m],lmp->suffix,dummy); } } @@ -334,7 +337,7 @@ void BondHybrid::read_restart(FILE *fp) double BondHybrid::single(int type, double rsq, int i, int j) { - if (map[type] < 0) error->one("Invoked bond single on bond style none"); + if (map[type] < 0) error->one(FLERR,"Invoked bond single on bond style none"); return styles[map[type]]->single(type,rsq,i,j); } diff --git a/src/change_box.cpp b/src/change_box.cpp index 2bb5ad45fe..34f2f67b0b 100644 --- a/src/change_box.cpp +++ b/src/change_box.cpp @@ -32,27 +32,27 @@ ChangeBox::ChangeBox(LAMMPS *lmp) : Pointers(lmp) {} void ChangeBox::command(int narg, char **arg) { if (domain->box_exist == 0) - error->all("Change_box command before simulation box is defined"); - if (narg != 1) error->all("Illegal change_box command"); + error->all(FLERR,"Change_box command before simulation box is defined"); + if (narg != 1) error->all(FLERR,"Illegal change_box command"); int style; if (strcmp(arg[0],"ortho") == 0) style = ORTHO; else if (strcmp(arg[0],"triclinic") == 0) style = TRICLINIC; - else error->all("Illegal change_box command"); + else error->all(FLERR,"Illegal change_box command"); if (style == ORTHO && domain->triclinic == 0) - error->all("Change_box operation is invalid"); + error->all(FLERR,"Change_box operation is invalid"); if (style == TRICLINIC && domain->triclinic == 1) - error->all("Change_box operation is invalid"); + error->all(FLERR,"Change_box operation is invalid"); if (style == ORTHO && (domain->xy != 0.0 || domain->yz != 0.0 || domain->xz != 0.0)) - error->all("Cannot change box to orthogonal when tilt is non-zero"); + error->all(FLERR,"Cannot change box to orthogonal when tilt is non-zero"); if (output->ndump) - error->all("Cannot change box with dumps defined"); + error->all(FLERR,"Cannot change box with dumps defined"); for (int i = 0; i < modify->nfix; i++) if (modify->fix[i]->no_change_box) - error->all("Cannot change box with certain fixes defined"); + error->all(FLERR,"Cannot change box with certain fixes defined"); if (style == ORTHO) domain->triclinic = 0; else domain->triclinic = 1; diff --git a/src/comm.cpp b/src/comm.cpp index 2d64ec3bf5..e28baab37f 100644 --- a/src/comm.cpp +++ b/src/comm.cpp @@ -37,7 +37,7 @@ #include "error.h" #include "memory.h" -#ifdef LMP_OPENMP +#ifdef _OPENMP #include "omp.h" #endif @@ -46,9 +46,6 @@ using namespace LAMMPS_NS; #define BUFFACTOR 1.5 #define BUFMIN 1000 #define BUFEXTRA 1000 - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) #define BIG 1.0e20 enum{SINGLE,MULTI}; @@ -77,7 +74,7 @@ Comm::Comm(LAMMPS *lmp) : Pointers(lmp) // need to be in a parallel area for this operation nthreads = 1; -#ifdef LMP_OPENMP +#ifdef _OPENMP #pragma omp parallel default(shared) { #pragma omp master @@ -138,9 +135,9 @@ void Comm::set_procs() procs2box(); if (procgrid[0]*procgrid[1]*procgrid[2] != nprocs) - error->all("Bad grid of processors"); + error->all(FLERR,"Bad grid of processors"); if (domain->dimension == 2 && procgrid[2] != 1) - error->all("Processor count in z must be 1 for 2d simulation"); + error->all(FLERR,"Processor count in z must be 1 for 2d simulation"); if (grid2proc) memory->destroy(grid2proc); memory->create(grid2proc,procgrid[0],procgrid[1],procgrid[2], @@ -1341,36 +1338,36 @@ void Comm::free_multi() void Comm::set(int narg, char **arg) { - if (narg < 1) error->all("Illegal communicate command"); + if (narg < 1) error->all(FLERR,"Illegal communicate command"); if (strcmp(arg[0],"single") == 0) style = SINGLE; else if (strcmp(arg[0],"multi") == 0) style = MULTI; - else error->all("Illegal communicate command"); + else error->all(FLERR,"Illegal communicate command"); int iarg = 1; while (iarg < narg) { if (strcmp(arg[iarg],"group") == 0) { - if (iarg+2 > narg) error->all("Illegal communicate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal communicate command"); bordergroup = group->find(arg[iarg+1]); if (bordergroup < 0) - error->all("Invalid group in communicate command"); + error->all(FLERR,"Invalid group in communicate command"); if (bordergroup && (atom->firstgroupname == NULL || strcmp(arg[iarg+1],atom->firstgroupname) != 0)) - error->all("Communicate group != atom_modify first group"); + error->all(FLERR,"Communicate group != atom_modify first group"); iarg += 2; } else if (strcmp(arg[iarg],"cutoff") == 0) { - if (iarg+2 > narg) error->all("Illegal communicate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal communicate command"); cutghostuser = atof(arg[iarg+1]); if (cutghostuser < 0.0) - error->all("Invalid cutoff in communicate command"); + error->all(FLERR,"Invalid cutoff in communicate command"); iarg += 2; } else if (strcmp(arg[iarg],"vel") == 0) { - if (iarg+2 > narg) error->all("Illegal communicate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal communicate command"); if (strcmp(arg[iarg+1],"yes") == 0) ghost_velocity = 1; else if (strcmp(arg[iarg+1],"no") == 0) ghost_velocity = 0; - else error->all("Illegal communicate command"); + else error->all(FLERR,"Illegal communicate command"); iarg += 2; - } else error->all("Illegal communicate command"); + } else error->all(FLERR,"Illegal communicate command"); } } diff --git a/src/compute.cpp b/src/compute.cpp index 230c15919c..5b8dc93f2a 100644 --- a/src/compute.cpp +++ b/src/compute.cpp @@ -29,14 +29,11 @@ using namespace LAMMPS_NS; #define DELTA 4 #define BIG 2000000000 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ Compute::Compute(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) { - if (narg < 3) error->all("Illegal compute command"); + if (narg < 3) error->all(FLERR,"Illegal compute command"); // compute ID, group, and style // ID must be all alphanumeric chars or underscores @@ -47,10 +44,10 @@ Compute::Compute(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) for (int i = 0; i < n-1; i++) if (!isalnum(id[i]) && id[i] != '_') - error->all("Compute ID must be alphanumeric or underscore characters"); + error->all(FLERR,"Compute ID must be alphanumeric or underscore characters"); igroup = group->find(arg[1]); - if (igroup == -1) error->all("Could not find compute group ID"); + if (igroup == -1) error->all(FLERR,"Could not find compute group ID"); groupbit = group->bitmask[igroup]; n = strlen(arg[2]) + 1; @@ -103,27 +100,27 @@ Compute::~Compute() void Compute::modify_params(int narg, char **arg) { - if (narg == 0) error->all("Illegal compute_modify command"); + if (narg == 0) error->all(FLERR,"Illegal compute_modify command"); int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"extra") == 0) { - if (iarg+2 > narg) error->all("Illegal compute_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal compute_modify command"); extra_dof = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"dynamic") == 0) { - if (iarg+2 > narg) error->all("Illegal compute_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal compute_modify command"); if (strcmp(arg[iarg+1],"no") == 0) dynamic = 0; else if (strcmp(arg[iarg+1],"yes") == 0) dynamic = 1; - else error->all("Illegal compute_modify command"); + else error->all(FLERR,"Illegal compute_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"thermo") == 0) { - if (iarg+2 > narg) error->all("Illegal compute_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal compute_modify command"); if (strcmp(arg[iarg+1],"no") == 0) thermoflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) thermoflag = 1; - else error->all("Illegal compute_modify command"); + else error->all(FLERR,"Illegal compute_modify command"); iarg += 2; - } else error->all("Illegal compute_modify command"); + } else error->all(FLERR,"Illegal compute_modify command"); } } @@ -140,7 +137,7 @@ void Compute::reset_extra_dof() void Compute::reset_extra_compute_fix(char *) { - error->all("Compute does not allow an extra compute or fix to be reset"); + error->all(FLERR,"Compute does not allow an extra compute or fix to be reset"); } /* ---------------------------------------------------------------------- @@ -238,7 +235,7 @@ int Compute::molecules_in_group(int &idlo, int &idhi) int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); if (flagall && comm->me == 0) - error->warning("Atom with molecule ID = 0 included in " + error->warning(FLERR,"Atom with molecule ID = 0 included in " "compute molecule group"); MPI_Allreduce(&lo,&idlo,1,MPI_INT,MPI_MIN,world); @@ -280,7 +277,7 @@ int Compute::molecules_in_group(int &idlo, int &idhi) MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); if (flagall && comm->me == 0) - error->warning("One or more compute molecules has atoms not in group"); + error->warning(FLERR,"One or more compute molecules has atoms not in group"); // if molmap simply stores 1 to Nmolecules, then free it diff --git a/src/compute_angle_local.cpp b/src/compute_angle_local.cpp index 6f9bce918c..d19b7e71aa 100644 --- a/src/compute_angle_local.cpp +++ b/src/compute_angle_local.cpp @@ -20,10 +20,12 @@ #include "domain.h" #include "force.h" #include "angle.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define DELTA 10000 @@ -32,10 +34,10 @@ using namespace LAMMPS_NS; ComputeAngleLocal::ComputeAngleLocal(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute angle/local command"); + if (narg < 4) error->all(FLERR,"Illegal compute angle/local command"); if (atom->avec->angles_allow == 0) - error->all("Compute angle/local used when angles are not allowed"); + error->all(FLERR,"Compute angle/local used when angles are not allowed"); local_flag = 1; nvalues = narg - 3; @@ -50,7 +52,7 @@ ComputeAngleLocal::ComputeAngleLocal(LAMMPS *lmp, int narg, char **arg) : i = iarg-3; if (strcmp(arg[iarg],"theta") == 0) tflag = nvalues++; else if (strcmp(arg[iarg],"eng") == 0) eflag = nvalues++; - else error->all("Invalid keyword in compute angle/local command"); + else error->all(FLERR,"Invalid keyword in compute angle/local command"); } nmax = 0; @@ -71,7 +73,7 @@ ComputeAngleLocal::~ComputeAngleLocal() void ComputeAngleLocal::init() { if (force->angle == NULL) - error->all("No angle style is defined for compute angle/local"); + error->all(FLERR,"No angle style is defined for compute angle/local"); // do initial memory allocation so that memory_usage() is correct @@ -133,7 +135,6 @@ int ComputeAngleLocal::compute_angles(int flag) } Angle *angle = force->angle; - double PI = 4.0*atan(1.0); m = n = 0; for (atom2 = 0; atom2 < nlocal; atom2++) { @@ -170,7 +171,7 @@ int ComputeAngleLocal::compute_angles(int flag) c /= r1*r2; if (c > 1.0) c = 1.0; if (c < -1.0) c = -1.0; - tbuf[n] = 180.0*acos(c)/PI; + tbuf[n] = 180.0*acos(c)/MY_PI; } if (eflag >= 0) { diff --git a/src/compute_atom_molecule.cpp b/src/compute_atom_molecule.cpp index 9466ae92a9..2bb6f7a510 100644 --- a/src/compute_atom_molecule.cpp +++ b/src/compute_atom_molecule.cpp @@ -36,10 +36,10 @@ ComputeAtomMolecule:: ComputeAtomMolecule(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute atom/molecule command"); + if (narg < 4) error->all(FLERR,"Illegal compute atom/molecule command"); if (atom->molecular == 0) - error->all("Compute atom/molecule requires molecular atom style"); + error->all(FLERR,"Compute atom/molecule requires molecular atom style"); // parse args @@ -65,7 +65,7 @@ ComputeAtomMolecule(LAMMPS *lmp, int narg, char **arg) : char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Illegal compute reduce command"); + error->all(FLERR,"Illegal compute reduce command"); argindex[nvalues] = atoi(ptr+1); *ptr = '\0'; } else argindex[nvalues] = 0; @@ -75,7 +75,7 @@ ComputeAtomMolecule(LAMMPS *lmp, int narg, char **arg) : strcpy(ids[nvalues],suffix); nvalues++; delete [] suffix; - } else error->all("Illegal compute atom/molecule command"); + } else error->all(FLERR,"Illegal compute atom/molecule command"); iarg++; } @@ -86,46 +86,46 @@ ComputeAtomMolecule(LAMMPS *lmp, int narg, char **arg) : if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for compute atom/molecule does not exist"); + error->all(FLERR,"Compute ID for compute atom/molecule does not exist"); if (modify->compute[icompute]->peratom_flag == 0) - error->all("Compute atom/molecule compute does not " + error->all(FLERR,"Compute atom/molecule compute does not " "calculate per-atom values"); if (argindex[i] == 0 && modify->compute[icompute]->size_peratom_cols != 0) - error->all("Compute atom/molecule compute does not " + error->all(FLERR,"Compute atom/molecule compute does not " "calculate a per-atom vector"); if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) - error->all("Compute atom/molecule compute does not " + error->all(FLERR,"Compute atom/molecule compute does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) - error->all("Compute atom/molecule compute array is " + error->all(FLERR,"Compute atom/molecule compute array is " "accessed out-of-range"); } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for compute atom/molecule does not exist"); + error->all(FLERR,"Fix ID for compute atom/molecule does not exist"); if (modify->fix[ifix]->peratom_flag) - error->all("Compute atom/molecule fix does not " + error->all(FLERR,"Compute atom/molecule fix does not " "calculate per-atom values"); if (argindex[i] == 0 && modify->fix[ifix]->size_peratom_cols != 0) - error->all("Compute atom/molecule fix does not " + error->all(FLERR,"Compute atom/molecule fix does not " "calculate a per-atom vector"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) - error->all("Compute atom/molecule fix does not " + error->all(FLERR,"Compute atom/molecule fix does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) - error->all("Compute atom/molecule fix array is accessed out-of-range"); + error->all(FLERR,"Compute atom/molecule fix array is accessed out-of-range"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for compute atom/molecule does not exist"); + error->all(FLERR,"Variable name for compute atom/molecule does not exist"); if (input->variable->atomstyle(ivariable) == 0) - error->all("Compute atom/molecule variable is not " + error->all(FLERR,"Compute atom/molecule variable is not " "atom-style variable"); } } @@ -179,7 +179,7 @@ void ComputeAtomMolecule::init() { int ntmp = molecules_in_group(idlo,idhi); if (ntmp != nmolecules) - error->all("Molecule count changed in compute atom/molecule"); + error->all(FLERR,"Molecule count changed in compute atom/molecule"); // set indices and check validity of all computes,fixes,variables @@ -187,19 +187,19 @@ void ComputeAtomMolecule::init() if (which[m] == COMPUTE) { int icompute = modify->find_compute(ids[m]); if (icompute < 0) - error->all("Compute ID for compute atom/molecule does not exist"); + error->all(FLERR,"Compute ID for compute atom/molecule does not exist"); value2index[m] = icompute; } else if (which[m] == FIX) { int ifix = modify->find_fix(ids[m]); if (ifix < 0) - error->all("Fix ID for compute atom/molecule does not exist"); + error->all(FLERR,"Fix ID for compute atom/molecule does not exist"); value2index[m] = ifix; } else if (which[m] == VARIABLE) { int ivariable = input->variable->find(ids[m]); if (ivariable < 0) - error->all("Variable name for compute atom/molecule does not exist"); + error->all(FLERR,"Variable name for compute atom/molecule does not exist"); value2index[m] = ivariable; } else value2index[m] = -1; @@ -301,7 +301,7 @@ void ComputeAtomMolecule::compute_one(int m) } else if (which[m] == FIX) { if (update->ntimestep % modify->fix[vidx]->peratom_freq) - error->all("Fix used in compute atom/molecule not computed " + error->all(FLERR,"Fix used in compute atom/molecule not computed " "at compatible time"); Fix *fix = modify->fix[vidx]; diff --git a/src/compute_bond_local.cpp b/src/compute_bond_local.cpp index af1710520f..76feec4209 100644 --- a/src/compute_bond_local.cpp +++ b/src/compute_bond_local.cpp @@ -32,10 +32,10 @@ using namespace LAMMPS_NS; ComputeBondLocal::ComputeBondLocal(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute bond/local command"); + if (narg < 4) error->all(FLERR,"Illegal compute bond/local command"); if (atom->avec->bonds_allow == 0) - error->all("Compute bond/local used when bonds are not allowed"); + error->all(FLERR,"Compute bond/local used when bonds are not allowed"); local_flag = 1; nvalues = narg - 3; @@ -50,7 +50,7 @@ ComputeBondLocal::ComputeBondLocal(LAMMPS *lmp, int narg, char **arg) : i = iarg-3; if (strcmp(arg[iarg],"dist") == 0) dflag = nvalues++; else if (strcmp(arg[iarg],"eng") == 0) eflag = nvalues++; - else error->all("Invalid keyword in compute bond/local command"); + else error->all(FLERR,"Invalid keyword in compute bond/local command"); } nmax = 0; @@ -71,7 +71,7 @@ ComputeBondLocal::~ComputeBondLocal() void ComputeBondLocal::init() { if (force->bond == NULL) - error->all("No bond style is defined for compute bond/local"); + error->all(FLERR,"No bond style is defined for compute bond/local"); // do initial memory allocation so that memory_usage() is correct diff --git a/src/compute_centro_atom.cpp b/src/compute_centro_atom.cpp index c166e3c2f5..68478955c8 100644 --- a/src/compute_centro_atom.cpp +++ b/src/compute_centro_atom.cpp @@ -37,14 +37,14 @@ using namespace LAMMPS_NS; ComputeCentroAtom::ComputeCentroAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 4) error->all("Illegal compute centro/atom command"); + if (narg != 4) error->all(FLERR,"Illegal compute centro/atom command"); if (strcmp(arg[3],"fcc") == 0) nnn = 12; else if (strcmp(arg[3],"bcc") == 0) nnn = 8; else nnn = atoi(arg[3]); if (nnn <= 0 || nnn % 2) - error->all("Illegal neighbor value for compute centro/atom command"); + error->all(FLERR,"Illegal neighbor value for compute centro/atom command"); peratom_flag = 1; size_peratom_cols = 0; @@ -70,13 +70,13 @@ ComputeCentroAtom::~ComputeCentroAtom() void ComputeCentroAtom::init() { if (force->pair == NULL) - error->all("Compute centro/atom requires a pair style be defined"); + error->all(FLERR,"Compute centro/atom requires a pair style be defined"); int count = 0; for (int i = 0; i < modify->ncompute; i++) if (strcmp(modify->compute[i]->style,"centro/atom") == 0) count++; if (count > 1 && comm->me == 0) - error->warning("More than one compute centro/atom"); + error->warning(FLERR,"More than one compute centro/atom"); // need an occasional full neighbor list diff --git a/src/compute_cluster_atom.cpp b/src/compute_cluster_atom.cpp index cb42cdbbf6..9b8036ad29 100644 --- a/src/compute_cluster_atom.cpp +++ b/src/compute_cluster_atom.cpp @@ -29,15 +29,12 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ ComputeClusterAtom::ComputeClusterAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 4) error->all("Illegal compute cluster/atom command"); + if (narg != 4) error->all(FLERR,"Illegal compute cluster/atom command"); double cutoff = atof(arg[3]); cutsq = cutoff*cutoff; @@ -62,11 +59,11 @@ ComputeClusterAtom::~ComputeClusterAtom() void ComputeClusterAtom::init() { if (atom->tag_enable == 0) - error->all("Cannot use compute cluster/atom unless atoms have IDs"); + error->all(FLERR,"Cannot use compute cluster/atom unless atoms have IDs"); if (force->pair == NULL) - error->all("Compute cluster/atom requires a pair style be defined"); + error->all(FLERR,"Compute cluster/atom requires a pair style be defined"); if (sqrt(cutsq) > force->pair->cutforce) - error->all("Compute cluster/atom cutoff is longer than pairwise cutoff"); + error->all(FLERR,"Compute cluster/atom cutoff is longer than pairwise cutoff"); // need an occasional full neighbor list // full required so that pair of atoms on 2 procs both set their clusterID @@ -82,7 +79,7 @@ void ComputeClusterAtom::init() for (int i = 0; i < modify->ncompute; i++) if (strcmp(modify->compute[i]->style,"cluster/atom") == 0) count++; if (count > 1 && comm->me == 0) - error->warning("More than one compute cluster/atom"); + error->warning(FLERR,"More than one compute cluster/atom"); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_cna_atom.cpp b/src/compute_cna_atom.cpp index f07ffd6fc9..5df5b68919 100644 --- a/src/compute_cna_atom.cpp +++ b/src/compute_cna_atom.cpp @@ -33,9 +33,6 @@ using namespace LAMMPS_NS; -#define MAX(a,b) ((a) > (b) ? (a) : (b)) -#define MIN(a,b) ((a) < (b) ? (a) : (b)) - #define MAXNEAR 16 #define MAXCOMMON 8 @@ -47,13 +44,13 @@ enum{NCOMMON,NBOND,MAXBOND,MINBOND}; ComputeCNAAtom::ComputeCNAAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 4) error->all("Illegal compute cna/atom command"); + if (narg != 4) error->all(FLERR,"Illegal compute cna/atom command"); peratom_flag = 1; size_peratom_cols = 0; double cutoff = atof(arg[3]); - if (cutoff < 0.0) error->all("Illegal compute cna/atom command"); + if (cutoff < 0.0) error->all(FLERR,"Illegal compute cna/atom command"); cutsq = cutoff*cutoff; nmax = 0; @@ -76,22 +73,22 @@ ComputeCNAAtom::~ComputeCNAAtom() void ComputeCNAAtom::init() { if (force->pair == NULL) - error->all("Compute cna/atom requires a pair style be defined"); + error->all(FLERR,"Compute cna/atom requires a pair style be defined"); if (sqrt(cutsq) > force->pair->cutforce) - error->all("Compute cna/atom cutoff is longer than pairwise cutoff"); + error->all(FLERR,"Compute cna/atom cutoff is longer than pairwise cutoff"); // cannot use neighbor->cutneighmax b/c neighbor has not yet been init if (2.0*sqrt(cutsq) > force->pair->cutforce + neighbor->skin && comm->me == 0) - error->warning("Compute cna/atom cutoff may be too large to find " + error->warning(FLERR,"Compute cna/atom cutoff may be too large to find " "ghost atom neighbors"); int count = 0; for (int i = 0; i < modify->ncompute; i++) if (strcmp(modify->compute[i]->style,"cna/atom") == 0) count++; if (count > 1 && comm->me == 0) - error->warning("More than one compute cna/atom defined"); + error->warning(FLERR,"More than one compute cna/atom defined"); // need an occasional full neighbor list @@ -192,7 +189,7 @@ void ComputeCNAAtom::compute_peratom() if (nerrorall && comm->me == 0) { char str[128]; sprintf(str,"Too many neighbors in CNA for %d atoms",nerrorall); - error->warning(str,0); + error->warning(FLERR,str,0); } // compute CNA for each atom in group @@ -353,7 +350,7 @@ void ComputeCNAAtom::compute_peratom() if (nerrorall && comm->me == 0) { char str[128]; sprintf(str,"Too many common neighbors in CNA %d times",nerrorall); - error->warning(str); + error->warning(FLERR,str); } } diff --git a/src/compute_com.cpp b/src/compute_com.cpp index dba4d626bd..d0f4296c42 100644 --- a/src/compute_com.cpp +++ b/src/compute_com.cpp @@ -23,7 +23,7 @@ using namespace LAMMPS_NS; ComputeCOM::ComputeCOM(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute com command"); + if (narg != 3) error->all(FLERR,"Illegal compute com command"); vector_flag = 1; size_vector = 3; diff --git a/src/compute_com_molecule.cpp b/src/compute_com_molecule.cpp index 5218f415a0..ad3ba957bd 100644 --- a/src/compute_com_molecule.cpp +++ b/src/compute_com_molecule.cpp @@ -25,10 +25,10 @@ using namespace LAMMPS_NS; ComputeCOMMolecule::ComputeCOMMolecule(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute com/molecule command"); + if (narg != 3) error->all(FLERR,"Illegal compute com/molecule command"); if (atom->molecular == 0) - error->all("Compute com/molecule requires molecular atom style"); + error->all(FLERR,"Compute com/molecule requires molecular atom style"); array_flag = 1; size_array_cols = 3; @@ -88,7 +88,7 @@ void ComputeCOMMolecule::init() { int ntmp = molecules_in_group(idlo,idhi); if (ntmp != nmolecules) - error->all("Molecule count changed in compute com/molecule"); + error->all(FLERR,"Molecule count changed in compute com/molecule"); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_coord_atom.cpp b/src/compute_coord_atom.cpp index 5f3c087b32..85fe47ec44 100644 --- a/src/compute_coord_atom.cpp +++ b/src/compute_coord_atom.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; ComputeCoordAtom::ComputeCoordAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 4) error->all("Illegal compute coord/atom command"); + if (narg != 4) error->all(FLERR,"Illegal compute coord/atom command"); double cutoff = atof(arg[3]); cutsq = cutoff*cutoff; @@ -58,9 +58,9 @@ ComputeCoordAtom::~ComputeCoordAtom() void ComputeCoordAtom::init() { if (force->pair == NULL) - error->all("Compute coord/atom requires a pair style be defined"); + error->all(FLERR,"Compute coord/atom requires a pair style be defined"); if (sqrt(cutsq) > force->pair->cutforce) - error->all("Compute coord/atom cutoff is longer than pairwise cutoff"); + error->all(FLERR,"Compute coord/atom cutoff is longer than pairwise cutoff"); // need an occasional full neighbor list @@ -75,7 +75,7 @@ void ComputeCoordAtom::init() for (int i = 0; i < modify->ncompute; i++) if (strcmp(modify->compute[i]->style,"coord/atom") == 0) count++; if (count > 1 && comm->me == 0) - error->warning("More than one compute coord/atom"); + error->warning(FLERR,"More than one compute coord/atom"); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_dihedral_local.cpp b/src/compute_dihedral_local.cpp index 361a0f9772..10cac6f607 100644 --- a/src/compute_dihedral_local.cpp +++ b/src/compute_dihedral_local.cpp @@ -20,26 +20,25 @@ #include "domain.h" #include "force.h" #include "dihedral.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define DELTA 10000 - -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) -#define SMALL 0.001 +#define SMALL 0.001 /* ---------------------------------------------------------------------- */ ComputeDihedralLocal::ComputeDihedralLocal(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute dihedral/local command"); + if (narg < 4) error->all(FLERR,"Illegal compute dihedral/local command"); if (atom->avec->dihedrals_allow == 0) - error->all("Compute dihedral/local used when dihedrals are not allowed"); + error->all(FLERR,"Compute dihedral/local used when dihedrals are not allowed"); local_flag = 1; nvalues = narg - 3; @@ -53,7 +52,7 @@ ComputeDihedralLocal::ComputeDihedralLocal(LAMMPS *lmp, int narg, char **arg) : for (int iarg = 3; iarg < narg; iarg++) { i = iarg-3; if (strcmp(arg[iarg],"phi") == 0) pflag = nvalues++; - else error->all("Invalid keyword in compute dihedral/local command"); + else error->all(FLERR,"Invalid keyword in compute dihedral/local command"); } nmax = 0; @@ -74,7 +73,7 @@ ComputeDihedralLocal::~ComputeDihedralLocal() void ComputeDihedralLocal::init() { if (force->dihedral == NULL) - error->all("No dihedral style is defined for compute dihedral/local"); + error->all(FLERR,"No dihedral style is defined for compute dihedral/local"); // do initial memory allocation so that memory_usage() is correct @@ -131,8 +130,6 @@ int ComputeDihedralLocal::compute_dihedrals(int flag) } } - double PI = 4.0*atan(1.0); - m = n = 0; for (atom2 = 0; atom2 < nlocal; atom2++) { if (!(mask[atom2] & groupbit)) continue; @@ -193,7 +190,7 @@ int ComputeDihedralLocal::compute_dihedrals(int flag) if (c > 1.0) c = 1.0; if (c < -1.0) c = -1.0; - pbuf[n] = 180.0*atan2(s,c)/PI; + pbuf[n] = 180.0*atan2(s,c)/MY_PI; } n += nvalues; } diff --git a/src/compute_displace_atom.cpp b/src/compute_displace_atom.cpp index fbd828be5d..59370ea831 100644 --- a/src/compute_displace_atom.cpp +++ b/src/compute_displace_atom.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; ComputeDisplaceAtom::ComputeDisplaceAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute displace/atom command"); + if (narg != 3) error->all(FLERR,"Illegal compute displace/atom command"); peratom_flag = 1; size_peratom_cols = 4; @@ -77,7 +77,7 @@ void ComputeDisplaceAtom::init() // set fix which stores original atom coords int ifix = modify->find_fix(id_fix); - if (ifix < 0) error->all("Could not find compute displace/atom fix ID"); + if (ifix < 0) error->all(FLERR,"Could not find compute displace/atom fix ID"); fix = modify->fix[ifix]; } diff --git a/src/compute_erotate_sphere.cpp b/src/compute_erotate_sphere.cpp index 1aa5ad8d99..47bee40890 100644 --- a/src/compute_erotate_sphere.cpp +++ b/src/compute_erotate_sphere.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; ComputeERotateSphere::ComputeERotateSphere(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute erotate/sphere command"); + if (narg != 3) error->all(FLERR,"Illegal compute erotate/sphere command"); scalar_flag = 1; extscalar = 1; @@ -38,7 +38,7 @@ ComputeERotateSphere::ComputeERotateSphere(LAMMPS *lmp, int narg, char **arg) : // error check if (!atom->sphere_flag) - error->all("Compute erotate/sphere requires atom style sphere"); + error->all(FLERR,"Compute erotate/sphere requires atom style sphere"); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_group_group.cpp b/src/compute_group_group.cpp index ebbfe16d93..5393fae0be 100644 --- a/src/compute_group_group.cpp +++ b/src/compute_group_group.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; ComputeGroupGroup::ComputeGroupGroup(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 4) error->all("Illegal compute group/group command"); + if (narg != 4) error->all(FLERR,"Illegal compute group/group command"); scalar_flag = vector_flag = 1; size_vector = 3; @@ -47,7 +47,7 @@ ComputeGroupGroup::ComputeGroupGroup(LAMMPS *lmp, int narg, char **arg) : strcpy(group2,arg[3]); jgroup = group->find(group2); - if (jgroup == -1) error->all("Compute group/group group ID does not exist"); + if (jgroup == -1) error->all(FLERR,"Compute group/group group ID does not exist"); jgroupbit = group->bitmask[jgroup]; vector = new double[3]; @@ -66,13 +66,13 @@ ComputeGroupGroup::~ComputeGroupGroup() void ComputeGroupGroup::init() { if (force->pair == NULL) - error->all("No pair style defined for compute group/group"); + error->all(FLERR,"No pair style defined for compute group/group"); // if non-hybrid, then error if single_enable = 0 // if hybrid, let hybrid determine if sub-style sets single_enable = 0 if (force->pair_match("hybrid",0) == NULL && force->pair->single_enable == 0) - error->all("Pair style does not support compute group/group"); + error->all(FLERR,"Pair style does not support compute group/group"); pair = force->pair; cutsq = force->pair->cutsq; @@ -80,7 +80,7 @@ void ComputeGroupGroup::init() // recheck that group 2 has not been deleted jgroup = group->find(group2); - if (jgroup == -1) error->all("Compute group/group group ID does not exist"); + if (jgroup == -1) error->all(FLERR,"Compute group/group group ID does not exist"); jgroupbit = group->bitmask[jgroup]; // need an occasional half neighbor list diff --git a/src/compute_gyration.cpp b/src/compute_gyration.cpp index de2ebf8f1b..f192ea3d69 100644 --- a/src/compute_gyration.cpp +++ b/src/compute_gyration.cpp @@ -23,7 +23,7 @@ using namespace LAMMPS_NS; ComputeGyration::ComputeGyration(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute gyration command"); + if (narg != 3) error->all(FLERR,"Illegal compute gyration command"); scalar_flag = 1; extscalar = 0; diff --git a/src/compute_gyration_molecule.cpp b/src/compute_gyration_molecule.cpp index 80fdca5fa0..dd96079d21 100644 --- a/src/compute_gyration_molecule.cpp +++ b/src/compute_gyration_molecule.cpp @@ -27,10 +27,10 @@ ComputeGyrationMolecule::ComputeGyrationMolecule(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute gyration/molecule command"); + if (narg != 3) error->all(FLERR,"Illegal compute gyration/molecule command"); if (atom->molecular == 0) - error->all("Compute gyration/molecule requires molecular atom style"); + error->all(FLERR,"Compute gyration/molecule requires molecular atom style"); vector_flag = 1; extvector = 0; @@ -93,7 +93,7 @@ void ComputeGyrationMolecule::init() { int ntmp = molecules_in_group(idlo,idhi); if (ntmp != nmolecules) - error->all("Molecule count changed in compute gyration/molecule"); + error->all(FLERR,"Molecule count changed in compute gyration/molecule"); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_heat_flux.cpp b/src/compute_heat_flux.cpp index 28be7c5942..f5a38a5656 100644 --- a/src/compute_heat_flux.cpp +++ b/src/compute_heat_flux.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; ComputeHeatFlux::ComputeHeatFlux(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 6) error->all("Illegal compute heat/flux command"); + if (narg != 6) error->all(FLERR,"Illegal compute heat/flux command"); vector_flag = 1; size_vector = 6; @@ -60,13 +60,13 @@ ComputeHeatFlux::ComputeHeatFlux(LAMMPS *lmp, int narg, char **arg) : int ipe = modify->find_compute(id_pe); int istress = modify->find_compute(id_stress); if (ike < 0 || ipe < 0 || istress < 0) - error->all("Could not find compute heat/flux compute ID"); + error->all(FLERR,"Could not find compute heat/flux compute ID"); if (strcmp(modify->compute[ike]->style,"ke/atom") != 0) - error->all("Compute heat/flux compute ID does not compute ke/atom"); + error->all(FLERR,"Compute heat/flux compute ID does not compute ke/atom"); if (modify->compute[ipe]->peatomflag == 0) - error->all("Compute heat/flux compute ID does not compute pe/atom"); + error->all(FLERR,"Compute heat/flux compute ID does not compute pe/atom"); if (modify->compute[istress]->pressatomflag == 0) - error->all("Compute heat/flux compute ID does not compute stress/atom"); + error->all(FLERR,"Compute heat/flux compute ID does not compute stress/atom"); vector = new double[6]; } @@ -91,7 +91,7 @@ void ComputeHeatFlux::init() int ipe = modify->find_compute(id_pe); int istress = modify->find_compute(id_stress); if (ike < 0 || ipe < 0 || istress < 0) - error->all("Could not find compute heat/flux compute ID"); + error->all(FLERR,"Could not find compute heat/flux compute ID"); c_ke = modify->compute[ike]; c_pe = modify->compute[ipe]; diff --git a/src/compute_improper_local.cpp b/src/compute_improper_local.cpp index 65e4ec1cc9..3285f2561c 100644 --- a/src/compute_improper_local.cpp +++ b/src/compute_improper_local.cpp @@ -20,10 +20,12 @@ #include "domain.h" #include "force.h" #include "improper.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define DELTA 10000 @@ -34,10 +36,10 @@ using namespace LAMMPS_NS; ComputeImproperLocal::ComputeImproperLocal(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute improper/local command"); + if (narg < 4) error->all(FLERR,"Illegal compute improper/local command"); if (atom->avec->impropers_allow == 0) - error->all("Compute improper/local used when impropers are not allowed"); + error->all(FLERR,"Compute improper/local used when impropers are not allowed"); local_flag = 1; nvalues = narg - 3; @@ -51,7 +53,7 @@ ComputeImproperLocal::ComputeImproperLocal(LAMMPS *lmp, int narg, char **arg) : for (int iarg = 3; iarg < narg; iarg++) { i = iarg-3; if (strcmp(arg[iarg],"chi") == 0) cflag = nvalues++; - else error->all("Invalid keyword in compute improper/local command"); + else error->all(FLERR,"Invalid keyword in compute improper/local command"); } nmax = 0; @@ -72,7 +74,7 @@ ComputeImproperLocal::~ComputeImproperLocal() void ComputeImproperLocal::init() { if (force->improper == NULL) - error->all("No improper style is defined for compute improper/local"); + error->all(FLERR,"No improper style is defined for compute improper/local"); // do initial memory allocation so that memory_usage() is correct @@ -129,8 +131,6 @@ int ComputeImproperLocal::compute_impropers(int flag) } } - double PI = 4.0*atan(1.0); - m = n = 0; for (atom2 = 0; atom2 < nlocal; atom2++) { if (!(mask[atom2] & groupbit)) continue; @@ -188,7 +188,7 @@ int ComputeImproperLocal::compute_impropers(int flag) if (c > 1.0) c = 1.0; if (c < -1.0) c = -1.0; - cbuf[n] = 180.0*acos(c)/PI; + cbuf[n] = 180.0*acos(c)/MY_PI; } n += nvalues; } diff --git a/src/compute_ke.cpp b/src/compute_ke.cpp index 2db20db761..629f1488e1 100644 --- a/src/compute_ke.cpp +++ b/src/compute_ke.cpp @@ -27,7 +27,7 @@ using namespace LAMMPS_NS; ComputeKE::ComputeKE(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute ke command"); + if (narg != 3) error->all(FLERR,"Illegal compute ke command"); scalar_flag = 1; extscalar = 1; diff --git a/src/compute_ke_atom.cpp b/src/compute_ke_atom.cpp index 0d6fc2d9c7..6d9d45268f 100644 --- a/src/compute_ke_atom.cpp +++ b/src/compute_ke_atom.cpp @@ -28,7 +28,7 @@ using namespace LAMMPS_NS; ComputeKEAtom::ComputeKEAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute ke/atom command"); + if (narg != 3) error->all(FLERR,"Illegal compute ke/atom command"); peratom_flag = 1; size_peratom_cols = 0; @@ -52,7 +52,7 @@ void ComputeKEAtom::init() for (int i = 0; i < modify->ncompute; i++) if (strcmp(modify->compute[i]->style,"ke/atom") == 0) count++; if (count > 1 && comm->me == 0) - error->warning("More than one compute ke/atom"); + error->warning(FLERR,"More than one compute ke/atom"); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_msd.cpp b/src/compute_msd.cpp index 3fcb99e89c..bf2d00332e 100644 --- a/src/compute_msd.cpp +++ b/src/compute_msd.cpp @@ -28,7 +28,7 @@ using namespace LAMMPS_NS; ComputeMSD::ComputeMSD(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 3) error->all("Illegal compute msd command"); + if (narg < 3) error->all(FLERR,"Illegal compute msd command"); vector_flag = 1; size_vector = 4; @@ -41,12 +41,12 @@ ComputeMSD::ComputeMSD(LAMMPS *lmp, int narg, char **arg) : int iarg = 3; while (iarg < narg) { if (strcmp(arg[iarg],"com") == 0) { - if (iarg+2 > narg) error->all("Illegal compute msd command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal compute msd command"); if (strcmp(arg[iarg+1],"no") == 0) comflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) comflag = 1; - else error->all("Illegal compute msd command"); + else error->all(FLERR,"Illegal compute msd command"); iarg += 2; - } else error->all("Illegal compute msd command"); + } else error->all(FLERR,"Illegal compute msd command"); } // create a new fix store/state style with or without com keyword @@ -93,7 +93,7 @@ void ComputeMSD::init() // set fix which stores original atom coords int ifix = modify->find_fix(id_fix); - if (ifix < 0) error->all("Could not find compute msd fix ID"); + if (ifix < 0) error->all(FLERR,"Could not find compute msd fix ID"); fix = modify->fix[ifix]; // nmsd = # of atoms in group diff --git a/src/compute_msd_molecule.cpp b/src/compute_msd_molecule.cpp index a4ad8b021c..de8d2f63c5 100644 --- a/src/compute_msd_molecule.cpp +++ b/src/compute_msd_molecule.cpp @@ -25,10 +25,10 @@ using namespace LAMMPS_NS; ComputeMSDMolecule::ComputeMSDMolecule(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute msd/molecule command"); + if (narg != 3) error->all(FLERR,"Illegal compute msd/molecule command"); if (atom->molecular == 0) - error->all("Compute msd/molecule requires molecular atom style"); + error->all(FLERR,"Compute msd/molecule requires molecular atom style"); array_flag = 1; size_array_cols = 4; @@ -103,7 +103,7 @@ void ComputeMSDMolecule::init() { int ntmp = molecules_in_group(idlo,idhi); if (ntmp != nmolecules) - error->all("Molecule count changed in compute msd/molecule"); + error->all(FLERR,"Molecule count changed in compute msd/molecule"); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_pair.cpp b/src/compute_pair.cpp index 9617e016aa..60c723b952 100644 --- a/src/compute_pair.cpp +++ b/src/compute_pair.cpp @@ -28,8 +28,8 @@ enum{EPAIR,EVDWL,ECOUL}; ComputePair::ComputePair(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4 || narg > 5) error->all("Illegal compute pair command"); - if (igroup) error->all("Compute pair must use group all"); + if (narg < 4 || narg > 5) error->all(FLERR,"Illegal compute pair command"); + if (igroup) error->all(FLERR,"Compute pair must use group all"); scalar_flag = 1; extscalar = 1; @@ -37,6 +37,7 @@ ComputePair::ComputePair(LAMMPS *lmp, int narg, char **arg) : timeflag = 1; int n = strlen(arg[3]) + 1; + if (lmp->suffix) n += strlen(lmp->suffix) + 1; pstyle = new char[n]; strcpy(pstyle,arg[3]); @@ -46,8 +47,17 @@ ComputePair::ComputePair(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[4],"ecoul") == 0) evalue = ECOUL; } else evalue = EPAIR; + // check if pair style with and without suffix exists + pair = force->pair_match(pstyle,1); - if (!pair) error->all("Unrecognized pair style in compute pair command"); + if (!pair && lmp->suffix) { + strcat(pstyle,"/"); + strcat(pstyle,lmp->suffix); + pair = force->pair_match(pstyle,1); + } + + if (!pair) + error->all(FLERR,"Unrecognized pair style in compute pair command"); npair = pair->nextra; if (npair) { @@ -75,7 +85,8 @@ void ComputePair::init() // recheck for pair style in case it has been deleted pair = force->pair_match(pstyle,1); - if (!pair) error->all("Unrecognized pair style in compute pair command"); + if (!pair) + error->all(FLERR,"Unrecognized pair style in compute pair command"); } /* ---------------------------------------------------------------------- */ @@ -84,7 +95,7 @@ double ComputePair::compute_scalar() { invoked_scalar = update->ntimestep; if (update->eflag_global != invoked_scalar) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); double eng; if (evalue == EPAIR) eng = pair->eng_vdwl + pair->eng_coul; @@ -101,7 +112,7 @@ void ComputePair::compute_vector() { invoked_vector = update->ntimestep; if (update->eflag_global != invoked_vector) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); for (int i = 0; i < npair; i++) one[i] = pair->pvector[i]; diff --git a/src/compute_pair_local.cpp b/src/compute_pair_local.cpp index aa209f2454..8c35f01702 100644 --- a/src/compute_pair_local.cpp +++ b/src/compute_pair_local.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; ComputePairLocal::ComputePairLocal(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute pair/local command"); + if (narg < 4) error->all(FLERR,"Illegal compute pair/local command"); local_flag = 1; nvalues = narg - 3; @@ -50,7 +50,7 @@ ComputePairLocal::ComputePairLocal(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[iarg],"dist") == 0) dflag = nvalues++; else if (strcmp(arg[iarg],"eng") == 0) eflag = nvalues++; else if (strcmp(arg[iarg],"force") == 0) fflag = nvalues++; - else error->all("Invalid keyword in compute pair/local command"); + else error->all(FLERR,"Invalid keyword in compute pair/local command"); } nmax = 0; @@ -71,9 +71,9 @@ ComputePairLocal::~ComputePairLocal() void ComputePairLocal::init() { if (force->pair == NULL) - error->all("No pair style is defined for compute pair/local"); + error->all(FLERR,"No pair style is defined for compute pair/local"); if (force->pair->single_enable == 0) - error->all("Pair style does not support compute pair/local"); + error->all(FLERR,"Pair style does not support compute pair/local"); // need an occasional half neighbor list diff --git a/src/compute_pe.cpp b/src/compute_pe.cpp index 1d72d37fed..c153e15d8a 100644 --- a/src/compute_pe.cpp +++ b/src/compute_pe.cpp @@ -34,8 +34,8 @@ using namespace LAMMPS_NS; ComputePE::ComputePE(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 3) error->all("Illegal compute pe command"); - if (igroup) error->all("Compute pe must use group all"); + if (narg < 3) error->all(FLERR,"Illegal compute pe command"); + if (igroup) error->all(FLERR,"Compute pe must use group all"); scalar_flag = 1; extscalar = 1; @@ -60,7 +60,7 @@ ComputePE::ComputePE(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[iarg],"dihedral") == 0) dihedralflag = 1; else if (strcmp(arg[iarg],"improper") == 0) improperflag = 1; else if (strcmp(arg[iarg],"kspace") == 0) kspaceflag = 1; - else error->all("Illegal compute pe command"); + else error->all(FLERR,"Illegal compute pe command"); iarg++; } } @@ -72,7 +72,7 @@ double ComputePE::compute_scalar() { invoked_scalar = update->ntimestep; if (update->eflag_global != invoked_scalar) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); double one = 0.0; if (pairflag && force->pair) diff --git a/src/compute_pe_atom.cpp b/src/compute_pe_atom.cpp index 3d424e61c2..20a16ae5b0 100755 --- a/src/compute_pe_atom.cpp +++ b/src/compute_pe_atom.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; ComputePEAtom::ComputePEAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 3) error->all("Illegal compute pe/atom command"); + if (narg < 3) error->all(FLERR,"Illegal compute pe/atom command"); peratom_flag = 1; size_peratom_cols = 0; @@ -53,7 +53,7 @@ ComputePEAtom::ComputePEAtom(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[iarg],"angle") == 0) angleflag = 1; else if (strcmp(arg[iarg],"dihedral") == 0) dihedralflag = 1; else if (strcmp(arg[iarg],"improper") == 0) improperflag = 1; - else error->all("Illegal compute pe/atom command"); + else error->all(FLERR,"Illegal compute pe/atom command"); iarg++; } } @@ -77,7 +77,7 @@ void ComputePEAtom::compute_peratom() invoked_peratom = update->ntimestep; if (update->eflag_atom != invoked_peratom) - error->all("Per-atom energy was not tallied on needed timestep"); + error->all(FLERR,"Per-atom energy was not tallied on needed timestep"); // grow local energy array if necessary // needs to be atom->nmax in length diff --git a/src/compute_pressure.cpp b/src/compute_pressure.cpp index 94391ce527..edd6910cce 100644 --- a/src/compute_pressure.cpp +++ b/src/compute_pressure.cpp @@ -36,8 +36,8 @@ using namespace LAMMPS_NS; ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute pressure command"); - if (igroup) error->all("Compute pressure must use group all"); + if (narg < 4) error->all(FLERR,"Illegal compute pressure command"); + if (igroup) error->all(FLERR,"Compute pressure must use group all"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -55,9 +55,9 @@ ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) : int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Could not find compute pressure temperature ID"); + error->all(FLERR,"Could not find compute pressure temperature ID"); if (modify->compute[icompute]->tempflag == 0) - error->all("Compute pressure temperature ID does not compute temperature"); + error->all(FLERR,"Compute pressure temperature ID does not compute temperature"); // process optional args @@ -85,7 +85,7 @@ ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) : pairflag = 1; bondflag = angleflag = dihedralflag = improperflag = 1; kspaceflag = fixflag = 1; - } else error->all("Illegal compute pressure command"); + } else error->all(FLERR,"Illegal compute pressure command"); iarg++; } } @@ -117,7 +117,7 @@ void ComputePressure::init() int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Could not find compute pressure temperature ID"); + error->all(FLERR,"Could not find compute pressure temperature ID"); temperature = modify->compute[icompute]; // detect contributions to virial @@ -166,7 +166,7 @@ double ComputePressure::compute_scalar() { invoked_scalar = update->ntimestep; if (update->vflag_global != invoked_scalar) - error->all("Virial was not tallied on needed timestep"); + error->all(FLERR,"Virial was not tallied on needed timestep"); // invoke temperature it it hasn't been already @@ -207,7 +207,7 @@ void ComputePressure::compute_vector() { invoked_vector = update->ntimestep; if (update->vflag_global != invoked_vector) - error->all("Virial was not tallied on needed timestep"); + error->all(FLERR,"Virial was not tallied on needed timestep"); // invoke temperature if it hasn't been already diff --git a/src/compute_property_atom.cpp b/src/compute_property_atom.cpp index b145139d19..80efd8a5bf 100644 --- a/src/compute_property_atom.cpp +++ b/src/compute_property_atom.cpp @@ -11,10 +11,14 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "math.h" #include "string.h" #include "compute_property_atom.h" +#include "math_extra.h" #include "atom.h" #include "atom_vec_ellipsoid.h" +#include "atom_vec_line.h" +#include "atom_vec_tri.h" #include "update.h" #include "domain.h" #include "memory.h" @@ -27,7 +31,7 @@ using namespace LAMMPS_NS; ComputePropertyAtom::ComputePropertyAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute property/atom command"); + if (narg < 4) error->all(FLERR,"Illegal compute property/atom command"); peratom_flag = 1; nvalues = narg - 3; @@ -47,7 +51,7 @@ ComputePropertyAtom::ComputePropertyAtom(LAMMPS *lmp, int narg, char **arg) : pack_choice[i] = &ComputePropertyAtom::pack_id; } else if (strcmp(arg[iarg],"mol") == 0) { if (!atom->molecule_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_molecule; } else if (strcmp(arg[iarg],"type") == 0) { @@ -107,144 +111,221 @@ ComputePropertyAtom::ComputePropertyAtom(LAMMPS *lmp, int narg, char **arg) : } else if (strcmp(arg[iarg],"q") == 0) { if (!atom->q_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_q; } else if (strcmp(arg[iarg],"mux") == 0) { if (!atom->mu_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_mux; } else if (strcmp(arg[iarg],"muy") == 0) { if (!atom->mu_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_muy; } else if (strcmp(arg[iarg],"muz") == 0) { if (!atom->mu_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_muz; } else if (strcmp(arg[iarg],"mu") == 0) { if (!atom->mu_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_mu; } else if (strcmp(arg[iarg],"radius") == 0) { if (!atom->radius_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_radius; } else if (strcmp(arg[iarg],"diameter") == 0) { if (!atom->radius_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_diameter; } else if (strcmp(arg[iarg],"omegax") == 0) { if (!atom->omega_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_omegax; } else if (strcmp(arg[iarg],"omegay") == 0) { if (!atom->omega_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_omegay; } else if (strcmp(arg[iarg],"omegaz") == 0) { if (!atom->omega_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_omegaz; } else if (strcmp(arg[iarg],"angmomx") == 0) { if (!atom->angmom_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_angmomx; } else if (strcmp(arg[iarg],"angmomy") == 0) { if (!atom->angmom_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_angmomy; } else if (strcmp(arg[iarg],"angmomz") == 0) { if (!atom->angmom_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_angmomz; } else if (strcmp(arg[iarg],"shapex") == 0) { - avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - if (!avec) error->all("Compute property/atom for " - "atom property that isn't allocated"); + avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_shapex; } else if (strcmp(arg[iarg],"shapey") == 0) { - avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - if (!avec) error->all("Compute property/atom for " - "atom property that isn't allocated"); + avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_shapey; } else if (strcmp(arg[iarg],"shapez") == 0) { - avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - if (!avec) error->all("Compute property/atom for " - "atom property that isn't allocated"); + avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_shapez; } else if (strcmp(arg[iarg],"quatw") == 0) { - avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - if (!avec) error->all("Compute property/atom for " - "atom property that isn't allocated"); + avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_quatw; } else if (strcmp(arg[iarg],"quati") == 0) { - avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - if (!avec) error->all("Compute property/atom for " - "atom property that isn't allocated"); + avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_quati; } else if (strcmp(arg[iarg],"quatj") == 0) { - avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - if (!avec) error->all("Compute property/atom for " - "atom property that isn't allocated"); + avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_quatj; } else if (strcmp(arg[iarg],"quatk") == 0) { - avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - if (!avec) error->all("Compute property/atom for " - "atom property that isn't allocated"); + avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_quatk; } else if (strcmp(arg[iarg],"tqx") == 0) { if (!atom->torque_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_tqx; } else if (strcmp(arg[iarg],"tqy") == 0) { if (!atom->torque_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_tqy; } else if (strcmp(arg[iarg],"tqz") == 0) { if (!atom->torque_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_tqz; } else if (strcmp(arg[iarg],"spin") == 0) { if (!atom->spin_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_spin; } else if (strcmp(arg[iarg],"eradius") == 0) { if (!atom->eradius_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_eradius; } else if (strcmp(arg[iarg],"ervel") == 0) { if (!atom->ervel_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_ervel; } else if (strcmp(arg[iarg],"erforce") == 0) { if (!atom->erforce_flag) - error->all("Compute property/atom for " + error->all(FLERR,"Compute property/atom for " "atom property that isn't allocated"); pack_choice[i] = &ComputePropertyAtom::pack_erforce; - } else error->all("Invalid keyword in compute property/atom command"); + } else if (strcmp(arg[iarg],"end1x") == 0) { + avec_line = (AtomVecLine *) atom->style_match("line"); + if (!avec_line) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_end1x; + } else if (strcmp(arg[iarg],"end1y") == 0) { + avec_line = (AtomVecLine *) atom->style_match("line"); + if (!avec_line) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_end1y; + } else if (strcmp(arg[iarg],"end1z") == 0) { + avec_line = (AtomVecLine *) atom->style_match("line"); + if (!avec_line) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_end1z; + } else if (strcmp(arg[iarg],"end2x") == 0) { + avec_line = (AtomVecLine *) atom->style_match("line"); + if (!avec_line) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_end2x; + } else if (strcmp(arg[iarg],"end2y") == 0) { + avec_line = (AtomVecLine *) atom->style_match("line"); + if (!avec_line) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_end2y; + } else if (strcmp(arg[iarg],"end2z") == 0) { + avec_line = (AtomVecLine *) atom->style_match("line"); + if (!avec_line) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_end2z; + + } else if (strcmp(arg[iarg],"corner1x") == 0) { + avec_tri = (AtomVecTri *) atom->style_match("tri"); + if (!avec_tri) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_corner1x; + } else if (strcmp(arg[iarg],"corner1y") == 0) { + avec_tri = (AtomVecTri *) atom->style_match("tri"); + if (!avec_tri) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_corner1y; + } else if (strcmp(arg[iarg],"corner1z") == 0) { + avec_tri = (AtomVecTri *) atom->style_match("tri"); + if (!avec_tri) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_corner1z; + } else if (strcmp(arg[iarg],"corner2x") == 0) { + avec_tri = (AtomVecTri *) atom->style_match("tri"); + if (!avec_tri) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_corner2x; + } else if (strcmp(arg[iarg],"corner2y") == 0) { + avec_tri = (AtomVecTri *) atom->style_match("tri"); + if (!avec_tri) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_corner2y; + } else if (strcmp(arg[iarg],"corner2z") == 0) { + avec_tri = (AtomVecTri *) atom->style_match("tri"); + if (!avec_tri) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_corner2z; + } else if (strcmp(arg[iarg],"corner3x") == 0) { + avec_tri = (AtomVecTri *) atom->style_match("tri"); + if (!avec_tri) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_corner3x; + } else if (strcmp(arg[iarg],"corner3y") == 0) { + avec_tri = (AtomVecTri *) atom->style_match("tri"); + if (!avec_tri) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_corner3y; + } else if (strcmp(arg[iarg],"corner3z") == 0) { + avec_tri = (AtomVecTri *) atom->style_match("tri"); + if (!avec_tri) error->all(FLERR,"Compute property/atom for " + "atom property that isn't allocated"); + pack_choice[i] = &ComputePropertyAtom::pack_corner3z; + + } else error->all(FLERR,"Invalid keyword in compute property/atom command"); } nmax = 0; @@ -994,7 +1075,7 @@ void ComputePropertyAtom::pack_angmomz(int n) void ComputePropertyAtom::pack_shapex(int n) { - AtomVecEllipsoid::Bonus *bonus = avec->bonus; + AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus; int *ellipsoid = atom->ellipsoid; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -1011,7 +1092,7 @@ void ComputePropertyAtom::pack_shapex(int n) void ComputePropertyAtom::pack_shapey(int n) { - AtomVecEllipsoid::Bonus *bonus = avec->bonus; + AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus; int *ellipsoid = atom->ellipsoid; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -1028,7 +1109,7 @@ void ComputePropertyAtom::pack_shapey(int n) void ComputePropertyAtom::pack_shapez(int n) { - AtomVecEllipsoid::Bonus *bonus = avec->bonus; + AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus; int *ellipsoid = atom->ellipsoid; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -1045,7 +1126,7 @@ void ComputePropertyAtom::pack_shapez(int n) void ComputePropertyAtom::pack_quatw(int n) { - AtomVecEllipsoid::Bonus *bonus = avec->bonus; + AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus; int *ellipsoid = atom->ellipsoid; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -1062,7 +1143,7 @@ void ComputePropertyAtom::pack_quatw(int n) void ComputePropertyAtom::pack_quati(int n) { - AtomVecEllipsoid::Bonus *bonus = avec->bonus; + AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus; int *ellipsoid = atom->ellipsoid; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -1079,7 +1160,7 @@ void ComputePropertyAtom::pack_quati(int n) void ComputePropertyAtom::pack_quatj(int n) { - AtomVecEllipsoid::Bonus *bonus = avec->bonus; + AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus; int *ellipsoid = atom->ellipsoid; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -1096,7 +1177,7 @@ void ComputePropertyAtom::pack_quatj(int n) void ComputePropertyAtom::pack_quatk(int n) { - AtomVecEllipsoid::Bonus *bonus = avec->bonus; + AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus; int *ellipsoid = atom->ellipsoid; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -1213,3 +1294,294 @@ void ComputePropertyAtom::pack_erforce(int n) n += nvalues; } } + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_end1x(int n) +{ + AtomVecLine::Bonus *bonus = avec_line->bonus; + int *line = atom->line; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && line[i] >= 0) + buf[n] = x[i][0] - 0.5*bonus[line[i]].length*cos(bonus[line[i]].theta); + else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_end1y(int n) +{ + AtomVecLine::Bonus *bonus = avec_line->bonus; + int *line = atom->line; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && line[i] >= 0) + buf[n] = x[i][1] - 0.5*bonus[line[i]].length*sin(bonus[line[i]].theta); + else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_end1z(int n) +{ + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = x[i][2]; + else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_end2x(int n) +{ + AtomVecLine::Bonus *bonus = avec_line->bonus; + int *line = atom->line; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && line[i] >= 0) + buf[n] = x[i][0] + 0.5*bonus[line[i]].length*cos(bonus[line[i]].theta); + else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_end2y(int n) +{ + AtomVecLine::Bonus *bonus = avec_line->bonus; + int *line = atom->line; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && line[i] >= 0) + buf[n] = x[i][1] + 0.5*bonus[line[i]].length*sin(bonus[line[i]].theta); + else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_end2z(int n) +{ + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = x[i][2]; + else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_corner1x(int n) +{ + AtomVecTri::Bonus *bonus = avec_tri->bonus; + int *tri = atom->tri; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double p[3][3],c[3]; + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && tri[i] >= 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c1,c); + buf[n] = x[i][0] + c[0]; + } else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_corner1y(int n) +{ + AtomVecTri::Bonus *bonus = avec_tri->bonus; + int *tri = atom->tri; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double p[3][3],c[3]; + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && tri[i] >= 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c1,c); + buf[n] = x[i][1] + c[1]; + } else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_corner1z(int n) +{ + AtomVecTri::Bonus *bonus = avec_tri->bonus; + int *tri = atom->tri; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double p[3][3],c[3]; + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && tri[i] >= 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c1,c); + buf[n] = x[i][2] + c[2]; + } else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_corner2x(int n) +{ + AtomVecTri::Bonus *bonus = avec_tri->bonus; + int *tri = atom->tri; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double p[3][3],c[3]; + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && tri[i] >= 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c2,c); + buf[n] = x[i][0] + c[0]; + } else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_corner2y(int n) +{ + AtomVecTri::Bonus *bonus = avec_tri->bonus; + int *tri = atom->tri; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double p[3][3],c[3]; + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && tri[i] >= 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c2,c); + buf[n] = x[i][1] + c[1]; + } else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_corner2z(int n) +{ + AtomVecTri::Bonus *bonus = avec_tri->bonus; + int *tri = atom->tri; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double p[3][3],c[3]; + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && tri[i] >= 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c2,c); + buf[n] = x[i][2] + c[2]; + } else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_corner3x(int n) +{ + AtomVecTri::Bonus *bonus = avec_tri->bonus; + int *tri = atom->tri; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double p[3][3],c[3]; + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && tri[i] >= 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c3,c); + buf[n] = x[i][0] + c[0]; + } else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_corner3y(int n) +{ + AtomVecTri::Bonus *bonus = avec_tri->bonus; + int *tri = atom->tri; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double p[3][3],c[3]; + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && tri[i] >= 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c3,c); + buf[n] = x[i][1] + c[1]; + } else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_corner3z(int n) +{ + AtomVecTri::Bonus *bonus = avec_tri->bonus; + int *tri = atom->tri; + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double p[3][3],c[3]; + for (int i = 0; i < nlocal; i++) { + if ((mask[i] & groupbit) && tri[i] >= 0) { + MathExtra::quat_to_mat(bonus[tri[i]].quat,p); + MathExtra::matvec(p,bonus[tri[i]].c3,c); + buf[n] = x[i][2] + c[2]; + } else buf[n] = 0.0; + n += nvalues; + } +} diff --git a/src/compute_property_atom.h b/src/compute_property_atom.h index b32d0a93df..8f675b6204 100644 --- a/src/compute_property_atom.h +++ b/src/compute_property_atom.h @@ -38,7 +38,9 @@ class ComputePropertyAtom : public Compute { double *vector; double **array; double *buf; - class AtomVecEllipsoid *avec; + class AtomVecEllipsoid *avec_ellipsoid; + class AtomVecLine *avec_line; + class AtomVecTri *avec_tri; typedef void (ComputePropertyAtom::*FnPtrPack)(int); FnPtrPack *pack_choice; // ptrs to pack functions @@ -101,6 +103,21 @@ class ComputePropertyAtom : public Compute { void pack_eradius(int); void pack_ervel(int); void pack_erforce(int); + void pack_end1x(int); + void pack_end1y(int); + void pack_end1z(int); + void pack_end2x(int); + void pack_end2y(int); + void pack_end2z(int); + void pack_corner1x(int); + void pack_corner1y(int); + void pack_corner1z(int); + void pack_corner2x(int); + void pack_corner2y(int); + void pack_corner2z(int); + void pack_corner3x(int); + void pack_corner3y(int); + void pack_corner3z(int); }; } diff --git a/src/compute_property_local.cpp b/src/compute_property_local.cpp index a0e615bc41..48ab145d8c 100644 --- a/src/compute_property_local.cpp +++ b/src/compute_property_local.cpp @@ -35,7 +35,7 @@ enum{NONE,NEIGH,PAIR,BOND,ANGLE,DIHEDRAL,IMPROPER}; ComputePropertyLocal::ComputePropertyLocal(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute property/local command"); + if (narg < 4) error->all(FLERR,"Illegal compute property/local command"); local_flag = 1; nvalues = narg - 3; @@ -53,127 +53,127 @@ ComputePropertyLocal::ComputePropertyLocal(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[iarg],"natom1") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_patom1; if (kindflag != NONE && kindflag != NEIGH) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = NEIGH; } else if (strcmp(arg[iarg],"natom2") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_patom2; if (kindflag != NONE && kindflag != NEIGH) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = NEIGH; } else if (strcmp(arg[iarg],"patom1") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_patom1; if (kindflag != NONE && kindflag != PAIR) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = PAIR; } else if (strcmp(arg[iarg],"patom2") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_patom2; if (kindflag != NONE && kindflag != PAIR) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = PAIR; } else if (strcmp(arg[iarg],"batom1") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_batom1; if (kindflag != NONE && kindflag != BOND) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = BOND; } else if (strcmp(arg[iarg],"batom2") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_batom2; if (kindflag != NONE && kindflag != BOND) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = BOND; } else if (strcmp(arg[iarg],"btype") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_btype; if (kindflag != NONE && kindflag != BOND) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = BOND; } else if (strcmp(arg[iarg],"aatom1") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_aatom1; if (kindflag != NONE && kindflag != ANGLE) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = ANGLE; } else if (strcmp(arg[iarg],"aatom2") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_aatom2; if (kindflag != NONE && kindflag != ANGLE) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = ANGLE; } else if (strcmp(arg[iarg],"aatom3") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_aatom3; if (kindflag != NONE && kindflag != ANGLE) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = ANGLE; } else if (strcmp(arg[iarg],"atype") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_atype; if (kindflag != NONE && kindflag != ANGLE) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = ANGLE; } else if (strcmp(arg[iarg],"datom1") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_datom1; if (kindflag != NONE && kindflag != DIHEDRAL) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = DIHEDRAL; } else if (strcmp(arg[iarg],"datom2") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_datom2; if (kindflag != NONE && kindflag != DIHEDRAL) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = DIHEDRAL; } else if (strcmp(arg[iarg],"datom3") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_datom3; if (kindflag != NONE && kindflag != DIHEDRAL) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = DIHEDRAL; } else if (strcmp(arg[iarg],"datom4") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_datom4; if (kindflag != NONE && kindflag != DIHEDRAL) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = DIHEDRAL; } else if (strcmp(arg[iarg],"dtype") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_dtype; if (kindflag != NONE && kindflag != DIHEDRAL) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = DIHEDRAL; } else if (strcmp(arg[iarg],"iatom1") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_iatom1; if (kindflag != NONE && kindflag != IMPROPER) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = IMPROPER; } else if (strcmp(arg[iarg],"iatom2") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_iatom2; if (kindflag != NONE && kindflag != IMPROPER) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = IMPROPER; } else if (strcmp(arg[iarg],"iatom3") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_iatom3; if (kindflag != NONE && kindflag != IMPROPER) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = IMPROPER; } else if (strcmp(arg[iarg],"iatom4") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_iatom4; if (kindflag != NONE && kindflag != IMPROPER) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = IMPROPER; } else if (strcmp(arg[iarg],"itype") == 0) { pack_choice[i] = &ComputePropertyLocal::pack_itype; if (kindflag != NONE && kindflag != IMPROPER) - error->all("Compute property/local cannot use these inputs together"); + error->all(FLERR,"Compute property/local cannot use these inputs together"); kindflag = IMPROPER; - } else error->all("Invalid keyword in compute property/local command"); + } else error->all(FLERR,"Invalid keyword in compute property/local command"); } // error check if (kindflag == BOND && atom->avec->bonds_allow == 0) - error->all("Compute property/local for property that isn't allocated"); + error->all(FLERR,"Compute property/local for property that isn't allocated"); if (kindflag == ANGLE && atom->avec->angles_allow == 0) - error->all("Compute property/local for property that isn't allocated"); + error->all(FLERR,"Compute property/local for property that isn't allocated"); if (kindflag == DIHEDRAL && atom->avec->dihedrals_allow == 0) - error->all("Compute property/local for property that isn't allocated"); + error->all(FLERR,"Compute property/local for property that isn't allocated"); if (kindflag == IMPROPER && atom->avec->impropers_allow == 0) - error->all("Compute property/local for property that isn't allocated"); + error->all(FLERR,"Compute property/local for property that isn't allocated"); nmax = 0; vector = NULL; @@ -197,9 +197,9 @@ void ComputePropertyLocal::init() { if (kindflag == NEIGH || kindflag == PAIR) { if (force->pair == NULL) - error->all("No pair style is defined for compute property/local"); + error->all(FLERR,"No pair style is defined for compute property/local"); if (force->pair->single_enable == 0) - error->all("Pair style does not support compute property/local"); + error->all(FLERR,"Pair style does not support compute property/local"); } // for NEIGH/PAIR need an occasional half neighbor list diff --git a/src/compute_property_molecule.cpp b/src/compute_property_molecule.cpp index 7ccf0208a1..65ec20ef03 100644 --- a/src/compute_property_molecule.cpp +++ b/src/compute_property_molecule.cpp @@ -26,10 +26,10 @@ ComputePropertyMolecule:: ComputePropertyMolecule(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute property/molecule command"); + if (narg < 4) error->all(FLERR,"Illegal compute property/molecule command"); if (atom->molecular == 0) - error->all("Compute property/molecule requires molecular atom style"); + error->all(FLERR,"Compute property/molecule requires molecular atom style"); nvalues = narg - 3; @@ -43,7 +43,7 @@ ComputePropertyMolecule(LAMMPS *lmp, int narg, char **arg) : pack_choice[i] = &ComputePropertyMolecule::pack_mol; else if (strcmp(arg[iarg],"count") == 0) pack_choice[i] = &ComputePropertyMolecule::pack_count; - else error->all("Invalid keyword in compute property/molecule command"); + else error->all(FLERR,"Invalid keyword in compute property/molecule command"); } // setup molecule-based data @@ -93,7 +93,7 @@ void ComputePropertyMolecule::init() { int ntmp = molecules_in_group(idlo,idhi); if (ntmp != nmolecules) - error->all("Molecule count changed in compute property/molecule"); + error->all(FLERR,"Molecule count changed in compute property/molecule"); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_rdf.cpp b/src/compute_rdf.cpp index 96a11ab273..31776f9473 100644 --- a/src/compute_rdf.cpp +++ b/src/compute_rdf.cpp @@ -28,23 +28,25 @@ #include "neigh_request.h" #include "neigh_list.h" #include "group.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; /* ---------------------------------------------------------------------- */ ComputeRDF::ComputeRDF(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4 || (narg-4) % 2) error->all("Illegal compute rdf command"); + if (narg < 4 || (narg-4) % 2) error->all(FLERR,"Illegal compute rdf command"); array_flag = 1; extarray = 0; nbin = atoi(arg[3]); - if (nbin < 1) error->all("Illegal compute rdf command"); + if (nbin < 1) error->all(FLERR,"Illegal compute rdf command"); if (narg == 4) npairs = 1; else npairs = (narg-4)/2; @@ -71,7 +73,7 @@ ComputeRDF::ComputeRDF(LAMMPS *lmp, int narg, char **arg) : force->bounds(arg[iarg],atom->ntypes,ilo[npairs],ihi[npairs]); force->bounds(arg[iarg+1],atom->ntypes,jlo[npairs],jhi[npairs]); if (ilo[npairs] > ihi[npairs] || jlo[npairs] > jhi[npairs]) - error->all("Illegal compute rdf command"); + error->all(FLERR,"Illegal compute rdf command"); npairs++; iarg += 2; } @@ -120,7 +122,7 @@ void ComputeRDF::init() int i,m; if (force->pair) delr = force->pair->cutforce / nbin; - else error->all("Compute rdf requires a pair style be defined"); + else error->all(FLERR,"Compute rdf requires a pair style be defined"); delrinv = 1.0/delr; // set 1st column of output array to bin coords @@ -267,10 +269,9 @@ void ComputeRDF::compute_array() // assuming J atoms are at uniform density double constant,nideal,gr,ncoord,rlower,rupper; - double PI = 4.0*atan(1.0); if (domain->dimension == 3) { - constant = 4.0*PI / (3.0*domain->xprd*domain->yprd*domain->zprd); + constant = 4.0*MY_PI / (3.0*domain->xprd*domain->yprd*domain->zprd); for (m = 0; m < npairs; m++) { ncoord = 0.0; @@ -289,7 +290,7 @@ void ComputeRDF::compute_array() } } else { - constant = PI / (domain->xprd*domain->yprd); + constant = MY_PI / (domain->xprd*domain->yprd); for (m = 0; m < npairs; m++) { ncoord = 0.0; diff --git a/src/compute_reduce.cpp b/src/compute_reduce.cpp index 8764afe75b..3872661a67 100644 --- a/src/compute_reduce.cpp +++ b/src/compute_reduce.cpp @@ -39,8 +39,6 @@ enum{PERATOM,LOCAL}; #define INVOKED_PERATOM 8 #define INVOKED_LOCAL 16 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) #define BIG 1.0e20 /* ---------------------------------------------------------------------- */ @@ -50,14 +48,14 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : { int iarg; if (strcmp(style,"reduce") == 0) { - if (narg < 5) error->all("Illegal compute reduce command"); + if (narg < 5) error->all(FLERR,"Illegal compute reduce command"); idregion = NULL; iarg = 3; } else if (strcmp(style,"reduce/region") == 0) { - if (narg < 6) error->all("Illegal compute reduce/region command"); + if (narg < 6) error->all(FLERR,"Illegal compute reduce/region command"); iregion = domain->find_region(arg[3]); if (iregion == -1) - error->all("Region ID for compute reduce/region does not exist"); + error->all(FLERR,"Region ID for compute reduce/region does not exist"); int n = strlen(arg[3]) + 1; idregion = new char[n]; strcpy(idregion,arg[3]); @@ -68,7 +66,7 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[iarg],"min") == 0) mode = MINN; else if (strcmp(arg[iarg],"max") == 0) mode = MAXX; else if (strcmp(arg[iarg],"ave") == 0) mode = AVE; - else error->all("Illegal compute reduce command"); + else error->all(FLERR,"Illegal compute reduce command"); iarg++; MPI_Comm_rank(world,&me); @@ -129,7 +127,7 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Illegal compute reduce command"); + error->all(FLERR,"Illegal compute reduce command"); argindex[nvalues] = atoi(ptr+1); *ptr = '\0'; } else argindex[nvalues] = 0; @@ -152,19 +150,19 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"replace") == 0) { - if (iarg+3 > narg) error->all("Illegal compute reduce command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal compute reduce command"); if (mode != MINN && mode != MAXX) - error->all("Compute reduce replace requires min or max mode"); + error->all(FLERR,"Compute reduce replace requires min or max mode"); int col1 = atoi(arg[iarg+1]) - 1; int col2 = atoi(arg[iarg+2]) - 1; if (col1 < 0 || col1 >= nvalues || col2 < 0 || col2 >= nvalues) - error->all("Illegal compute reduce command"); - if (col1 == col2) error->all("Illegal compute reduce command"); + error->all(FLERR,"Illegal compute reduce command"); + if (col1 == col2) error->all(FLERR,"Illegal compute reduce command"); if (replace[col1] >= 0 || replace[col2] >= 0) - error->all("Invalid replace values in compute reduce"); + error->all(FLERR,"Invalid replace values in compute reduce"); replace[col1] = col2; iarg += 3; - } else error->all("Illegal compute reduce command"); + } else error->all(FLERR,"Illegal compute reduce command"); } // delete replace if not set @@ -186,69 +184,69 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : else if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for compute reduce does not exist"); + error->all(FLERR,"Compute ID for compute reduce does not exist"); if (modify->compute[icompute]->peratom_flag) { flavor[i] = PERATOM; if (argindex[i] == 0 && modify->compute[icompute]->size_peratom_cols != 0) - error->all("Compute reduce compute does not " + error->all(FLERR,"Compute reduce compute does not " "calculate a per-atom vector"); if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) - error->all("Compute reduce compute does not " + error->all(FLERR,"Compute reduce compute does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) - error->all("Compute reduce compute array is accessed out-of-range"); + error->all(FLERR,"Compute reduce compute array is accessed out-of-range"); } else if (modify->compute[icompute]->local_flag) { flavor[i] = LOCAL; if (argindex[i] == 0 && modify->compute[icompute]->size_local_cols != 0) - error->all("Compute reduce compute does not " + error->all(FLERR,"Compute reduce compute does not " "calculate a local vector"); if (argindex[i] && modify->compute[icompute]->size_local_cols == 0) - error->all("Compute reduce compute does not " + error->all(FLERR,"Compute reduce compute does not " "calculate a local array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_local_cols) - error->all("Compute reduce compute array is accessed out-of-range"); - } else error->all("Compute reduce compute calculates global values"); + error->all(FLERR,"Compute reduce compute array is accessed out-of-range"); + } else error->all(FLERR,"Compute reduce compute calculates global values"); } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for compute reduce does not exist"); + error->all(FLERR,"Fix ID for compute reduce does not exist"); if (modify->fix[ifix]->peratom_flag) { flavor[i] = PERATOM; if (argindex[i] == 0 && modify->fix[ifix]->size_peratom_cols != 0) - error->all("Compute reduce fix does not " + error->all(FLERR,"Compute reduce fix does not " "calculate a per-atom vector"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) - error->all("Compute reduce fix does not " + error->all(FLERR,"Compute reduce fix does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) - error->all("Compute reduce fix array is accessed out-of-range"); + error->all(FLERR,"Compute reduce fix array is accessed out-of-range"); } else if (modify->fix[ifix]->local_flag) { flavor[i] = LOCAL; if (argindex[i] == 0 && modify->fix[ifix]->size_local_cols != 0) - error->all("Compute reduce fix does not " + error->all(FLERR,"Compute reduce fix does not " "calculate a local vector"); if (argindex[i] && modify->fix[ifix]->size_local_cols == 0) - error->all("Compute reduce fix does not " + error->all(FLERR,"Compute reduce fix does not " "calculate a local array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_local_cols) - error->all("Compute reduce fix array is accessed out-of-range"); - } else error->all("Compute reduce fix calculates global values"); + error->all(FLERR,"Compute reduce fix array is accessed out-of-range"); + } else error->all(FLERR,"Compute reduce fix calculates global values"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for compute reduce does not exist"); + error->all(FLERR,"Variable name for compute reduce does not exist"); if (input->variable->atomstyle(ivariable) == 0) - error->all("Compute reduce variable is not atom-style variable"); + error->all(FLERR,"Compute reduce variable is not atom-style variable"); flavor[i] = PERATOM; } } @@ -307,19 +305,19 @@ void ComputeReduce::init() if (which[m] == COMPUTE) { int icompute = modify->find_compute(ids[m]); if (icompute < 0) - error->all("Compute ID for compute reduce does not exist"); + error->all(FLERR,"Compute ID for compute reduce does not exist"); value2index[m] = icompute; } else if (which[m] == FIX) { int ifix = modify->find_fix(ids[m]); if (ifix < 0) - error->all("Fix ID for compute reduce does not exist"); + error->all(FLERR,"Fix ID for compute reduce does not exist"); value2index[m] = ifix; } else if (which[m] == VARIABLE) { int ivariable = input->variable->find(ids[m]); if (ivariable < 0) - error->all("Variable name for compute reduce does not exist"); + error->all(FLERR,"Variable name for compute reduce does not exist"); value2index[m] = ivariable; } else value2index[m] = -1; @@ -330,7 +328,7 @@ void ComputeReduce::init() if (idregion) { iregion = domain->find_region(idregion); if (iregion == -1) - error->all("Region ID for compute reduce/region does not exist"); + error->all(FLERR,"Region ID for compute reduce/region does not exist"); } } @@ -531,7 +529,7 @@ double ComputeReduce::compute_one(int m, int flag) } else if (which[m] == FIX) { if (update->ntimestep % modify->fix[vidx]->peratom_freq) - error->all("Fix used in compute reduce not computed at compatible time"); + error->all(FLERR,"Fix used in compute reduce not computed at compatible time"); Fix *fix = modify->fix[vidx]; if (flavor[m] == PERATOM) { diff --git a/src/compute_reduce_region.cpp b/src/compute_reduce_region.cpp index eff9416b1c..648b90e1d8 100644 --- a/src/compute_reduce_region.cpp +++ b/src/compute_reduce_region.cpp @@ -156,7 +156,7 @@ double ComputeReduceRegion::compute_one(int m, int flag) } else if (which[m] == FIX) { if (update->ntimestep % modify->fix[n]->peratom_freq) - error->all("Fix used in compute reduce not computed at compatible time"); + error->all(FLERR,"Fix used in compute reduce not computed at compatible time"); Fix *fix = modify->fix[n]; if (flavor[m] == PERATOM) { diff --git a/src/compute_slice.cpp b/src/compute_slice.cpp index 51e7747e36..85e9230499 100644 --- a/src/compute_slice.cpp +++ b/src/compute_slice.cpp @@ -33,7 +33,7 @@ enum{COMPUTE,FIX}; ComputeSlice::ComputeSlice(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 7) error->all("Illegal compute slice command"); + if (narg < 7) error->all(FLERR,"Illegal compute slice command"); MPI_Comm_rank(world,&me); @@ -42,7 +42,7 @@ ComputeSlice::ComputeSlice(LAMMPS *lmp, int narg, char **arg) : nskip = atoi(arg[5]); if (nstart < 1 || nstop < nstart || nskip < 1) - error->all("Illegal compute slice command"); + error->all(FLERR,"Illegal compute slice command"); // parse remaining values until one isn't recognized @@ -65,7 +65,7 @@ ComputeSlice::ComputeSlice(LAMMPS *lmp, int narg, char **arg) : char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Illegal compute slice command"); + error->all(FLERR,"Illegal compute slice command"); argindex[nvalues] = atoi(ptr+1); *ptr = '\0'; } else argindex[nvalues] = 0; @@ -76,7 +76,7 @@ ComputeSlice::ComputeSlice(LAMMPS *lmp, int narg, char **arg) : nvalues++; delete [] suffix; - } else error->all("Illegal compute slice command"); + } else error->all(FLERR,"Illegal compute slice command"); } // setup and error check @@ -85,38 +85,38 @@ ComputeSlice::ComputeSlice(LAMMPS *lmp, int narg, char **arg) : if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for compute slice does not exist"); + error->all(FLERR,"Compute ID for compute slice does not exist"); if (modify->compute[icompute]->vector_flag) { if (argindex[i]) - error->all("Compute slice compute does not calculate a global array"); + error->all(FLERR,"Compute slice compute does not calculate a global array"); if (nstop > modify->compute[icompute]->size_vector) - error->all("Compute slice compute vector is accessed out-of-range"); + error->all(FLERR,"Compute slice compute vector is accessed out-of-range"); } else if (modify->compute[icompute]->array_flag) { if (argindex[i] == 0) - error->all("Compute slice compute does not calculate a global vector"); + error->all(FLERR,"Compute slice compute does not calculate a global vector"); if (argindex[i] > modify->compute[icompute]->size_array_cols) - error->all("Compute slice compute array is accessed out-of-range"); + error->all(FLERR,"Compute slice compute array is accessed out-of-range"); if (nstop > modify->compute[icompute]->size_array_rows) - error->all("Compute slice compute array is accessed out-of-range"); - } else error->all("Compute slice compute does not calculate " + error->all(FLERR,"Compute slice compute array is accessed out-of-range"); + } else error->all(FLERR,"Compute slice compute does not calculate " "global vector or array"); } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for compute slice does not exist"); + error->all(FLERR,"Fix ID for compute slice does not exist"); if (modify->fix[ifix]->vector_flag) { if (argindex[i]) - error->all("Compute slice fix does not calculate a global array"); + error->all(FLERR,"Compute slice fix does not calculate a global array"); if (nstop > modify->fix[ifix]->size_vector) - error->all("Compute slice fix vector is accessed out-of-range"); + error->all(FLERR,"Compute slice fix vector is accessed out-of-range"); } else if (modify->fix[ifix]->array_flag) { if (argindex[i] == 0) - error->all("Compute slice fix does not calculate a global vector"); + error->all(FLERR,"Compute slice fix does not calculate a global vector"); if (argindex[i] > modify->fix[ifix]->size_array_cols) - error->all("Compute slice fix array is accessed out-of-range"); + error->all(FLERR,"Compute slice fix array is accessed out-of-range"); if (nstop > modify->fix[ifix]->size_array_rows) - error->all("Compute slice fix array is accessed out-of-range"); - } else error->all("Compute slice fix does not calculate " + error->all(FLERR,"Compute slice fix array is accessed out-of-range"); + } else error->all(FLERR,"Compute slice fix does not calculate " "global vector or array"); } } @@ -217,12 +217,12 @@ void ComputeSlice::init() if (which[m] == COMPUTE) { int icompute = modify->find_compute(ids[m]); if (icompute < 0) - error->all("Compute ID for compute slice does not exist"); + error->all(FLERR,"Compute ID for compute slice does not exist"); value2index[m] = icompute; } else if (which[m] == FIX) { int ifix = modify->find_fix(ids[m]); if (ifix < 0) - error->all("Fix ID for compute slice does not exist"); + error->all(FLERR,"Fix ID for compute slice does not exist"); value2index[m] = ifix; } } @@ -291,7 +291,7 @@ void ComputeSlice::extract_one(int m, double *vec, int stride) } else if (which[m] == FIX) { if (update->ntimestep % modify->fix[value2index[m]]->global_freq) - error->all("Fix used in compute slice not computed at compatible time"); + error->all(FLERR,"Fix used in compute slice not computed at compatible time"); Fix *fix = modify->fix[value2index[m]]; if (argindex[m] == 0) { diff --git a/src/compute_stress_atom.cpp b/src/compute_stress_atom.cpp index b17d4fc6a2..5560221225 100644 --- a/src/compute_stress_atom.cpp +++ b/src/compute_stress_atom.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 3) error->all("Illegal compute stress/atom command"); + if (narg < 3) error->all(FLERR,"Illegal compute stress/atom command"); peratom_flag = 1; size_peratom_cols = 6; @@ -66,7 +66,7 @@ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : pairflag = 1; bondflag = angleflag = dihedralflag = improperflag = 1; fixflag = 1; - } else error->all("Illegal compute stress/atom command"); + } else error->all(FLERR,"Illegal compute stress/atom command"); iarg++; } } @@ -91,7 +91,7 @@ void ComputeStressAtom::compute_peratom() invoked_peratom = update->ntimestep; if (update->vflag_atom != invoked_peratom) - error->all("Per-atom virial was not tallied on needed timestep"); + 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 diff --git a/src/compute_temp.cpp b/src/compute_temp.cpp index 5ba16633f4..ab63a8c9f6 100644 --- a/src/compute_temp.cpp +++ b/src/compute_temp.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; ComputeTemp::ComputeTemp(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute temp command"); + if (narg != 3) error->all(FLERR,"Illegal compute temp command"); scalar_flag = vector_flag = 1; size_vector = 6; diff --git a/src/compute_temp_com.cpp b/src/compute_temp_com.cpp index 22cfab7610..d344d3d214 100644 --- a/src/compute_temp_com.cpp +++ b/src/compute_temp_com.cpp @@ -27,15 +27,12 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ ComputeTempCOM::ComputeTempCOM(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute temp command"); + if (narg != 3) error->all(FLERR,"Illegal compute temp command"); scalar_flag = vector_flag = 1; size_vector = 6; diff --git a/src/compute_temp_deform.cpp b/src/compute_temp_deform.cpp index 665f904fdb..87fcb02eae 100644 --- a/src/compute_temp_deform.cpp +++ b/src/compute_temp_deform.cpp @@ -39,7 +39,7 @@ enum{NO_REMAP,X_REMAP,V_REMAP}; // same as fix_deform.cpp ComputeTempDeform::ComputeTempDeform(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all("Illegal compute temp/deform command"); + if (narg != 3) error->all(FLERR,"Illegal compute temp/deform command"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -78,12 +78,12 @@ void ComputeTempDeform::init() if (strcmp(modify->fix[i]->style,"deform") == 0) { if (((FixDeform *) modify->fix[i])->remapflag == X_REMAP && comm->me == 0) - error->warning("Using compute temp/deform with inconsistent " + error->warning(FLERR,"Using compute temp/deform with inconsistent " "fix deform remap option"); break; } if (i == modify->nfix && comm->me == 0) - error->warning("Using compute temp/deform with no fix deform defined"); + error->warning(FLERR,"Using compute temp/deform with no fix deform defined"); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_temp_partial.cpp b/src/compute_temp_partial.cpp index 96fd04037c..bfb2088e56 100644 --- a/src/compute_temp_partial.cpp +++ b/src/compute_temp_partial.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; ComputeTempPartial::ComputeTempPartial(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 6) error->all("Illegal compute temp/partial command"); + if (narg != 6) error->all(FLERR,"Illegal compute temp/partial command"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -44,7 +44,7 @@ ComputeTempPartial::ComputeTempPartial(LAMMPS *lmp, int narg, char **arg) : yflag = atoi(arg[4]); zflag = atoi(arg[5]); if (zflag && domain->dimension == 2) - error->all("Compute temp/partial cannot use vz for 2d systemx"); + error->all(FLERR,"Compute temp/partial cannot use vz for 2d systemx"); maxbias = 0; vbiasall = NULL; diff --git a/src/compute_temp_profile.cpp b/src/compute_temp_profile.cpp index 399b897df8..a242aba339 100644 --- a/src/compute_temp_profile.cpp +++ b/src/compute_temp_profile.cpp @@ -27,15 +27,12 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ ComputeTempProfile::ComputeTempProfile(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 7) error->all("Illegal compute temp/profile command"); + if (narg < 7) error->all(FLERR,"Illegal compute temp/profile command"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -48,7 +45,7 @@ ComputeTempProfile::ComputeTempProfile(LAMMPS *lmp, int narg, char **arg) : yflag = atoi(arg[4]); zflag = atoi(arg[5]); if (zflag && domain->dimension == 2) - error->all("Compute temp/profile cannot use vz for 2d systemx"); + error->all(FLERR,"Compute temp/profile cannot use vz for 2d systemx"); ncount = 0; ivx = ivy = ivz = 0; @@ -59,43 +56,43 @@ ComputeTempProfile::ComputeTempProfile(LAMMPS *lmp, int narg, char **arg) : nbinx = nbiny = nbinz = 1; if (strcmp(arg[6],"x") == 0) { - if (narg != 8) error->all("Illegal compute temp/profile command"); + if (narg != 8) error->all(FLERR,"Illegal compute temp/profile command"); nbinx = atoi(arg[7]); } else if (strcmp(arg[6],"y") == 0) { - if (narg != 8) error->all("Illegal compute temp/profile command"); + if (narg != 8) error->all(FLERR,"Illegal compute temp/profile command"); nbiny = atoi(arg[7]); } else if (strcmp(arg[6],"z") == 0) { - if (narg != 8) error->all("Illegal compute temp/profile command"); + if (narg != 8) error->all(FLERR,"Illegal compute temp/profile command"); if (domain->dimension == 2) - error->all("Compute temp/profile cannot bin z for 2d systems"); + error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems"); nbinz = atoi(arg[7]); } else if (strcmp(arg[6],"xy") == 0) { - if (narg != 9) error->all("Illegal compute temp/profile command"); + if (narg != 9) error->all(FLERR,"Illegal compute temp/profile command"); nbinx = atoi(arg[7]); nbiny = atoi(arg[8]); } else if (strcmp(arg[6],"yz") == 0) { - if (narg != 9) error->all("Illegal compute temp/profile command"); + if (narg != 9) error->all(FLERR,"Illegal compute temp/profile command"); if (domain->dimension == 2) - error->all("Compute temp/profile cannot bin z for 2d systems"); + error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems"); nbiny = atoi(arg[7]); nbinz = atoi(arg[8]); } else if (strcmp(arg[6],"xz") == 0) { - if (narg != 9) error->all("Illegal compute temp/profile command"); + if (narg != 9) error->all(FLERR,"Illegal compute temp/profile command"); if (domain->dimension == 2) - error->all("Compute temp/profile cannot bin z for 2d systems"); + error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems"); nbinx = atoi(arg[7]); nbinz = atoi(arg[8]); } else if (strcmp(arg[6],"xyz") == 0) { - if (narg != 10) error->all("Illegal compute temp/profile command"); + if (narg != 10) error->all(FLERR,"Illegal compute temp/profile command"); if (domain->dimension == 2) - error->all("Compute temp/profile cannot bin z for 2d systems"); + error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems"); nbinx = atoi(arg[7]); nbiny = atoi(arg[8]); nbinz = atoi(arg[9]); - } else error->all("Illegal compute temp/profile command"); + } else error->all(FLERR,"Illegal compute temp/profile command"); nbins = nbinx*nbiny*nbinz; - if (nbins <= 0) error->all("Illegal compute temp/profile command"); + if (nbins <= 0) error->all(FLERR,"Illegal compute temp/profile command"); memory->create(vbin,nbins,ncount+1,"temp/profile:vbin"); memory->create(binave,nbins,ncount+1,"temp/profile:binave"); diff --git a/src/compute_temp_ramp.cpp b/src/compute_temp_ramp.cpp index 1690e1224c..135a3eea6d 100644 --- a/src/compute_temp_ramp.cpp +++ b/src/compute_temp_ramp.cpp @@ -28,15 +28,12 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ ComputeTempRamp::ComputeTempRamp(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 9) error->all("Illegal compute temp command"); + if (narg < 9) error->all(FLERR,"Illegal compute temp command"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -52,18 +49,18 @@ ComputeTempRamp::ComputeTempRamp(LAMMPS *lmp, int narg, char **arg) : int iarg = 9; while (iarg < narg) { if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal compute temp/ramp command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/ramp command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal compute temp/ramp command"); + else error->all(FLERR,"Illegal compute temp/ramp command"); iarg += 2; - } else error->all("Illegal compute temp/ramp command"); + } else error->all(FLERR,"Illegal compute temp/ramp command"); } // setup scaling if (scaleflag && domain->lattice == NULL) - error->all("Use of compute temp/ramp with undefined lattice"); + error->all(FLERR,"Use of compute temp/ramp with undefined lattice"); if (scaleflag) { xscale = domain->lattice->xlattice; @@ -77,7 +74,7 @@ ComputeTempRamp::ComputeTempRamp(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[3],"vx") == 0) v_dim = 0; else if (strcmp(arg[3],"vy") == 0) v_dim = 1; else if (strcmp(arg[3],"vz") == 0) v_dim = 2; - else error->all("Illegal compute temp/ramp command"); + else error->all(FLERR,"Illegal compute temp/ramp command"); if (v_dim == 0) { v_lo = xscale*atof(arg[4]); @@ -93,7 +90,7 @@ ComputeTempRamp::ComputeTempRamp(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[6],"x") == 0) coord_dim = 0; else if (strcmp(arg[6],"y") == 0) coord_dim = 1; else if (strcmp(arg[6],"z") == 0) coord_dim = 2; - else error->all("Illegal compute temp/ramp command"); + else error->all(FLERR,"Illegal compute temp/ramp command"); if (coord_dim == 0) { coord_lo = xscale*atof(arg[7]); diff --git a/src/compute_temp_region.cpp b/src/compute_temp_region.cpp index b43af45de3..964f162d9f 100644 --- a/src/compute_temp_region.cpp +++ b/src/compute_temp_region.cpp @@ -30,11 +30,11 @@ using namespace LAMMPS_NS; ComputeTempRegion::ComputeTempRegion(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 4) error->all("Illegal compute temp/region command"); + if (narg != 4) error->all(FLERR,"Illegal compute temp/region command"); iregion = domain->find_region(arg[3]); if (iregion == -1) - error->all("Region ID for compute temp/region does not exist"); + error->all(FLERR,"Region ID for compute temp/region does not exist"); int n = strlen(arg[3]) + 1; idregion = new char[n]; strcpy(idregion,arg[3]); @@ -68,7 +68,7 @@ void ComputeTempRegion::init() iregion = domain->find_region(idregion); if (iregion == -1) - error->all("Region ID for compute temp/region does not exist"); + error->all(FLERR,"Region ID for compute temp/region does not exist"); dof = 0.0; } diff --git a/src/compute_temp_sphere.cpp b/src/compute_temp_sphere.cpp index 246d58bae4..ed4a250085 100644 --- a/src/compute_temp_sphere.cpp +++ b/src/compute_temp_sphere.cpp @@ -35,7 +35,7 @@ enum{ROTATE,ALL}; ComputeTempSphere::ComputeTempSphere(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 3) error->all("Illegal compute temp/sphere command"); + if (narg < 3) error->all(FLERR,"Illegal compute temp/sphere command"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -50,19 +50,19 @@ ComputeTempSphere::ComputeTempSphere(LAMMPS *lmp, int narg, char **arg) : int iarg = 3; while (iarg < narg) { if (strcmp(arg[iarg],"bias") == 0) { - if (iarg+2 > narg) error->all("Illegal compute temp/sphere command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/sphere command"); tempbias = 1; int n = strlen(arg[iarg+1]) + 1; id_bias = new char[n]; strcpy(id_bias,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"dof") == 0) { - if (iarg+2 > narg) error->all("Illegal compute temp/sphere command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/sphere command"); if (strcmp(arg[iarg+1],"rotate") == 0) mode = ROTATE; else if (strcmp(arg[iarg+1],"all") == 0) mode = ALL; - else error->all("Illegal compute temp/sphere command"); + else error->all(FLERR,"Illegal compute temp/sphere command"); iarg += 2; - } else error->all("Illegal compute temp/sphere command"); + } else error->all(FLERR,"Illegal compute temp/sphere command"); } vector = new double[6]; @@ -70,7 +70,7 @@ ComputeTempSphere::ComputeTempSphere(LAMMPS *lmp, int narg, char **arg) : // error checks if (!atom->sphere_flag) - error->all("Compute temp/sphere requires atom style sphere"); + error->all(FLERR,"Compute temp/sphere requires atom style sphere"); } /* ---------------------------------------------------------------------- */ @@ -87,14 +87,14 @@ void ComputeTempSphere::init() { if (tempbias) { int i = modify->find_compute(id_bias); - if (i < 0) error->all("Could not find compute ID for temperature bias"); + if (i < 0) error->all(FLERR,"Could not find compute ID for temperature bias"); tbias = modify->compute[i]; if (tbias->tempflag == 0) - error->all("Bias compute does not calculate temperature"); + error->all(FLERR,"Bias compute does not calculate temperature"); if (tbias->tempbias == 0) - error->all("Bias compute does not calculate a velocity bias"); + error->all(FLERR,"Bias compute does not calculate a velocity bias"); if (tbias->igroup != igroup) - error->all("Bias compute group does not match compute group"); + error->all(FLERR,"Bias compute group does not match compute group"); tbias->init(); if (strcmp(tbias->style,"temp/region") == 0) tempbias = 2; else tempbias = 1; diff --git a/src/compute_ti.cpp b/src/compute_ti.cpp index fd2a83ae0e..035fb35767 100644 --- a/src/compute_ti.cpp +++ b/src/compute_ti.cpp @@ -37,7 +37,7 @@ enum{PAIR,TAIL,KSPACE}; ComputeTI::ComputeTI(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 4) error->all("Illegal compute ti command"); + if (narg < 4) error->all(FLERR,"Illegal compute ti command"); peflag = 1; scalar_flag = 1; @@ -47,7 +47,7 @@ ComputeTI::ComputeTI(LAMMPS *lmp, int narg, char **arg) : // terms come in triplets nterms = (narg-3) / 3; - if (narg != 3*nterms + 3) error->all("Illegal compute ti command"); + if (narg != 3*nterms + 3) error->all(FLERR,"Illegal compute ti command"); which = new int[nterms]; ivar1 = new int[nterms]; @@ -65,7 +65,7 @@ ComputeTI::ComputeTI(LAMMPS *lmp, int narg, char **arg) : int iarg = 3; while (iarg < narg) { - if (iarg+3 > narg) error->all("Illegal compute ti command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal compute ti command"); if (strcmp(arg[iarg],"kspace") == 0) which[nterms] = KSPACE; else if (strcmp(arg[iarg],"tail") == 0) which[nterms] = TAIL; else { @@ -79,12 +79,12 @@ ComputeTI::ComputeTI(LAMMPS *lmp, int narg, char **arg) : int n = strlen(&arg[iarg+1][2]) + 1; var1[nterms] = new char[n]; strcpy(var1[nterms],&arg[iarg+1][2]); - } else error->all("Illegal compute ti command"); + } else error->all(FLERR,"Illegal compute ti command"); if (strstr(arg[iarg+2],"v_") == arg[iarg+2]) { int n = strlen(&arg[iarg+2][2]) + 1; var2[nterms] = new char[n]; strcpy(var2[nterms],&arg[iarg+2][2]); - } else error->all("Illegal compute ti command"); + } else error->all(FLERR,"Illegal compute ti command"); nterms++; iarg += 3; @@ -119,23 +119,23 @@ void ComputeTI::init() ivar1[m] = input->variable->find(var1[m]); ivar2[m] = input->variable->find(var2[m]); if (ivar1[m] < 0 || ivar2 < 0) - error->all("Variable name for compute ti does not exist"); + error->all(FLERR,"Variable name for compute ti does not exist"); if (!input->variable->equalstyle(ivar1[m]) || !input->variable->equalstyle(ivar2[m])) - error->all("Variable for compute ti is invalid style"); + error->all(FLERR,"Variable for compute ti is invalid style"); if (which[m] == PAIR) { pptr[m] = force->pair_match(pstyle[m],1); - if (pptr[m] == NULL) error->all("Compute ti pair style does not exist"); + if (pptr[m] == NULL) error->all(FLERR,"Compute ti pair style does not exist"); } else if (which[m] == TAIL) { if (force->pair == NULL || force->pair->tail_flag == 0) - error->all("Compute ti tail when pair style does not " + error->all(FLERR,"Compute ti tail when pair style does not " "compute tail corrections"); } else if (which[m] == KSPACE) { if (force->kspace == NULL) - error->all("Compute ti kspace style does not exist"); + error->all(FLERR,"Compute ti kspace style does not exist"); } } } @@ -148,7 +148,7 @@ double ComputeTI::compute_scalar() invoked_scalar = update->ntimestep; if (update->eflag_global != invoked_scalar) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); double dUdl = 0.0; diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp index 1f7d3ef655..c1cdc6d83d 100644 --- a/src/create_atoms.cpp +++ b/src/create_atoms.cpp @@ -34,9 +34,6 @@ using namespace LAMMPS_NS; enum{BOX,REGION,SINGLE,RANDOM}; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ CreateAtoms::CreateAtoms(LAMMPS *lmp) : Pointers(lmp) {} @@ -46,17 +43,17 @@ CreateAtoms::CreateAtoms(LAMMPS *lmp) : Pointers(lmp) {} void CreateAtoms::command(int narg, char **arg) { if (domain->box_exist == 0) - error->all("Create_atoms command before simulation box is defined"); + error->all(FLERR,"Create_atoms command before simulation box is defined"); if (modify->nfix_restart_peratom) - error->all("Cannot create_atoms after " + error->all(FLERR,"Cannot create_atoms after " "reading restart file with per-atom info"); // parse arguments - if (narg < 2) error->all("Illegal create_atoms command"); + if (narg < 2) error->all(FLERR,"Illegal create_atoms command"); itype = atoi(arg[0]); if (itype <= 0 || itype > atom->ntypes) - error->all("Invalid atom type in create_atoms command"); + error->all(FLERR,"Invalid atom type in create_atoms command"); int iarg; if (strcmp(arg[1],"box") == 0) { @@ -64,29 +61,29 @@ void CreateAtoms::command(int narg, char **arg) iarg = 2; } else if (strcmp(arg[1],"region") == 0) { style = REGION; - if (narg < 3) error->all("Illegal create_atoms command"); + if (narg < 3) error->all(FLERR,"Illegal create_atoms command"); nregion = domain->find_region(arg[2]); - if (nregion == -1) error->all("Create_atoms region ID does not exist"); + if (nregion == -1) error->all(FLERR,"Create_atoms region ID does not exist"); iarg = 3;; } else if (strcmp(arg[1],"single") == 0) { style = SINGLE; - if (narg < 5) error->all("Illegal create_atoms command"); + if (narg < 5) error->all(FLERR,"Illegal create_atoms command"); xone[0] = atof(arg[2]); xone[1] = atof(arg[3]); xone[2] = atof(arg[4]); iarg = 5; } else if (strcmp(arg[1],"random") == 0) { style = RANDOM; - if (narg < 5) error->all("Illegal create_atoms command"); + if (narg < 5) error->all(FLERR,"Illegal create_atoms command"); nrandom = atoi(arg[2]); seed = atoi(arg[3]); if (strcmp(arg[4],"NULL") == 0) nregion = -1; else { nregion = domain->find_region(arg[4]); - if (nregion == -1) error->all("Create_atoms region ID does not exist"); + if (nregion == -1) error->all(FLERR,"Create_atoms region ID does not exist"); } iarg = 5; - } else error->all("Illegal create_atoms command"); + } else error->all(FLERR,"Illegal create_atoms command"); // process optional keywords @@ -100,30 +97,30 @@ void CreateAtoms::command(int narg, char **arg) while (iarg < narg) { if (strcmp(arg[iarg],"basis") == 0) { - if (iarg+3 > narg) error->all("Illegal create_atoms command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal create_atoms command"); if (domain->lattice == NULL) - error->all("Cannot create atoms with undefined lattice"); + error->all(FLERR,"Cannot create atoms with undefined lattice"); int ibasis = atoi(arg[iarg+1]); itype = atoi(arg[iarg+2]); if (ibasis <= 0 || ibasis > nbasis || itype <= 0 || itype > atom->ntypes) - error->all("Illegal create_atoms command"); + error->all(FLERR,"Illegal create_atoms command"); basistype[ibasis-1] = itype; iarg += 3; } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal create_atoms command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal create_atoms command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal create_atoms command"); + else error->all(FLERR,"Illegal create_atoms command"); iarg += 2; - } else error->all("Illegal create_atoms command"); + } else error->all(FLERR,"Illegal create_atoms command"); } // error checks if (style == RANDOM) { - if (nrandom < 0) error->all("Illegal create_atoms command"); - if (seed <= 0) error->all("Illegal create_atoms command"); + if (nrandom < 0) error->all(FLERR,"Illegal create_atoms command"); + if (seed <= 0) error->all(FLERR,"Illegal create_atoms command"); } // demand lattice be defined @@ -134,10 +131,10 @@ void CreateAtoms::command(int narg, char **arg) if (style == BOX || style == REGION) { if (domain->lattice == NULL) - error->all("Cannot create atoms with undefined lattice"); + error->all(FLERR,"Cannot create atoms with undefined lattice"); } else if (scaleflag == 1) { if (domain->lattice == NULL) - error->all("Cannot create atoms with undefined lattice"); + error->all(FLERR,"Cannot create atoms with undefined lattice"); xone[0] *= domain->lattice->xlattice; xone[1] *= domain->lattice->ylattice; xone[2] *= domain->lattice->zlattice; @@ -171,7 +168,7 @@ void CreateAtoms::command(int narg, char **arg) bigint nblocal = atom->nlocal; MPI_Allreduce(&nblocal,&atom->natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); if (atom->natoms < 0 || atom->natoms > MAXBIGINT) - error->all("Too many total atoms"); + error->all(FLERR,"Too many total atoms"); // print status diff --git a/src/create_box.cpp b/src/create_box.cpp index cc9ad9513e..7cdb033657 100644 --- a/src/create_box.cpp +++ b/src/create_box.cpp @@ -33,21 +33,21 @@ CreateBox::CreateBox(LAMMPS *lmp) : Pointers(lmp) {} void CreateBox::command(int narg, char **arg) { - if (narg != 2) error->all("Illegal create_box command"); + if (narg != 2) error->all(FLERR,"Illegal create_box command"); if (domain->box_exist) - error->all("Cannot create_box after simulation box is defined"); + error->all(FLERR,"Cannot create_box after simulation box is defined"); if (domain->dimension == 2 && domain->zperiodic == 0) - error->all("Cannot run 2d simulation with nonperiodic Z dimension"); + error->all(FLERR,"Cannot run 2d simulation with nonperiodic Z dimension"); domain->box_exist = 1; // region check int iregion = domain->find_region(arg[1]); - if (iregion == -1) error->all("Create_box region ID does not exist"); + if (iregion == -1) error->all(FLERR,"Create_box region ID does not exist"); if (domain->regions[iregion]->bboxflag == 0) - error->all("Create_box region does not support a bounding box"); + error->all(FLERR,"Create_box region does not support a bounding box"); // if region not prism: // setup orthogonal domain diff --git a/src/delete_atoms.cpp b/src/delete_atoms.cpp index 3de098fdab..9ed147e068 100644 --- a/src/delete_atoms.cpp +++ b/src/delete_atoms.cpp @@ -31,9 +31,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ DeleteAtoms::DeleteAtoms(LAMMPS *lmp) : Pointers(lmp) {} @@ -43,10 +40,10 @@ DeleteAtoms::DeleteAtoms(LAMMPS *lmp) : Pointers(lmp) {} void DeleteAtoms::command(int narg, char **arg) { if (domain->box_exist == 0) - error->all("Delete_atoms command before simulation box is defined"); - if (narg < 1) error->all("Illegal delete_atoms command"); + error->all(FLERR,"Delete_atoms command before simulation box is defined"); + if (narg < 1) error->all(FLERR,"Illegal delete_atoms command"); if (atom->tag_enable == 0) - error->all("Cannot use delete_atoms unless atoms have IDs"); + error->all(FLERR,"Cannot use delete_atoms unless atoms have IDs"); // store state before delete @@ -58,7 +55,7 @@ void DeleteAtoms::command(int narg, char **arg) else if (strcmp(arg[0],"region") == 0) delete_region(narg,arg); else if (strcmp(arg[0],"overlap") == 0) delete_overlap(narg,arg); else if (strcmp(arg[0],"porosity") == 0) delete_porosity(narg,arg); - else error->all("Illegal delete_atoms command"); + else error->all(FLERR,"Illegal delete_atoms command"); // delete local atoms flagged in dlist // reset nlocal @@ -121,10 +118,10 @@ void DeleteAtoms::command(int narg, char **arg) void DeleteAtoms::delete_group(int narg, char **arg) { - if (narg < 2) error->all("Illegal delete_atoms command"); + if (narg < 2) error->all(FLERR,"Illegal delete_atoms command"); int igroup = group->find(arg[1]); - if (igroup == -1) error->all("Could not find delete_atoms group ID"); + if (igroup == -1) error->all(FLERR,"Could not find delete_atoms group ID"); options(narg-2,&arg[2]); // allocate and initialize deletion list @@ -146,10 +143,10 @@ void DeleteAtoms::delete_group(int narg, char **arg) void DeleteAtoms::delete_region(int narg, char **arg) { - if (narg < 2) error->all("Illegal delete_atoms command"); + if (narg < 2) error->all(FLERR,"Illegal delete_atoms command"); int iregion = domain->find_region(arg[1]); - if (iregion == -1) error->all("Could not find delete_atoms region ID"); + if (iregion == -1) error->all(FLERR,"Could not find delete_atoms region ID"); options(narg-2,&arg[2]); // allocate and initialize deletion list @@ -173,7 +170,7 @@ void DeleteAtoms::delete_region(int narg, char **arg) void DeleteAtoms::delete_overlap(int narg, char **arg) { - if (narg < 4) error->all("Illegal delete_atoms command"); + if (narg < 4) error->all(FLERR,"Illegal delete_atoms command"); // read args @@ -183,7 +180,7 @@ void DeleteAtoms::delete_overlap(int narg, char **arg) int igroup1 = group->find(arg[2]); int igroup2 = group->find(arg[3]); if (igroup1 < 0 || igroup2 < 0) - error->all("Could not find delete_atoms group ID"); + error->all(FLERR,"Could not find delete_atoms group ID"); options(narg-4,&arg[4]); int group1bit = group->bitmask[igroup1]; @@ -210,9 +207,9 @@ void DeleteAtoms::delete_overlap(int narg, char **arg) // if no pair style, neighbor list will be empty if (force->pair == NULL) - error->all("Delete_atoms requires a pair style be defined"); + error->all(FLERR,"Delete_atoms requires a pair style be defined"); if (cut > neighbor->cutneighmax) - error->all("Delete_atoms cutoff > neighbor cutoff"); + error->all(FLERR,"Delete_atoms cutoff > neighbor cutoff"); // setup domain, communication and neighboring // acquire ghosts @@ -319,10 +316,10 @@ void DeleteAtoms::delete_overlap(int narg, char **arg) void DeleteAtoms::delete_porosity(int narg, char **arg) { - if (narg < 4) error->all("Illegal delete_atoms command"); + if (narg < 4) error->all(FLERR,"Illegal delete_atoms command"); int iregion = domain->find_region(arg[1]); - if (iregion == -1) error->all("Could not find delete_atoms region ID"); + if (iregion == -1) error->all(FLERR,"Could not find delete_atoms region ID"); double porosity_fraction = atof(arg[2]); int seed = atoi(arg[3]); @@ -354,11 +351,11 @@ void DeleteAtoms::options(int narg, char **arg) int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"compress") == 0) { - if (iarg+2 > narg) error->all("Illegal delete_bonds command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal delete_bonds command"); if (strcmp(arg[iarg+1],"yes") == 0) compress_flag = 1; else if (strcmp(arg[iarg+1],"no") == 0) compress_flag = 0; - else error->all("Illegal delete_bonds command"); + else error->all(FLERR,"Illegal delete_bonds command"); iarg += 2; - } else error->all("Illegal delete_bonds command"); + } else error->all(FLERR,"Illegal delete_bonds command"); } } diff --git a/src/delete_bonds.cpp b/src/delete_bonds.cpp index 5bf219d975..01e1e3d14e 100644 --- a/src/delete_bonds.cpp +++ b/src/delete_bonds.cpp @@ -38,12 +38,12 @@ DeleteBonds::DeleteBonds(LAMMPS *lmp) : Pointers(lmp) {} void DeleteBonds::command(int narg, char **arg) { if (domain->box_exist == 0) - error->all("Delete_bonds command before simulation box is defined"); + error->all(FLERR,"Delete_bonds command before simulation box is defined"); if (atom->natoms == 0) - error->all("Delete_bonds command with no atoms existing"); + error->all(FLERR,"Delete_bonds command with no atoms existing"); if (atom->molecular == 0) - error->all("Cannot use delete_bonds with non-molecular system"); - if (narg < 2) error->all("Illegal delete_bonds command"); + error->all(FLERR,"Cannot use delete_bonds with non-molecular system"); + if (narg < 2) error->all(FLERR,"Illegal delete_bonds command"); // init entire system since comm->borders is done // comm::init needs neighbor::init needs pair::init needs kspace::init, etc @@ -57,7 +57,7 @@ void DeleteBonds::command(int narg, char **arg) // identify group int igroup = group->find(arg[0]); - if (igroup == -1) error->all("Cannot find delete_bonds group ID"); + if (igroup == -1) error->all(FLERR,"Cannot find delete_bonds group ID"); int groupbit = group->bitmask[igroup]; // set style and which = type value @@ -70,12 +70,12 @@ void DeleteBonds::command(int narg, char **arg) else if (strcmp(arg[1],"dihedral") == 0) style = DIHEDRAL; else if (strcmp(arg[1],"improper") == 0) style = IMPROPER; else if (strcmp(arg[1],"stats") == 0) style = STATS; - else error->all("Illegal delete_bonds command"); + else error->all(FLERR,"Illegal delete_bonds command"); int iarg = 2; int which; if (style != MULTI && style != STATS) { - if (narg < 3) error->all("Illegal delete_bonds command"); + if (narg < 3) error->all(FLERR,"Illegal delete_bonds command"); which = atoi(arg[2]); iarg++; } @@ -90,7 +90,7 @@ void DeleteBonds::command(int narg, char **arg) if (strcmp(arg[iarg],"undo") == 0) undo_flag = 1; else if (strcmp(arg[iarg],"remove") == 0) remove_flag = 1; else if (strcmp(arg[iarg],"special") == 0) special_flag = 1; - else error->all("Illegal delete_bonds command"); + else error->all(FLERR,"Illegal delete_bonds command"); iarg++; } @@ -130,7 +130,7 @@ void DeleteBonds::command(int narg, char **arg) for (i = 0; i < nlocal; i++) { for (m = 0; m < num_bond[i]; m++) { atom1 = atom->map(atom->bond_atom[i][m]); - if (atom1 == -1) error->one("Bond atom missing in delete_bonds"); + if (atom1 == -1) error->one(FLERR,"Bond atom missing in delete_bonds"); if (mask[i] & groupbit && mask[atom1] & groupbit) { flag = 0; if (style == MULTI) flag = 1; @@ -158,7 +158,7 @@ void DeleteBonds::command(int narg, char **arg) atom2 = atom->map(atom->angle_atom2[i][m]); atom3 = atom->map(atom->angle_atom3[i][m]); if (atom1 == -1 || atom2 == -1 || atom3 == -1) - error->one("Angle atom missing in delete_bonds"); + error->one(FLERR,"Angle atom missing in delete_bonds"); if (mask[atom1] & groupbit && mask[atom2] & groupbit && mask[atom3] & groupbit) { flag = 0; @@ -189,7 +189,7 @@ void DeleteBonds::command(int narg, char **arg) atom3 = atom->map(atom->dihedral_atom3[i][m]); atom4 = atom->map(atom->dihedral_atom4[i][m]); if (atom1 == -1 || atom2 == -1 || atom3 == -1 || atom4 == -1) - error->one("Dihedral atom missing in delete_bonds"); + error->one(FLERR,"Dihedral atom missing in delete_bonds"); if (mask[atom1] & groupbit && mask[atom2] & groupbit && mask[atom3] & groupbit && mask[atom4] & groupbit) { flag = 0; @@ -220,7 +220,7 @@ void DeleteBonds::command(int narg, char **arg) atom3 = atom->map(atom->improper_atom3[i][m]); atom4 = atom->map(atom->improper_atom4[i][m]); if (atom1 == -1 || atom2 == -1 || atom3 == -1 || atom4 == -1) - error->one("Improper atom missing in delete_bonds"); + error->one(FLERR,"Improper atom missing in delete_bonds"); if (mask[atom1] & groupbit && mask[atom2] & groupbit && mask[atom3] & groupbit && mask[atom4] & groupbit) { flag = 0; diff --git a/src/dihedral.cpp b/src/dihedral.cpp index 1a3f6f5a45..f1a62cba16 100644 --- a/src/dihedral.cpp +++ b/src/dihedral.cpp @@ -14,7 +14,7 @@ #include "math.h" #include "dihedral.h" #include "atom.h" -#include "atom.h" +#include "comm.h" #include "force.h" #include "pair.h" #include "memory.h" @@ -32,7 +32,6 @@ Dihedral::Dihedral(LAMMPS *lmp) : Pointers(lmp) energy = 0.0; allocated = 0; - PI = 4.0*atan(1.0); maxeatom = maxvatom = 0; eatom = NULL; @@ -53,9 +52,9 @@ Dihedral::~Dihedral() void Dihedral::init() { - if (!allocated) error->all("Dihedral coeffs are not set"); + if (!allocated) error->all(FLERR,"Dihedral coeffs are not set"); for (int i = 1; i <= atom->ndihedraltypes; i++) - if (setflag[i] == 0) error->all("All dihedral coeffs are not set"); + if (setflag[i] == 0) error->all(FLERR,"All dihedral coeffs are not set"); init_style(); } @@ -83,12 +82,12 @@ void Dihedral::ev_setup(int eflag, int vflag) if (eflag_atom && atom->nmax > maxeatom) { maxeatom = atom->nmax; memory->destroy(eatom); - memory->create(eatom,maxeatom,"bond:eatom"); + memory->create(eatom,comm->nthreads*maxeatom,"bond:eatom"); } if (vflag_atom && atom->nmax > maxvatom) { maxvatom = atom->nmax; memory->destroy(vatom); - memory->create(vatom,maxvatom,6,"bond:vatom"); + memory->create(vatom,comm->nthreads*maxvatom,6,"bond:vatom"); } // zero accumulators @@ -243,7 +242,7 @@ void Dihedral::ev_tally(int i1, int i2, int i3, int i4, double Dihedral::memory_usage() { - double bytes = maxeatom * sizeof(double); - bytes += maxvatom*6 * sizeof(double); + double bytes = comm->nthreads*maxeatom * sizeof(double); + bytes += comm->nthreads*maxvatom*6 * sizeof(double); return bytes; } diff --git a/src/dihedral.h b/src/dihedral.h index 2a4feed6b9..b41272b7ba 100644 --- a/src/dihedral.h +++ b/src/dihedral.h @@ -20,6 +20,8 @@ namespace LAMMPS_NS { class Dihedral : protected Pointers { + friend class ThrOMP; + public: int allocated; int *setflag; @@ -39,8 +41,6 @@ class Dihedral : protected Pointers { virtual double memory_usage(); protected: - double PI; - int evflag; int eflag_either,eflag_global,eflag_atom; int vflag_either,vflag_global,vflag_atom; diff --git a/src/displace_atoms.cpp b/src/displace_atoms.cpp index f433541d9e..1793a5e195 100644 --- a/src/displace_atoms.cpp +++ b/src/displace_atoms.cpp @@ -30,9 +30,6 @@ using namespace LAMMPS_NS; enum{MOVE,RAMP,RANDOM}; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ DisplaceAtoms::DisplaceAtoms(LAMMPS *lmp) : Pointers(lmp) {} @@ -44,10 +41,10 @@ void DisplaceAtoms::command(int narg, char **arg) int i; if (domain->box_exist == 0) - error->all("Displace_atoms command before simulation box is defined"); - if (narg < 2) error->all("Illegal displace_atoms command"); + error->all(FLERR,"Displace_atoms command before simulation box is defined"); + if (narg < 2) error->all(FLERR,"Illegal displace_atoms command"); if (modify->nfix_restart_peratom) - error->all("Cannot displace_atoms after " + error->all(FLERR,"Cannot displace_atoms after " "reading restart file with per-atom info"); if (comm->me == 0 && screen) fprintf(screen,"Displacing atoms ...\n"); @@ -55,14 +52,14 @@ void DisplaceAtoms::command(int narg, char **arg) // group and style int igroup = group->find(arg[0]); - if (igroup == -1) error->all("Could not find displace_atoms group ID"); + if (igroup == -1) error->all(FLERR,"Could not find displace_atoms group ID"); int groupbit = group->bitmask[igroup]; int style; if (strcmp(arg[1],"move") == 0) style = MOVE; else if (strcmp(arg[1],"ramp") == 0) style = RAMP; else if (strcmp(arg[1],"random") == 0) style = RANDOM; - else error->all("Illegal displace_atoms command"); + else error->all(FLERR,"Illegal displace_atoms command"); // set option defaults @@ -77,7 +74,7 @@ void DisplaceAtoms::command(int narg, char **arg) // setup scaling if (scaleflag && domain->lattice == NULL) - error->all("Use of displace_atoms with undefined lattice"); + error->all(FLERR,"Use of displace_atoms with undefined lattice"); double xscale,yscale,zscale; if (scaleflag) { @@ -116,7 +113,7 @@ void DisplaceAtoms::command(int narg, char **arg) if (strcmp(arg[2],"x") == 0) d_dim = 0; else if (strcmp(arg[2],"y") == 0) d_dim = 1; else if (strcmp(arg[2],"z") == 0) d_dim = 2; - else error->all("Illegal displace_atoms ramp command"); + else error->all(FLERR,"Illegal displace_atoms ramp command"); double d_lo,d_hi; if (d_dim == 0) { @@ -134,7 +131,7 @@ void DisplaceAtoms::command(int narg, char **arg) if (strcmp(arg[5],"x") == 0) coord_dim = 0; else if (strcmp(arg[5],"y") == 0) coord_dim = 1; else if (strcmp(arg[5],"z") == 0) coord_dim = 2; - else error->all("Illegal displace_atoms ramp command"); + else error->all(FLERR,"Illegal displace_atoms ramp command"); double coord_lo,coord_hi; if (coord_dim == 0) { @@ -175,7 +172,7 @@ void DisplaceAtoms::command(int narg, char **arg) double dy = yscale*atof(arg[3]); double dz = zscale*atof(arg[4]); int seed = atoi(arg[5]); - if (seed <= 0) error->all("Illegal displace_atoms random command"); + if (seed <= 0) error->all(FLERR,"Illegal displace_atoms random command"); double **x = atom->x; int *mask = atom->mask; @@ -218,7 +215,7 @@ void DisplaceAtoms::command(int narg, char **arg) char str[128]; sprintf(str,"Lost atoms via displace_atoms: original " BIGINT_FORMAT " current " BIGINT_FORMAT,atom->natoms,natoms); - error->all(str); + error->all(FLERR,str); } } @@ -228,16 +225,16 @@ void DisplaceAtoms::command(int narg, char **arg) void DisplaceAtoms::options(int narg, char **arg) { - if (narg < 0) error->all("Illegal displace_atoms command"); + if (narg < 0) error->all(FLERR,"Illegal displace_atoms command"); int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal displace_atoms command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal displace_atoms command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal displace_atoms command"); + else error->all(FLERR,"Illegal displace_atoms command"); iarg += 2; - } else error->all("Illegal displace_atoms command"); + } else error->all(FLERR,"Illegal displace_atoms command"); } } diff --git a/src/displace_box.cpp b/src/displace_box.cpp index f2e3363a6d..79f8865788 100644 --- a/src/displace_box.cpp +++ b/src/displace_box.cpp @@ -43,10 +43,10 @@ void DisplaceBox::command(int narg, char **arg) int i; if (domain->box_exist == 0) - error->all("Displace_box command before simulation box is defined"); - if (narg < 2) error->all("Illegal displace_box command"); + error->all(FLERR,"Displace_box command before simulation box is defined"); + if (narg < 2) error->all(FLERR,"Illegal displace_box command"); if (modify->nfix_restart_peratom) - error->all("Cannot displace_box after " + error->all(FLERR,"Cannot displace_box after " "reading restart file with per-atom info"); if (comm->me == 0 && screen) fprintf(screen,"Displacing box ...\n"); @@ -54,7 +54,7 @@ void DisplaceBox::command(int narg, char **arg) // group int igroup = group->find(arg[0]); - if (igroup == -1) error->all("Could not find displace_box group ID"); + if (igroup == -1) error->all(FLERR,"Could not find displace_box group ID"); int groupbit = group->bitmask[igroup]; // set defaults @@ -76,48 +76,48 @@ void DisplaceBox::command(int narg, char **arg) else if (strcmp(arg[iarg],"y") == 0) index = 1; else if (strcmp(arg[iarg],"z") == 0) index = 2; - if (iarg+2 > narg) error->all("Illegal displace_box command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal displace_box command"); if (strcmp(arg[iarg+1],"final") == 0) { - if (iarg+4 > narg) error->all("Illegal displace_box command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal displace_box command"); set[index].style = FINAL; set[index].flo = atof(arg[iarg+2]); set[index].fhi = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg+1],"delta") == 0) { - if (iarg+4 > narg) error->all("Illegal displace_box command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal displace_box command"); set[index].style = DELTA; set[index].dlo = atof(arg[iarg+2]); set[index].dhi = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg+1],"scale") == 0) { - if (iarg+3 > narg) error->all("Illegal displace_box command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal displace_box command"); set[index].style = SCALE; set[index].scale = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"volume") == 0) { set[index].style = VOLUME; iarg += 2; - } else error->all("Illegal displace_box command"); + } else error->all(FLERR,"Illegal displace_box command"); } else if (strcmp(arg[iarg],"xy") == 0 || strcmp(arg[iarg],"xz") == 0 || strcmp(arg[iarg],"yz") == 0) { if (triclinic == 0) - error->all("Displace_box tilt factors require triclinic box"); + error->all(FLERR,"Displace_box tilt factors require triclinic box"); if (strcmp(arg[iarg],"xy") == 0) index = 5; else if (strcmp(arg[iarg],"xz") == 0) index = 4; else if (strcmp(arg[iarg],"yz") == 0) index = 3; - if (iarg+2 > narg) error->all("Illegal displace_box command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal displace_box command"); if (strcmp(arg[iarg+1],"final") == 0) { - if (iarg+3 > narg) error->all("Illegal displace_box command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal displace_box command"); set[index].style = FINAL; set[index].ftilt = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"delta") == 0) { - if (iarg+3 > narg) error->all("Illegal displace_box command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal displace_box command"); set[index].style = DELTA; set[index].dtilt = atof(arg[iarg+2]); iarg += 3; - } else error->all("Illegal displace_box command"); + } else error->all(FLERR,"Illegal displace_box command"); } else break; } @@ -131,14 +131,14 @@ void DisplaceBox::command(int narg, char **arg) if ((set[0].style && domain->xperiodic == 0) || (set[1].style && domain->yperiodic == 0) || (set[2].style && domain->zperiodic == 0)) - error->all("Cannot displace_box on a non-periodic boundary"); + error->all(FLERR,"Cannot displace_box on a non-periodic boundary"); if (set[3].style && (domain->yperiodic == 0 || domain->zperiodic == 0)) - error->all("Cannot displace_box on a non-periodic boundary"); + error->all(FLERR,"Cannot displace_box on a non-periodic boundary"); if (set[4].style && (domain->xperiodic == 0 || domain->zperiodic == 0)) - error->all("Cannot displace_box on a non-periodic boundary"); + error->all(FLERR,"Cannot displace_box on a non-periodic boundary"); if (set[5].style && (domain->xperiodic == 0 || domain->yperiodic == 0)) - error->all("Cannot displace_box on a non-periodic boundary"); + error->all(FLERR,"Cannot displace_box on a non-periodic boundary"); // apply scaling to FINAL,DELTA since they have distance units @@ -147,7 +147,7 @@ void DisplaceBox::command(int narg, char **arg) if (set[i].style == FINAL || set[i].style == DELTA) flag = 1; if (flag && scaleflag && domain->lattice == NULL) - error->all("Use of displace_box with undefined lattice"); + error->all(FLERR,"Use of displace_box with undefined lattice"); double xscale,yscale,zscale; if (flag && scaleflag) { @@ -224,25 +224,25 @@ void DisplaceBox::command(int narg, char **arg) if (set[other1].style == NONE) { if (set[other2].style == NONE || set[other2].style == VOLUME) - error->all("Fix deform volume setting is invalid"); + error->all(FLERR,"Fix deform volume setting is invalid"); set[i].substyle = ONE_FROM_ONE; set[i].fixed = other1; set[i].dynamic1 = other2; } else if (set[other2].style == NONE) { if (set[other1].style == NONE || set[other1].style == VOLUME) - error->all("Fix deform volume setting is invalid"); + error->all(FLERR,"Fix deform volume setting is invalid"); set[i].substyle = ONE_FROM_ONE; set[i].fixed = other2; set[i].dynamic1 = other1; } else if (set[other1].style == VOLUME) { if (set[other2].style == NONE || set[other2].style == VOLUME) - error->all("Fix deform volume setting is invalid"); + error->all(FLERR,"Fix deform volume setting is invalid"); set[i].substyle = TWO_FROM_ONE; set[i].fixed = other1; set[i].dynamic1 = other2; } else if (set[other2].style == VOLUME) { if (set[other1].style == NONE || set[other1].style == VOLUME) - error->all("Fix deform volume setting is invalid"); + error->all(FLERR,"Fix deform volume setting is invalid"); set[i].substyle = TWO_FROM_ONE; set[i].fixed = other2; set[i].dynamic1 = other1; @@ -310,7 +310,7 @@ void DisplaceBox::command(int narg, char **arg) if (set[3].tilt_stop < -0.5*yprd_stop || set[3].tilt_stop > 0.5*yprd_stop || set[4].tilt_stop < -0.5*xprd_stop || set[4].tilt_stop > 0.5*xprd_stop || set[5].tilt_stop < -0.5*xprd_stop || set[5].tilt_stop > 0.5*xprd_stop) - error->all("Induced tilt by displace_box is too large"); + error->all(FLERR,"Induced tilt by displace_box is too large"); // convert atoms to lamda coords @@ -384,7 +384,7 @@ void DisplaceBox::command(int narg, char **arg) char str[128]; sprintf(str,"Lost atoms via displace_box: original " BIGINT_FORMAT " current " BIGINT_FORMAT,atom->natoms,natoms); - error->all(str); + error->all(FLERR,str); } } @@ -394,7 +394,7 @@ void DisplaceBox::command(int narg, char **arg) void DisplaceBox::options(int narg, char **arg) { - if (narg < 0) error->all("Illegal displace_box command"); + if (narg < 0) error->all(FLERR,"Illegal displace_box command"); remapflag = X_REMAP; scaleflag = 1; @@ -402,17 +402,17 @@ void DisplaceBox::options(int narg, char **arg) int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"remap") == 0) { - if (iarg+2 > narg) error->all("Illegal displace_box command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal displace_box command"); if (strcmp(arg[iarg+1],"x") == 0) remapflag = X_REMAP; else if (strcmp(arg[iarg+1],"none") == 0) remapflag = NO_REMAP; - else error->all("Illegal displace_box command"); + else error->all(FLERR,"Illegal displace_box command"); iarg += 2; } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal displace_box command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal displace_box command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal displace_box command"); + else error->all(FLERR,"Illegal displace_box command"); iarg += 2; - } else error->all("Illegal displace_box command"); + } else error->all(FLERR,"Illegal displace_box command"); } } diff --git a/src/domain.cpp b/src/domain.cpp index 4688a733f1..3140ea6a54 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -39,8 +39,6 @@ using namespace LAMMPS_NS; #define BIG 1.0e20 #define SMALL 1.0e-4 #define DELTA 1 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) enum{NO_REMAP,X_REMAP,V_REMAP}; // same as fix_deform.cpp @@ -132,24 +130,24 @@ void Domain::set_initial_box() // error checks for orthogonal and triclinic domains if (boxlo[0] >= boxhi[0] || boxlo[1] >= boxhi[1] || boxlo[2] >= boxhi[2]) - error->one("Box bounds are invalid"); + error->one(FLERR,"Box bounds are invalid"); if (triclinic) { if (domain->dimension == 2 && (xz != 0.0 || yz != 0.0)) - error->all("Cannot skew triclinic box in z for 2d simulation"); + error->all(FLERR,"Cannot skew triclinic box in z for 2d simulation"); if (xy != 0.0 && (!xperiodic || !yperiodic)) - error->all("Triclinic box must be periodic in skewed dimensions"); + error->all(FLERR,"Triclinic box must be periodic in skewed dimensions"); if (xz != 0.0 && (!xperiodic || !zperiodic)) - error->all("Triclinic box must be periodic in skewed dimensions"); + error->all(FLERR,"Triclinic box must be periodic in skewed dimensions"); if (yz != 0.0 && (!yperiodic || !zperiodic)) - error->all("Triclinic box must be periodic in skewed dimensions"); + error->all(FLERR,"Triclinic box must be periodic in skewed dimensions"); if (fabs(xy/(boxhi[0]-boxlo[0])) > 0.5) - error->all("Triclinic box skew is too large"); + error->all(FLERR,"Triclinic box skew is too large"); if (fabs(xz/(boxhi[0]-boxlo[0])) > 0.5) - error->all("Triclinic box skew is too large"); + error->all(FLERR,"Triclinic box skew is too large"); if (fabs(yz/(boxhi[1]-boxlo[1])) > 0.5) - error->all("Triclinic box skew is too large"); + error->all(FLERR,"Triclinic box skew is too large"); } // adjust box lo/hi for shrink-wrapped dims @@ -319,21 +317,21 @@ void Domain::reset_box() else if (boundary[0][0] == 3) boxlo[0] = MIN(-all[0][0]-SMALL,minxlo); if (boundary[0][1] == 2) boxhi[0] = all[0][1] + SMALL; else if (boundary[0][1] == 3) boxhi[0] = MAX(all[0][1]+SMALL,minxhi); - if (boxlo[0] > boxhi[0]) error->all("Illegal simulation box"); + if (boxlo[0] > boxhi[0]) error->all(FLERR,"Illegal simulation box"); } if (yperiodic == 0) { if (boundary[1][0] == 2) boxlo[1] = -all[1][0] - SMALL; else if (boundary[1][0] == 3) boxlo[1] = MIN(-all[1][0]-SMALL,minylo); if (boundary[1][1] == 2) boxhi[1] = all[1][1] + SMALL; else if (boundary[1][1] == 3) boxhi[1] = MAX(all[1][1]+SMALL,minyhi); - if (boxlo[1] > boxhi[1]) error->all("Illegal simulation box"); + if (boxlo[1] > boxhi[1]) error->all(FLERR,"Illegal simulation box"); } if (zperiodic == 0) { if (boundary[2][0] == 2) boxlo[2] = -all[2][0] - SMALL; else if (boundary[2][0] == 3) boxlo[2] = MIN(-all[2][0]-SMALL,minzlo); if (boundary[2][1] == 2) boxhi[2] = all[2][1] + SMALL; else if (boundary[2][1] == 3) boxhi[2] = MAX(all[2][1]+SMALL,minzhi); - if (boxlo[2] > boxhi[2]) error->all("Illegal simulation box"); + if (boxlo[2] > boxhi[2]) error->all(FLERR,"Illegal simulation box"); } } @@ -605,7 +603,7 @@ void Domain::minimum_image(double *delta) for triclinic, also add/subtract tilt factors in other dims as needed ------------------------------------------------------------------------- */ -void Domain::closest_image(double *xi, double *xj, double *xjimage) +void Domain::closest_image(const double * const xi, const double * const xj, double * const xjimage) { double dx,dy,dz; @@ -992,14 +990,14 @@ void Domain::set_lattice(int narg, char **arg) void Domain::add_region(int narg, char **arg) { - if (narg < 2) error->all("Illegal region command"); + if (narg < 2) error->all(FLERR,"Illegal region command"); if (strcmp(arg[1],"delete") == 0) { delete_region(narg,arg); return; } - if (find_region(arg[0]) >= 0) error->all("Reuse of region ID"); + if (find_region(arg[0]) >= 0) error->all(FLERR,"Reuse of region ID"); // extend Region list if necessary @@ -1011,7 +1009,7 @@ void Domain::add_region(int narg, char **arg) // create the Region - if (strcmp(arg[1],"none") == 0) error->all("Invalid region style"); + if (strcmp(arg[1],"none") == 0) error->all(FLERR,"Invalid region style"); #define REGION_CLASS #define RegionStyle(key,Class) \ @@ -1020,7 +1018,7 @@ void Domain::add_region(int narg, char **arg) #include "style_region.h" #undef REGION_CLASS - else error->all("Invalid region style"); + else error->all(FLERR,"Invalid region style"); nregion++; } @@ -1031,10 +1029,10 @@ void Domain::add_region(int narg, char **arg) void Domain::delete_region(int narg, char **arg) { - if (narg != 2) error->all("Illegal region command"); + if (narg != 2) error->all(FLERR,"Illegal region command"); int iregion = find_region(arg[0]); - if (iregion == -1) error->all("Delete region ID does not exist"); + if (iregion == -1) error->all(FLERR,"Delete region ID does not exist"); delete regions[iregion]; regions[iregion] = regions[nregion-1]; @@ -1059,7 +1057,7 @@ int Domain::find_region(char *name) void Domain::set_boundary(int narg, char **arg) { - if (narg != 3) error->all("Illegal boundary command"); + if (narg != 3) error->all(FLERR,"Illegal boundary command"); char c; for (int idim = 0; idim < 3; idim++) @@ -1072,13 +1070,13 @@ void Domain::set_boundary(int narg, char **arg) else if (c == 'f') boundary[idim][iside] = 1; else if (c == 's') boundary[idim][iside] = 2; else if (c == 'm') boundary[idim][iside] = 3; - else error->all("Illegal boundary command"); + else error->all(FLERR,"Illegal boundary command"); } for (int idim = 0; idim < 3; idim++) if ((boundary[idim][0] == 0 && boundary[idim][1]) || (boundary[idim][0] && boundary[idim][1] == 0)) - error->all("Both sides of boundary must be periodic"); + error->all(FLERR,"Both sides of boundary must be periodic"); if (boundary[0][0] == 0) xperiodic = 1; else xperiodic = 0; diff --git a/src/domain.h b/src/domain.h index a6fee60963..1e04ab4ab9 100644 --- a/src/domain.h +++ b/src/domain.h @@ -101,7 +101,7 @@ class Domain : protected Pointers { int minimum_image_check(double, double, double); void minimum_image(double &, double &, double &); void minimum_image(double *); - void closest_image(double *, double *, double *); + void closest_image(const double * const, const double * const, double * const); void set_lattice(int, char **); void add_region(int, char **); void delete_region(int, char **); diff --git a/src/dump.cpp b/src/dump.cpp index 2dd5106bf5..feda8ea156 100644 --- a/src/dump.cpp +++ b/src/dump.cpp @@ -36,9 +36,6 @@ Dump *Dump::dumpptr; #define IBIG 2147483647 #define EPSILON 1.0e-6 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - enum{ASCEND,DESCEND}; /* ---------------------------------------------------------------------- */ @@ -170,14 +167,14 @@ void Dump::init() if (sort_flag) { if (sortcol == 0 && atom->tag_enable == 0) - error->all("Cannot dump sort on atom IDs with no atom IDs defined"); + error->all(FLERR,"Cannot dump sort on atom IDs with no atom IDs defined"); if (sortcol && sortcol > size_one) - error->all("Dump sort column is invalid"); + error->all(FLERR,"Dump sort column is invalid"); if (nprocs > 1 && irregular == NULL) irregular = new Irregular(lmp); bigint size = group->count(igroup); - if (size > MAXSMALLINT) error->all("Too many atoms to dump sort"); + if (size > MAXSMALLINT) error->all(FLERR,"Too many atoms to dump sort"); // set reorderflag = 1 if can simply reorder local atoms rather than sort // criteria: sorting by ID, atom IDs are consecutive from 1 to Natoms @@ -281,7 +278,7 @@ void Dump::write() if (nmax > maxbuf) { if ((bigint) nmax * size_one > MAXSMALLINT) - error->all("Too much per-proc info for dump"); + error->all(FLERR,"Too much per-proc info for dump"); maxbuf = nmax; memory->destroy(buf); memory->create(buf,maxbuf*size_one,"dump:buf"); @@ -382,7 +379,7 @@ void Dump::openfile() sprintf(gzip,"gzip -6 > %s",filecurrent); fp = popen(gzip,"w"); #else - error->one("Cannot open gzipped file"); + error->one(FLERR,"Cannot open gzipped file"); #endif } else if (binary) { fp = fopen(filecurrent,"wb"); @@ -392,7 +389,7 @@ void Dump::openfile() fp = fopen(filecurrent,"w"); } - if (fp == NULL) error->one("Cannot open dump file"); + if (fp == NULL) error->one(FLERR,"Cannot open dump file"); } else fp = NULL; // delete string with timestep replaced @@ -622,18 +619,18 @@ int Dump::bufcompare_reverse(const void *pi, const void *pj) void Dump::modify_params(int narg, char **arg) { - if (narg == 0) error->all("Illegal dump_modify command"); + if (narg == 0) error->all(FLERR,"Illegal dump_modify command"); int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"append") == 0) { - if (iarg+2 > narg) error->all("Illegal dump_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[iarg+1],"yes") == 0) append_flag = 1; else if (strcmp(arg[iarg+1],"no") == 0) append_flag = 0; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"every") == 0) { - if (iarg+2 > narg) error->all("Illegal dump_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command"); int idump; for (idump = 0; idump < output->ndump; idump++) if (strcmp(id,output->dump[idump]->id) == 0) break; @@ -646,24 +643,24 @@ void Dump::modify_params(int narg, char **arg) n = 0; } else { n = atoi(arg[iarg+1]); - if (n <= 0) error->all("Illegal dump_modify command"); + if (n <= 0) error->all(FLERR,"Illegal dump_modify command"); } output->every_dump[idump] = n; iarg += 2; } else if (strcmp(arg[iarg],"first") == 0) { - if (iarg+2 > narg) error->all("Illegal dump_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[iarg+1],"yes") == 0) first_flag = 1; else if (strcmp(arg[iarg+1],"no") == 0) first_flag = 0; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"flush") == 0) { - if (iarg+2 > narg) error->all("Illegal dump_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[iarg+1],"yes") == 0) flush_flag = 1; else if (strcmp(arg[iarg+1],"no") == 0) flush_flag = 0; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"format") == 0) { - if (iarg+2 > narg) error->all("Illegal dump_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command"); delete [] format_user; format_user = NULL; if (strcmp(arg[iarg+1],"none")) { @@ -673,12 +670,12 @@ void Dump::modify_params(int narg, char **arg) } iarg += 2; } else if (strcmp(arg[iarg],"pad") == 0) { - if (iarg+2 > narg) error->all("Illegal dump_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command"); padflag = atoi(arg[iarg+1]); - if (padflag < 0) error->all("Illegal dump_modify command"); + if (padflag < 0) error->all(FLERR,"Illegal dump_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"sort") == 0) { - if (iarg+2 > narg) error->all("Illegal dump_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[iarg+1],"off") == 0) sort_flag = 0; else if (strcmp(arg[iarg+1],"id") == 0) { sort_flag = 1; @@ -688,7 +685,7 @@ void Dump::modify_params(int narg, char **arg) sort_flag = 1; sortcol = atoi(arg[iarg+1]); sortorder = ASCEND; - if (sortcol == 0) error->all("Illegal dump_modify command"); + if (sortcol == 0) error->all(FLERR,"Illegal dump_modify command"); if (sortcol < 0) { sortorder = DESCEND; sortcol = -sortcol; @@ -698,7 +695,7 @@ void Dump::modify_params(int narg, char **arg) iarg += 2; } else { int n = modify_param(narg-iarg,&arg[iarg]); - if (n == 0) error->all("Illegal dump_modify command"); + if (n == 0) error->all(FLERR,"Illegal dump_modify command"); iarg += n; } } diff --git a/src/dump_atom.cpp b/src/dump_atom.cpp index 513e6baef5..2365fb3e2e 100644 --- a/src/dump_atom.cpp +++ b/src/dump_atom.cpp @@ -25,7 +25,7 @@ using namespace LAMMPS_NS; DumpAtom::DumpAtom(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) { - if (narg != 5) error->all("Illegal dump atom command"); + if (narg != 5) error->all(FLERR,"Illegal dump atom command"); scale_flag = 1; image_flag = 0; @@ -120,16 +120,16 @@ void DumpAtom::init_style() int DumpAtom::modify_param(int narg, char **arg) { if (strcmp(arg[0],"scale") == 0) { - if (narg < 2) error->all("Illegal dump_modify command"); + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[1],"yes") == 0) scale_flag = 1; else if (strcmp(arg[1],"no") == 0) scale_flag = 0; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); return 2; } else if (strcmp(arg[0],"image") == 0) { - if (narg < 2) error->all("Illegal dump_modify command"); + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[1],"yes") == 0) image_flag = 1; else if (strcmp(arg[1],"no") == 0) image_flag = 0; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); return 2; } return 0; diff --git a/src/dump_cfg.cpp b/src/dump_cfg.cpp index 3e7d83eff2..940e34549f 100755 --- a/src/dump_cfg.cpp +++ b/src/dump_cfg.cpp @@ -46,15 +46,15 @@ DumpCFG::DumpCFG(LAMMPS *lmp, int narg, char **arg) : (strcmp(arg[7],"xs") != 0 && strcmp(arg[7],"xsu") != 0) || (strcmp(arg[8],"ys") != 0 && strcmp(arg[8],"ysu") != 0) || (strcmp(arg[9],"zs") != 0 && strcmp(arg[9],"zsu") != 0)) - error->all("Dump cfg arguments must start with " + error->all(FLERR,"Dump cfg arguments must start with " "'id type xs ys zs' or 'id type xsu ysu zsu'"); if (strcmp(arg[7],"xs") == 0) if (strcmp(arg[8],"ysu") == 0 || strcmp(arg[9],"zsu") == 0) - error->all("Dump cfg arguments can not mix xs|ys|zs with xsu|ysu|zsu"); + error->all(FLERR,"Dump cfg arguments can not mix xs|ys|zs with xsu|ysu|zsu"); else unwrapflag = 0; else if (strcmp(arg[8],"ys") == 0 || strcmp(arg[9],"zs") == 0) - error->all("Dump cfg arguments can not mix xs|ys|zs with xsu|ysu|zsu"); + error->all(FLERR,"Dump cfg arguments can not mix xs|ys|zs with xsu|ysu|zsu"); else unwrapflag = 1; // arrays for data rearrangement @@ -80,7 +80,7 @@ DumpCFG::DumpCFG(LAMMPS *lmp, int narg, char **arg) : char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Invalid keyword in dump cfg command"); + error->all(FLERR,"Invalid keyword in dump cfg command"); *ptr = '\0'; *(ptr+2) = '\0'; auxname[i] = new char[strlen(suffix) + 3]; @@ -117,7 +117,7 @@ DumpCFG::~DumpCFG() void DumpCFG::init_style() { - if (multifile == 0) error->all("Dump cfg requires one snapshot per file"); + if (multifile == 0) error->all(FLERR,"Dump cfg requires one snapshot per file"); DumpCustom::init_style(); } @@ -217,7 +217,7 @@ void DumpCFG::write_data(int n, double *mybuf) fprintf(fp,vformat[j],static_cast (rbuf[i][j])); else fprintf(fp,vformat[j],rbuf[i][j]); } - else + else { // Unwrapped scaled coordinates are shifted to // center of expanded box, to prevent @@ -234,7 +234,7 @@ void DumpCFG::write_data(int n, double *mybuf) fprintf(fp,vformat[j],static_cast (rbuf[i][j])); else fprintf(fp,vformat[j],rbuf[i][j]); } - + } fprintf(fp,"\n"); } } diff --git a/src/dump_custom.cpp b/src/dump_custom.cpp index 5a3a46b967..7382ec084c 100644 --- a/src/dump_custom.cpp +++ b/src/dump_custom.cpp @@ -53,7 +53,7 @@ enum{INT,DOUBLE,STRING}; DumpCustom::DumpCustom(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) { - if (narg == 5) error->all("No dump custom arguments specified"); + if (narg == 5) error->all(FLERR,"No dump custom arguments specified"); clearstep = 1; @@ -97,7 +97,7 @@ DumpCustom::DumpCustom(LAMMPS *lmp, int narg, char **arg) : ioptional = parse_fields(narg,arg); if (ioptional < narg && strcmp(style,"image") != 0) - error->all("Invalid attribute in dump custom command"); + error->all(FLERR,"Invalid attribute in dump custom command"); size_one = nfield = ioptional - 5; // atom selection arrays @@ -250,23 +250,23 @@ void DumpCustom::init_style() int icompute; for (int i = 0; i < ncompute; i++) { icompute = modify->find_compute(id_compute[i]); - if (icompute < 0) error->all("Could not find dump custom compute ID"); + if (icompute < 0) error->all(FLERR,"Could not find dump custom compute ID"); compute[i] = modify->compute[icompute]; } int ifix; for (int i = 0; i < nfix; i++) { ifix = modify->find_fix(id_fix[i]); - if (ifix < 0) error->all("Could not find dump custom fix ID"); + if (ifix < 0) error->all(FLERR,"Could not find dump custom fix ID"); fix[i] = modify->fix[ifix]; if (nevery % modify->fix[ifix]->peratom_freq) - error->all("Dump custom and fix not computed at compatible times"); + error->all(FLERR,"Dump custom and fix not computed at compatible times"); } int ivariable; for (int i = 0; i < nvariable; i++) { ivariable = input->variable->find(id_variable[i]); - if (ivariable < 0) error->all("Could not find dump custom variable name"); + if (ivariable < 0) error->all(FLERR,"Could not find dump custom variable name"); variable[i] = ivariable; } @@ -274,7 +274,7 @@ void DumpCustom::init_style() if (iregion >= 0) { iregion = domain->find_region(idregion); - if (iregion == -1) error->all("Region ID for dump custom does not exist"); + if (iregion == -1) error->all(FLERR,"Region ID for dump custom does not exist"); } // open single file, one time only @@ -448,7 +448,7 @@ int DumpCustom::count() nstride = 1; } else if (thresh_array[ithresh] == MOL) { if (!atom->molecule_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); int *molecule = atom->molecule; for (i = 0; i < nlocal; i++) dchoose[i] = molecule[i]; ptr = dchoose; @@ -704,108 +704,108 @@ int DumpCustom::count() } else if (thresh_array[ithresh] == Q) { if (!atom->q_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = atom->q; nstride = 1; } else if (thresh_array[ithresh] == MUX) { if (!atom->mu_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->mu[0][0]; nstride = 4; } else if (thresh_array[ithresh] == MUY) { if (!atom->mu_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->mu[0][1]; nstride = 4; } else if (thresh_array[ithresh] == MUZ) { if (!atom->mu_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->mu[0][2]; nstride = 4; } else if (thresh_array[ithresh] == MU) { if (!atom->mu_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->mu[0][3]; nstride = 4; } else if (thresh_array[ithresh] == RADIUS) { if (!atom->radius_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = atom->radius; nstride = 1; } else if (thresh_array[ithresh] == DIAMETER) { if (!atom->radius_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); double *radius = atom->radius; for (i = 0; i < nlocal; i++) dchoose[i] = 2.0*radius[i]; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == OMEGAX) { if (!atom->omega_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->omega[0][0]; nstride = 3; } else if (thresh_array[ithresh] == OMEGAY) { if (!atom->omega_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->omega[0][1]; nstride = 3; } else if (thresh_array[ithresh] == OMEGAZ) { if (!atom->omega_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->omega[0][2]; nstride = 3; } else if (thresh_array[ithresh] == ANGMOMX) { if (!atom->angmom_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->angmom[0][0]; nstride = 3; } else if (thresh_array[ithresh] == ANGMOMY) { if (!atom->angmom_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->angmom[0][1]; nstride = 3; } else if (thresh_array[ithresh] == ANGMOMZ) { if (!atom->angmom_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->angmom[0][2]; nstride = 3; } else if (thresh_array[ithresh] == TQX) { if (!atom->torque_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->torque[0][0]; nstride = 3; } else if (thresh_array[ithresh] == TQY) { if (!atom->torque_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->torque[0][1]; nstride = 3; } else if (thresh_array[ithresh] == TQZ) { if (!atom->torque_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = &atom->torque[0][2]; nstride = 3; } else if (thresh_array[ithresh] == SPIN) { if (!atom->spin_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); int *spin = atom->spin; for (i = 0; i < nlocal; i++) dchoose[i] = spin[i]; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == ERADIUS) { if (!atom->eradius_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = atom->eradius; nstride = 1; } else if (thresh_array[ithresh] == ERVEL) { if (!atom->ervel_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = atom->ervel; nstride = 1; } else if (thresh_array[ithresh] == ERFORCE) { if (!atom->erforce_flag) - error->all("Threshhold for an atom property that isn't allocated"); + error->all(FLERR,"Threshhold for an atom property that isn't allocated"); ptr = atom->erforce; nstride = 1; @@ -934,7 +934,7 @@ int DumpCustom::parse_fields(int narg, char **arg) vtype[i] = INT; } else if (strcmp(arg[iarg],"mol") == 0) { if (!atom->molecule_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_molecule; vtype[i] = INT; } else if (strcmp(arg[iarg],"type") == 0) { @@ -1023,104 +1023,104 @@ int DumpCustom::parse_fields(int narg, char **arg) } else if (strcmp(arg[iarg],"q") == 0) { if (!atom->q_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_q; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"mux") == 0) { if (!atom->mu_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_mux; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"muy") == 0) { if (!atom->mu_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_muy; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"muz") == 0) { if (!atom->mu_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_muz; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"mu") == 0) { if (!atom->mu_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_mu; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"radius") == 0) { if (!atom->radius_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_radius; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"diameter") == 0) { if (!atom->radius_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_diameter; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"omegax") == 0) { if (!atom->omega_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_omegax; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"omegay") == 0) { if (!atom->omega_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_omegay; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"omegaz") == 0) { if (!atom->omega_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_omegaz; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"angmomx") == 0) { if (!atom->angmom_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_angmomx; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"angmomy") == 0) { if (!atom->angmom_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_angmomy; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"angmomz") == 0) { if (!atom->angmom_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_angmomz; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"tqx") == 0) { if (!atom->torque_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_tqx; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"tqy") == 0) { if (!atom->torque_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_tqy; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"tqz") == 0) { if (!atom->torque_flag) - error->all("Dumping an atom property that isn't allocated"); + error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_tqz; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"spin") == 0) { if (!atom->spin_flag) - error->all("Dumping an atom quantity that isn't allocated"); + error->all(FLERR,"Dumping an atom quantity that isn't allocated"); pack_choice[i] = &DumpCustom::pack_spin; vtype[i] = INT; } else if (strcmp(arg[iarg],"eradius") == 0) { if (!atom->eradius_flag) - error->all("Dumping an atom quantity that isn't allocated"); + error->all(FLERR,"Dumping an atom quantity that isn't allocated"); pack_choice[i] = &DumpCustom::pack_eradius; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"ervel") == 0) { if (!atom->ervel_flag) - error->all("Dumping an atom quantity that isn't allocated"); + error->all(FLERR,"Dumping an atom quantity that isn't allocated"); pack_choice[i] = &DumpCustom::pack_ervel; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"erforce") == 0) { if (!atom->erforce_flag) - error->all("Dumping an atom quantity that isn't allocated"); + error->all(FLERR,"Dumping an atom quantity that isn't allocated"); pack_choice[i] = &DumpCustom::pack_erforce; vtype[i] = DOUBLE; @@ -1138,22 +1138,22 @@ int DumpCustom::parse_fields(int narg, char **arg) char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Invalid attribute in dump custom command"); + error->all(FLERR,"Invalid attribute in dump custom command"); argindex[i] = atoi(ptr+1); *ptr = '\0'; } else argindex[i] = 0; n = modify->find_compute(suffix); - if (n < 0) error->all("Could not find dump custom compute ID"); + if (n < 0) error->all(FLERR,"Could not find dump custom compute ID"); if (modify->compute[n]->peratom_flag == 0) - error->all("Dump custom compute does not compute per-atom info"); + error->all(FLERR,"Dump custom compute does not compute per-atom info"); if (argindex[i] == 0 && modify->compute[n]->size_peratom_cols > 0) - error->all("Dump custom compute does not calculate per-atom vector"); + error->all(FLERR,"Dump custom compute does not calculate per-atom vector"); if (argindex[i] > 0 && modify->compute[n]->size_peratom_cols == 0) - error->all("Dump custom compute does not calculate per-atom array"); + error->all(FLERR,"Dump custom compute does not calculate per-atom array"); if (argindex[i] > 0 && argindex[i] > modify->compute[n]->size_peratom_cols) - error->all("Dump custom compute vector is accessed out-of-range"); + error->all(FLERR,"Dump custom compute vector is accessed out-of-range"); field2index[i] = add_compute(suffix); delete [] suffix; @@ -1172,22 +1172,22 @@ int DumpCustom::parse_fields(int narg, char **arg) char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Invalid attribute in dump custom command"); + error->all(FLERR,"Invalid attribute in dump custom command"); argindex[i] = atoi(ptr+1); *ptr = '\0'; } else argindex[i] = 0; n = modify->find_fix(suffix); - if (n < 0) error->all("Could not find dump custom fix ID"); + if (n < 0) error->all(FLERR,"Could not find dump custom fix ID"); if (modify->fix[n]->peratom_flag == 0) - error->all("Dump custom fix does not compute per-atom info"); + error->all(FLERR,"Dump custom fix does not compute per-atom info"); if (argindex[i] == 0 && modify->fix[n]->size_peratom_cols > 0) - error->all("Dump custom fix does not compute per-atom vector"); + error->all(FLERR,"Dump custom fix does not compute per-atom vector"); if (argindex[i] > 0 && modify->fix[n]->size_peratom_cols == 0) - error->all("Dump custom fix does not compute per-atom array"); + error->all(FLERR,"Dump custom fix does not compute per-atom array"); if (argindex[i] > 0 && argindex[i] > modify->fix[n]->size_peratom_cols) - error->all("Dump custom fix vector is accessed out-of-range"); + error->all(FLERR,"Dump custom fix vector is accessed out-of-range"); field2index[i] = add_fix(suffix); delete [] suffix; @@ -1205,9 +1205,9 @@ int DumpCustom::parse_fields(int narg, char **arg) argindex[i] = 0; n = input->variable->find(suffix); - if (n < 0) error->all("Could not find dump custom variable name"); + if (n < 0) error->all(FLERR,"Could not find dump custom variable name"); if (input->variable->atomstyle(n) == 0) - error->all("Dump custom variable is not atom-style variable"); + error->all(FLERR,"Dump custom variable is not atom-style variable"); field2index[i] = add_variable(suffix); delete [] suffix; @@ -1302,11 +1302,11 @@ int DumpCustom::add_variable(char *id) int DumpCustom::modify_param(int narg, char **arg) { if (strcmp(arg[0],"region") == 0) { - if (narg < 2) error->all("Illegal dump_modify command"); + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[1],"none") == 0) iregion = -1; else { iregion = domain->find_region(arg[1]); - if (iregion == -1) error->all("Dump_modify region ID does not exist"); + if (iregion == -1) error->all(FLERR,"Dump_modify region ID does not exist"); int n = strlen(arg[1]) + 1; idregion = new char[n]; strcpy(idregion,arg[1]); @@ -1315,7 +1315,7 @@ int DumpCustom::modify_param(int narg, char **arg) } else if (strcmp(arg[0],"element") == 0) { if (narg < ntypes+1) - error->all("Dump modify element names do not match atom types"); + error->all(FLERR,"Dump modify element names do not match atom types"); if (typenames) { for (int i = 1; i <= ntypes; i++) delete [] typenames[i]; @@ -1332,7 +1332,7 @@ int DumpCustom::modify_param(int narg, char **arg) return ntypes+1; } else if (strcmp(arg[0],"thresh") == 0) { - if (narg < 2) error->all("Illegal dump_modify command"); + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[1],"none") == 0) { if (nthresh) { memory->destroy(thresh_array); @@ -1346,7 +1346,7 @@ int DumpCustom::modify_param(int narg, char **arg) return 2; } - if (narg < 4) error->all("Illegal dump_modify command"); + if (narg < 4) error->all(FLERR,"Illegal dump_modify command"); // grow threshhold arrays @@ -1453,25 +1453,25 @@ int DumpCustom::modify_param(int narg, char **arg) char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Invalid attribute in dump modify command"); + error->all(FLERR,"Invalid attribute in dump modify command"); argindex[nfield+nthresh] = atoi(ptr+1); *ptr = '\0'; } else argindex[nfield+nthresh] = 0; n = modify->find_compute(suffix); - if (n < 0) error->all("Could not find dump modify compute ID"); + if (n < 0) error->all(FLERR,"Could not find dump modify compute ID"); if (modify->compute[n]->peratom_flag == 0) - error->all("Dump modify compute ID does not compute per-atom info"); + error->all(FLERR,"Dump modify compute ID does not compute per-atom info"); if (argindex[nfield+nthresh] == 0 && modify->compute[n]->size_peratom_cols > 0) - error->all("Dump modify compute ID does not compute per-atom vector"); + error->all(FLERR,"Dump modify compute ID does not compute per-atom vector"); if (argindex[nfield+nthresh] > 0 && modify->compute[n]->size_peratom_cols == 0) - error->all("Dump modify compute ID does not compute per-atom array"); + error->all(FLERR,"Dump modify compute ID does not compute per-atom array"); if (argindex[nfield+nthresh] > 0 && argindex[nfield+nthresh] > modify->compute[n]->size_peratom_cols) - error->all("Dump modify compute ID vector is not large enough"); + error->all(FLERR,"Dump modify compute ID vector is not large enough"); field2index[nfield+nthresh] = add_compute(suffix); delete [] suffix; @@ -1491,25 +1491,25 @@ int DumpCustom::modify_param(int narg, char **arg) char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Invalid attribute in dump modify command"); + error->all(FLERR,"Invalid attribute in dump modify command"); argindex[nfield+nthresh] = atoi(ptr+1); *ptr = '\0'; } else argindex[nfield+nthresh] = 0; n = modify->find_fix(suffix); - if (n < 0) error->all("Could not find dump modify fix ID"); + if (n < 0) error->all(FLERR,"Could not find dump modify fix ID"); if (modify->fix[n]->peratom_flag == 0) - error->all("Dump modify fix ID does not compute per-atom info"); + error->all(FLERR,"Dump modify fix ID does not compute per-atom info"); if (argindex[nfield+nthresh] == 0 && modify->fix[n]->size_peratom_cols > 0) - error->all("Dump modify fix ID does not compute per-atom vector"); + error->all(FLERR,"Dump modify fix ID does not compute per-atom vector"); if (argindex[nfield+nthresh] > 0 && modify->fix[n]->size_peratom_cols == 0) - error->all("Dump modify fix ID does not compute per-atom array"); + error->all(FLERR,"Dump modify fix ID does not compute per-atom array"); if (argindex[nfield+nthresh] > 0 && argindex[nfield+nthresh] > modify->fix[n]->size_peratom_cols) - error->all("Dump modify fix ID vector is not large enough"); + error->all(FLERR,"Dump modify fix ID vector is not large enough"); field2index[nfield+nthresh] = add_fix(suffix); delete [] suffix; @@ -1528,14 +1528,14 @@ int DumpCustom::modify_param(int narg, char **arg) argindex[nfield+nthresh] = 0; n = input->variable->find(suffix); - if (n < 0) error->all("Could not find dump modify variable name"); + if (n < 0) error->all(FLERR,"Could not find dump modify variable name"); if (input->variable->atomstyle(n) == 0) - error->all("Dump modify variable is not atom-style variable"); + error->all(FLERR,"Dump modify variable is not atom-style variable"); field2index[nfield+nthresh] = add_variable(suffix); delete [] suffix; - } else error->all("Invalid dump_modify threshhold operator"); + } else error->all(FLERR,"Invalid dump_modify threshhold operator"); // set operation type of threshhold @@ -1545,7 +1545,7 @@ int DumpCustom::modify_param(int narg, char **arg) else if (strcmp(arg[2],">=") == 0) thresh_op[nthresh] = GE; else if (strcmp(arg[2],"==") == 0) thresh_op[nthresh] = EQ; else if (strcmp(arg[2],"!=") == 0) thresh_op[nthresh] = NEQ; - else error->all("Invalid dump_modify threshhold operator"); + else error->all(FLERR,"Invalid dump_modify threshhold operator"); // set threshhold value diff --git a/src/dump_dcd.cpp b/src/dump_dcd.cpp index d00c1cc5bb..a9d048f8df 100644 --- a/src/dump_dcd.cpp +++ b/src/dump_dcd.cpp @@ -55,9 +55,9 @@ static inline void fwrite_int32(FILE* fd, uint32_t i) DumpDCD::DumpDCD(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) { - if (narg != 5) error->all("Illegal dump dcd command"); + if (narg != 5) error->all(FLERR,"Illegal dump dcd command"); if (binary || compressed || multifile || multiproc) - error->all("Invalid dump dcd filename"); + error->all(FLERR,"Invalid dump dcd filename"); size_one = 3; sort_flag = 1; @@ -69,7 +69,7 @@ DumpDCD::DumpDCD(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) // allocate global array for atom coords bigint n = group->count(igroup); - if (n > MAXSMALLINT/sizeof(float)) error->all("Too many atoms for dump dcd"); + if (n > MAXSMALLINT/sizeof(float)) error->all(FLERR,"Too many atoms for dump dcd"); natoms = static_cast (n); memory->create(coords,3*natoms,"dump:coords"); @@ -95,7 +95,7 @@ DumpDCD::~DumpDCD() void DumpDCD::init_style() { if (sort_flag == 0 || sortcol != 0) - error->all("Dump dcd requires sorting by atom ID"); + error->all(FLERR,"Dump dcd requires sorting by atom ID"); // check that dump frequency has not changed and is not a variable @@ -103,11 +103,11 @@ void DumpDCD::init_style() for (idump = 0; idump < output->ndump; idump++) if (strcmp(id,output->dump[idump]->id) == 0) break; if (output->every_dump[idump] == 0) - error->all("Cannot use variable every setting for dump dcd"); + error->all(FLERR,"Cannot use variable every setting for dump dcd"); if (nevery_save == 0) nevery_save = output->every_dump[idump]; else if (nevery_save != output->every_dump[idump]) - error->all("Cannot change dump_modify every for dump dcd"); + error->all(FLERR,"Cannot change dump_modify every for dump dcd"); } /* ---------------------------------------------------------------------- */ @@ -116,7 +116,7 @@ void DumpDCD::openfile() { if (me == 0) { fp = fopen(filename,"wb"); - if (fp == NULL) error->one("Cannot open dump file"); + if (fp == NULL) error->one(FLERR,"Cannot open dump file"); } } @@ -124,9 +124,9 @@ void DumpDCD::openfile() void DumpDCD::write_header(bigint n) { - if (n != natoms) error->all("Dump dcd of non-matching # of atoms"); + if (n != natoms) error->all(FLERR,"Dump dcd of non-matching # of atoms"); if (update->ntimestep > MAXSMALLINT) - error->all("Too big a timestep for dump dcd"); + error->all(FLERR,"Too big a timestep for dump dcd"); // first time, write header for entire file @@ -266,10 +266,10 @@ void DumpDCD::write_data(int n, double *mybuf) int DumpDCD::modify_param(int narg, char **arg) { if (strcmp(arg[0],"unwrap") == 0) { - if (narg < 2) error->all("Illegal dump_modify command"); + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[1],"yes") == 0) unwrap_flag = 1; else if (strcmp(arg[1],"no") == 0) unwrap_flag = 0; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); return 2; } return 0; diff --git a/src/dump_image.cpp b/src/dump_image.cpp index d41be6a338..16f677327e 100644 --- a/src/dump_image.cpp +++ b/src/dump_image.cpp @@ -30,6 +30,7 @@ #include "input.h" #include "variable.h" #include "random_mars.h" +#include "math_const.h" #include "error.h" #include "memory.h" @@ -38,6 +39,7 @@ #endif using namespace LAMMPS_NS; +using namespace MathConst; #define NCOLORS 140 #define NELEMENTS 109 @@ -50,17 +52,12 @@ enum{CONTINUOUS,DISCRETE,SEQUENTIAL}; enum{ABSOLUTE,FRACTIONAL}; enum{NO,YES}; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ DumpImage::DumpImage(LAMMPS *lmp, int narg, char **arg) : DumpCustom(lmp, narg, arg) { - if (binary || multiproc) error->all("Invalid dump image filename"); - - PI = 4.0*atan(1.0); + if (binary || multiproc) error->all(FLERR,"Invalid dump image filename"); // set filetype based on filename suffix @@ -72,12 +69,12 @@ DumpImage::DumpImage(LAMMPS *lmp, int narg, char **arg) : else filetype = PPM; #ifndef LAMMPS_JPEG - if (filetype == JPG) error->all("Cannot dump JPG file"); + if (filetype == JPG) error->all(FLERR,"Cannot dump JPG file"); #endif // atom color,diameter settings - if (nfield != 2) error->all("Illegal dump image command"); + if (nfield != 2) error->all(FLERR,"Illegal dump image command"); acolor = ATTRIBUTE; if (strcmp(arg[5],"type") == 0) acolor = TYPE; @@ -98,8 +95,8 @@ DumpImage::DumpImage(LAMMPS *lmp, int narg, char **arg) : bdiamvalue = 0.5; } width = height = 512; - theta = 60.0 * PI/180.0; - phi = 30.0 * PI/180.0; + theta = 60.0 * MY_PI/180.0; + phi = 30.0 * MY_PI/180.0; thetastr = phistr = NULL; cflag = STATIC; cx = cy = cz = 0.5; @@ -125,47 +122,47 @@ DumpImage::DumpImage(LAMMPS *lmp, int narg, char **arg) : int iarg = ioptional; while (iarg < narg) { if (strcmp(arg[iarg],"adiam") == 0) { - if (iarg+2 > narg) error->all("Illegal dump image command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump image command"); adiam = NUMERIC; adiamvalue = atof(arg[iarg+1]); - if (adiamvalue <= 0.0) error->all("Illegal dump image command"); + if (adiamvalue <= 0.0) error->all(FLERR,"Illegal dump image command"); iarg += 2; } else if (strcmp(arg[iarg],"atom") == 0) { - if (iarg+2 > narg) error->all("Illegal dump image command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump image command"); if (strcmp(arg[iarg+1],"yes") == 0) atomflag = YES; else if (strcmp(arg[iarg+1],"no") == 0) atomflag = NO; - else error->all("Illegal dump image command"); + else error->all(FLERR,"Illegal dump image command"); iarg += 2; } else if (strcmp(arg[iarg],"bond") == 0) { - if (iarg+3 > narg) error->all("Illegal dump image command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal dump image command"); if (atom->nbondtypes == 0) - error->all("Dump image bond not allowed with no bond types"); + error->all(FLERR,"Dump image bond not allowed with no bond types"); bondflag = YES; if (strcmp(arg[iarg+1],"none") == 0) bondflag = NO; else if (strcmp(arg[iarg+1],"atom") == 0) bcolor = ATOM; else if (strcmp(arg[iarg+1],"type") == 0) bcolor = TYPE; - else error->all("Illegal dump image command"); + else error->all(FLERR,"Illegal dump image command"); if (!islower(arg[iarg+2][0])) { bdiam = NUMERIC; bdiamvalue = atof(arg[iarg+2]); - if (bdiamvalue <= 0.0) error->all("Illegal dump image command"); + if (bdiamvalue <= 0.0) error->all(FLERR,"Illegal dump image command"); } else if (strcmp(arg[iarg+2],"atom") == 0) bdiam = ATOM; else if (strcmp(arg[iarg+2],"type") == 0) bdiam = TYPE; else if (strcmp(arg[iarg+2],"none") == 0) bondflag = NO; - else error->all("Illegal dump image command"); + else error->all(FLERR,"Illegal dump image command"); iarg += 3; } else if (strcmp(arg[iarg],"size") == 0) { - if (iarg+3 > narg) error->all("Illegal dump image command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal dump image command"); width = atoi(arg[iarg+1]); height = atoi(arg[iarg+2]); - if (width <= 0 || height <= 0) error->all("Illegal dump image command"); + if (width <= 0 || height <= 0) error->all(FLERR,"Illegal dump image command"); iarg += 3; } else if (strcmp(arg[iarg],"view") == 0) { - if (iarg+3 > narg) error->all("Illegal dump image command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal dump image command"); if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { int n = strlen(&arg[iarg+1][2]) + 1; thetastr = new char[n]; @@ -173,8 +170,8 @@ DumpImage::DumpImage(LAMMPS *lmp, int narg, char **arg) : } else { theta = atof(arg[iarg+1]); if (theta < 0.0 || theta > 180.0) - error->all("Invalid dump image theta value"); - theta *= PI/180.0; + error->all(FLERR,"Invalid dump image theta value"); + theta *= MY_PI/180.0; } if (strstr(arg[iarg+2],"v_") == arg[iarg+2]) { int n = strlen(&arg[iarg+2][2]) + 1; @@ -182,15 +179,15 @@ DumpImage::DumpImage(LAMMPS *lmp, int narg, char **arg) : strcpy(phistr,&arg[iarg+2][2]); } else { phi = atof(arg[iarg+2]); - phi *= PI/180.0; + phi *= MY_PI/180.0; } iarg += 3; } else if (strcmp(arg[iarg],"center") == 0) { - if (iarg+5 > narg) error->all("Illegal dump image command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal dump image command"); if (strcmp(arg[iarg+1],"s") == 0) cflag = STATIC; else if (strcmp(arg[iarg+1],"d") == 0) cflag = DYNAMIC; - else error->all("Illegal dump image command"); + else error->all(FLERR,"Illegal dump image command"); if (strstr(arg[iarg+2],"v_") == arg[iarg+2]) { int n = strlen(&arg[iarg+2][2]) + 1; cxstr = new char[n]; @@ -212,7 +209,7 @@ DumpImage::DumpImage(LAMMPS *lmp, int narg, char **arg) : iarg += 5; } else if (strcmp(arg[iarg],"up") == 0) { - if (iarg+4 > narg) error->all("Illegal dump image command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal dump image command"); if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { int n = strlen(&arg[iarg+1][2]) + 1; upxstr = new char[n]; @@ -231,70 +228,70 @@ DumpImage::DumpImage(LAMMPS *lmp, int narg, char **arg) : iarg += 4; } else if (strcmp(arg[iarg],"zoom") == 0) { - if (iarg+2 > narg) error->all("Illegal dump image command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump image command"); if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { int n = strlen(&arg[iarg+1][2]) + 1; zoomstr = new char[n]; strcpy(zoomstr,&arg[iarg+1][2]); } else { zoom = atof(arg[iarg+1]); - if (zoom <= 0.0) error->all("Illegal dump image command"); + if (zoom <= 0.0) error->all(FLERR,"Illegal dump image command"); } iarg += 2; } else if (strcmp(arg[iarg],"persp") == 0) { - error->all("Dump image persp option is not yet supported"); - if (iarg+2 > narg) error->all("Illegal dump image command"); + error->all(FLERR,"Dump image persp option is not yet supported"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump image command"); if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { int n = strlen(&arg[iarg+1][2]) + 1; perspstr = new char[n]; strcpy(perspstr,&arg[iarg+1][2]); } else { persp = atof(arg[iarg+1]); - if (persp < 0.0) error->all("Illegal dump image command"); + if (persp < 0.0) error->all(FLERR,"Illegal dump image command"); } iarg += 2; } else if (strcmp(arg[iarg],"box") == 0) { - if (iarg+3 > narg) error->all("Illegal dump image command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal dump image command"); if (strcmp(arg[iarg+1],"yes") == 0) boxflag = YES; else if (strcmp(arg[iarg+1],"no") == 0) boxflag = NO; - else error->all("Illegal dump image command"); + else error->all(FLERR,"Illegal dump image command"); boxdiam = atof(arg[iarg+2]); - if (boxdiam < 0.0) error->all("Illegal dump image command"); + if (boxdiam < 0.0) error->all(FLERR,"Illegal dump image command"); iarg += 3; } else if (strcmp(arg[iarg],"axes") == 0) { - if (iarg+3 > narg) error->all("Illegal dump image command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal dump image command"); if (strcmp(arg[iarg+1],"yes") == 0) axesflag = YES; else if (strcmp(arg[iarg+1],"no") == 0) axesflag = NO; - else error->all("Illegal dump image command"); + else error->all(FLERR,"Illegal dump image command"); axeslen = atof(arg[iarg+2]); axesdiam = atof(arg[iarg+3]); if (axeslen < 0.0 || axesdiam < 0.0) - error->all("Illegal dump image command"); + error->all(FLERR,"Illegal dump image command"); iarg += 4; } else if (strcmp(arg[iarg],"shiny") == 0) { - if (iarg+2 > narg) error->all("Illegal dump image command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal dump image command"); shiny = atof(arg[iarg+1]); if (shiny < 0.0 || shiny > 1.0) - error->all("Illegal dump image command"); + error->all(FLERR,"Illegal dump image command"); iarg += 2; } else if (strcmp(arg[iarg],"ssao") == 0) { - if (iarg+4 > narg) error->all("Illegal dump image command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal dump image command"); if (strcmp(arg[iarg+1],"yes") == 0) ssao = YES; else if (strcmp(arg[iarg+1],"no") == 0) ssao = NO; - else error->all("Illegal dump image command"); + else error->all(FLERR,"Illegal dump image command"); seed = atoi(arg[iarg+2]); - if (seed <= 0) error->all("Illegal dump image command"); + if (seed <= 0) error->all(FLERR,"Illegal dump image command"); ssaoint = atof(arg[iarg+3]); if (ssaoint < 0.0 || ssaoint > 1.0) - error->all("Illegal dump image command"); + error->all(FLERR,"Illegal dump image command"); iarg += 4; - } else error->all("Illegal dump image command"); + } else error->all(FLERR,"Illegal dump image command"); } // params based on args @@ -361,25 +358,25 @@ DumpImage::DumpImage(LAMMPS *lmp, int narg, char **arg) : // static parameters - FOV = PI/6.0; // 30 degrees + FOV = MY_PI/6.0; // 30 degrees ambientColor[0] = 0.0; ambientColor[1] = 0.0; ambientColor[2] = 0.0; - keyLightPhi = -PI/4.0; // -45 degrees - keyLightTheta = PI/6.0; // 30 degrees + keyLightPhi = -MY_PI4; // -45 degrees + keyLightTheta = MY_PI/6.0; // 30 degrees keyLightColor[0] = 0.9; keyLightColor[1] = 0.9; keyLightColor[2] = 0.9; - fillLightPhi = PI/6.0; // 30 degrees + fillLightPhi = MY_PI/6.0; // 30 degrees fillLightTheta = 0; - fillLightColor[0] = 0.9; - fillLightColor[1] = 0.9; - fillLightColor[2] = 0.9; + fillLightColor[0] = 0.45; + fillLightColor[1] = 0.45; + fillLightColor[2] = 0.45; - backLightPhi = PI; // 180 degrees - backLightTheta = PI/12.0; // 15 degrees + backLightPhi = MY_PI; // 180 degrees + backLightTheta = MY_PI/12.0; // 15 degrees backLightColor[0] = 0.9; backLightColor[1] = 0.9; backLightColor[2] = 0.9; @@ -449,8 +446,8 @@ DumpImage::~DumpImage() void DumpImage::init_style() { - if (multifile == 0) error->all("Dump image requires one snapshot per file"); - if (sort_flag) error->all("Dump image cannot perform sorting"); + if (multifile == 0) error->all(FLERR,"Dump image requires one snapshot per file"); + if (sort_flag) error->all(FLERR,"Dump image cannot perform sorting"); DumpCustom::init_style(); @@ -459,72 +456,72 @@ void DumpImage::init_style() if (thetastr) { thetavar = input->variable->find(thetastr); if (thetavar < 0) - error->all("Variable name for dump image theta does not exist"); + error->all(FLERR,"Variable name for dump image theta does not exist"); if (!input->variable->equalstyle(thetavar)) - error->all("Variable for dump image theta is invalid style"); + error->all(FLERR,"Variable for dump image theta is invalid style"); } if (phistr) { phivar = input->variable->find(phistr); if (phivar < 0) - error->all("Variable name for dump image phi does not exist"); + error->all(FLERR,"Variable name for dump image phi does not exist"); if (!input->variable->equalstyle(phivar)) - error->all("Variable for dump image phi is invalid style"); + error->all(FLERR,"Variable for dump image phi is invalid style"); } if (cxstr) { cxvar = input->variable->find(cxstr); if (cxvar < 0) - error->all("Variable name for dump image center does not exist"); + error->all(FLERR,"Variable name for dump image center does not exist"); if (!input->variable->equalstyle(cxvar)) - error->all("Variable for dump image center is invalid style"); + error->all(FLERR,"Variable for dump image center is invalid style"); } if (cystr) { cyvar = input->variable->find(cystr); if (cyvar < 0) - error->all("Variable name for dump image center does not exist"); + error->all(FLERR,"Variable name for dump image center does not exist"); if (!input->variable->equalstyle(cyvar)) - error->all("Variable for dump image center is invalid style"); + error->all(FLERR,"Variable for dump image center is invalid style"); } if (czstr) { czvar = input->variable->find(czstr); if (czvar < 0) - error->all("Variable name for dump image center does not exist"); + error->all(FLERR,"Variable name for dump image center does not exist"); if (!input->variable->equalstyle(czvar)) - error->all("Variable for dump image center is invalid style"); + error->all(FLERR,"Variable for dump image center is invalid style"); } if (upxstr) { upxvar = input->variable->find(upxstr); if (upxvar < 0) - error->all("Variable name for dump image center does not exist"); + error->all(FLERR,"Variable name for dump image center does not exist"); if (!input->variable->equalstyle(upxvar)) - error->all("Variable for dump image center is invalid style"); + error->all(FLERR,"Variable for dump image center is invalid style"); } if (upystr) { upyvar = input->variable->find(upystr); if (upyvar < 0) - error->all("Variable name for dump image center does not exist"); + error->all(FLERR,"Variable name for dump image center does not exist"); if (!input->variable->equalstyle(upyvar)) - error->all("Variable for dump image center is invalid style"); + error->all(FLERR,"Variable for dump image center is invalid style"); } if (upzstr) { upzvar = input->variable->find(upzstr); if (upzvar < 0) - error->all("Variable name for dump image center does not exist"); + error->all(FLERR,"Variable name for dump image center does not exist"); if (!input->variable->equalstyle(upzvar)) - error->all("Variable for dump image center is invalid style"); + error->all(FLERR,"Variable for dump image center is invalid style"); } if (zoomstr) { zoomvar = input->variable->find(zoomstr); if (zoomvar < 0) - error->all("Variable name for dump image zoom does not exist"); + error->all(FLERR,"Variable name for dump image zoom does not exist"); if (!input->variable->equalstyle(zoomvar)) - error->all("Variable for dump image zoom is invalid style"); + error->all(FLERR,"Variable for dump image zoom is invalid style"); } if (perspstr) { perspvar = input->variable->find(perspstr); if (perspvar < 0) - error->all("Variable name for dump image persp does not exist"); + error->all(FLERR,"Variable name for dump image persp does not exist"); if (!input->variable->equalstyle(perspvar)) - error->all("Variable for dump image persp is invalid style"); + error->all(FLERR,"Variable for dump image persp is invalid style"); } // set up type -> element mapping @@ -533,7 +530,7 @@ void DumpImage::init_style() for (int i = 1; i <= ntypes; i++) { colorelement[i] = element2color(typenames[i]); if (colorelement[i] == NULL) - error->all("Invalid dump image element name"); + error->all(FLERR,"Invalid dump image element name"); } } @@ -541,7 +538,7 @@ void DumpImage::init_style() for (int i = 1; i <= ntypes; i++) { diamelement[i] = element2diam(typenames[i]); if (diamelement[i] == 0.0) - error->all("Invalid dump image element name"); + error->all(FLERR,"Invalid dump image element name"); } } } @@ -678,12 +675,12 @@ void DumpImage::view_params() if (thetastr) { theta = input->variable->compute_equal(thetavar); if (theta < 0.0 || theta > 180.0) - error->all("Invalid dump image theta value"); - theta *= PI/180.0; + error->all(FLERR,"Invalid dump image theta value"); + theta *= MY_PI/180.0; } if (phistr) { phi = input->variable->compute_equal(phivar); - phi *= PI/180.0; + phi *= MY_PI/180.0; } camDir[0] = sin(theta)*cos(phi); @@ -702,9 +699,9 @@ void DumpImage::view_params() box_bounds(); if (zoomstr) zoom = input->variable->compute_equal(zoomvar); - if (zoom <= 0.0) error->all("Invalid dump image zoom value"); + if (zoom <= 0.0) error->all(FLERR,"Invalid dump image zoom value"); if (perspstr) persp = input->variable->compute_equal(perspvar); - if (persp < 0.0) error->all("Invalid dump image persp value"); + if (persp < 0.0) error->all(FLERR,"Invalid dump image persp value"); double delx = 2.0*(boxxhi-boxxlo); double dely = 2.0*(boxyhi-boxylo); @@ -735,7 +732,7 @@ void DumpImage::view_params() MathExtra::norm3(camRight); MathExtra::cross3(camDir,camRight,camUp); if (camUp[0] == 0.0 && camUp[1] == 0.0 && camUp[2] == 0.0) - error->all("Invalid dump image up vector"); + error->all(FLERR,"Invalid dump image up vector"); MathExtra::norm3(camUp); // light directions in terms of -camDir = z @@ -767,7 +764,7 @@ void DumpImage::view_params() if (ssao) { SSAORadius = maxdel * 0.05 * ssaoint; SSAOSamples = static_cast (8.0 + 32.0*ssaoint); - SSAOJitter = PI / 12; + SSAOJitter = MY_PI / 12; ambientColor[0] = 0.5; ambientColor[1] = 0.5; ambientColor[2] = 0.5; @@ -832,7 +829,7 @@ void DumpImage::color_minmax() else locurrent = mlovalue; if (mhi == MAXVALUE) hicurrent = twoall[1]; else hicurrent = mhivalue; - if (locurrent > hicurrent) error->all("Invalid dump image color range"); + if (locurrent > hicurrent) error->all(FLERR,"Invalid dump image color range"); if (mstyle == CONTINUOUS) { if (mrange == ABSOLUTE) mentry[0].svalue = locurrent; @@ -1235,6 +1232,8 @@ void DumpImage::draw_cylinder(double *x, double *y, if (zaxis[0] == camDir[0] && zaxis[1] == camDir[1] && zaxis[2] == camDir[2]) return; + if (zaxis[0] == -camDir[0] && zaxis[1] == -camDir[1] && + zaxis[2] == -camDir[2]) return; MathExtra::cross3(zaxis,camDir,yaxis); MathExtra::norm3(yaxis); @@ -1359,7 +1358,7 @@ void DumpImage::compute_SSAO() { // used for rasterizing the spheres - double delTheta = 2.0*PI / SSAOSamples; + double delTheta = 2.0*MY_PI / SSAOSamples; // typical neighborhood value for shading @@ -1502,6 +1501,7 @@ void DumpImage::write_JPG() } jpeg_finish_compress(&cinfo); + jpeg_destroy_compress(&cinfo); #endif } @@ -1573,7 +1573,7 @@ int DumpImage::modify_param(int narg, char **arg) if (n) return n; if (strcmp(arg[0],"acolor") == 0) { - if (narg < 3) error->all("Illegal dump_modify command"); + if (narg < 3) error->all(FLERR,"Illegal dump_modify command"); int nlo,nhi; force->bounds(arg[1],atom->ntypes,nlo,nhi); @@ -1598,47 +1598,47 @@ int DumpImage::modify_param(int narg, char **arg) for (int i = nlo; i <= nhi; i++) { colortype[i] = color2rgb(ptrs[m%ncount]); if (colortype[i] == NULL) - error->all("Invalid color in dump_modify command"); + error->all(FLERR,"Invalid color in dump_modify command"); m++; } delete [] ptrs; return 3; } else if (strcmp(arg[0],"adiam") == 0) { - if (narg < 3) error->all("Illegal dump_modify command"); + if (narg < 3) error->all(FLERR,"Illegal dump_modify command"); int nlo,nhi; force->bounds(arg[1],atom->ntypes,nlo,nhi); double diam = atof(arg[2]); - if (diam <= 0.0) error->all("Illegal dump_modify command"); + if (diam <= 0.0) error->all(FLERR,"Illegal dump_modify command"); for (int i = nlo; i <= nhi; i++) diamtype[i] = diam; return 3; } else if (strcmp(arg[0],"amap") == 0) { - if (narg < 6) error->all("Illegal dump_modify command"); + if (narg < 6) error->all(FLERR,"Illegal dump_modify command"); if (!islower(arg[1][0])) { mlo = NUMERIC; mlovalue = atof(arg[1]); } else if (strcmp(arg[1],"min") == 0) mlo = MINVALUE; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); if (!islower(arg[2][0])) { mhi = NUMERIC; mhivalue = atof(arg[2]); } else if (strcmp(arg[2],"max") == 0) mhi = MAXVALUE; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); if (mlo == NUMERIC && mhi == NUMERIC && mlovalue >= mhivalue) - error->all("Illega dump_modify command"); + error->all(FLERR,"Illega dump_modify command"); - if (strlen(arg[3]) != 2) error->all("Illegal dump_modify command"); + if (strlen(arg[3]) != 2) error->all(FLERR,"Illegal dump_modify command"); if (arg[3][0] == 'c') mstyle = CONTINUOUS; else if (arg[3][0] == 'd') mstyle = DISCRETE; else if (arg[3][0] == 's') mstyle = SEQUENTIAL; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); if (arg[3][1] == 'a') mrange = ABSOLUTE; else if (arg[3][1] == 'f') mrange = FRACTIONAL; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); if (mstyle == SEQUENTIAL) { mbinsize = atof(arg[4]); - if (mbinsize <= 0.0) error->all("Illegal dump_modify command"); + if (mbinsize <= 0.0) error->all(FLERR,"Illegal dump_modify command"); } mbinsizeinv = 1.0/mbinsize; @@ -1647,61 +1647,61 @@ int DumpImage::modify_param(int narg, char **arg) int n = 6; for (int i = 0; i < nentry; i++) { if (mstyle == CONTINUOUS) { - if (n+2 > narg) error->all("Illegal dump_modify command"); + if (n+2 > narg) error->all(FLERR,"Illegal dump_modify command"); if (!islower(arg[n][0])) { mentry[i].single = NUMERIC; mentry[i].svalue = atof(arg[n]); } else if (strcmp(arg[n],"min") == 0) mentry[i].single = MINVALUE; else if (strcmp(arg[n],"max") == 0) mentry[i].single = MAXVALUE; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); mentry[i].color = color2rgb(arg[n+1]); n += 2; } else if (mstyle == DISCRETE) { - if (n+3 > narg) error->all("Illegal dump_modify command"); + if (n+3 > narg) error->all(FLERR,"Illegal dump_modify command"); if (!islower(arg[n][0])) { mentry[i].lo = NUMERIC; mentry[i].lvalue = atof(arg[n]); } else if (strcmp(arg[n],"min") == 0) mentry[i].single = MINVALUE; else if (strcmp(arg[n],"max") == 0) mentry[i].single = MAXVALUE; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); if (!islower(arg[n+1][0])) { mentry[i].hi = NUMERIC; mentry[i].hvalue = atof(arg[n+1]); } else if (strcmp(arg[n+1],"min") == 0) mentry[i].single = MINVALUE; else if (strcmp(arg[n+1],"max") == 0) mentry[i].single = MAXVALUE; - else error->all("Illegal dump_modify command"); + else error->all(FLERR,"Illegal dump_modify command"); mentry[i].color = color2rgb(arg[n+2]); n += 3; } else if (mstyle == SEQUENTIAL) { - if (n+1 > narg) error->all("Illegal dump_modify command"); + if (n+1 > narg) error->all(FLERR,"Illegal dump_modify command"); mentry[i].color = color2rgb(arg[n]); n += 1; } if (mentry[i].color == NULL) - error->all("Invalid color in dump_modify command"); + error->all(FLERR,"Invalid color in dump_modify command"); } if (mstyle == CONTINUOUS) { - if (nentry < 2) error->all("Invalid color map in dump_modify command"); + if (nentry < 2) error->all(FLERR,"Invalid color map in dump_modify command"); if (mentry[0].single != MINVALUE || mentry[nentry-1].single != MAXVALUE) - error->all("Invalid color map in dump_modify command"); + error->all(FLERR,"Invalid color map in dump_modify command"); for (int i = 2; i < nentry-1; i++) if (mentry[i].svalue <= mentry[i-1].svalue) - error->all("Invalid color map in dump_modify command"); + error->all(FLERR,"Invalid color map in dump_modify command"); } else if (mstyle == DISCRETE) { - if (nentry < 1) error->all("Invalid color map in dump_modify command"); + if (nentry < 1) error->all(FLERR,"Invalid color map in dump_modify command"); if (mentry[nentry-1].lo != MINVALUE || mentry[nentry-1].hi != MAXVALUE) - error->all("Invalid color map in dump_modify command"); + error->all(FLERR,"Invalid color map in dump_modify command"); } else if (mstyle == SEQUENTIAL) { - if (nentry < 1) error->all("Invalid color map in dump_modify command"); + if (nentry < 1) error->all(FLERR,"Invalid color map in dump_modify command"); } return n; } else if (strcmp(arg[0],"bcolor") == 0) { - if (narg < 3) error->all("Illegal dump_modify command"); + if (narg < 3) error->all(FLERR,"Illegal dump_modify command"); if (atom->nbondtypes == 0) - error->all("Dump modify bcolor not allowed with no bond types"); + error->all(FLERR,"Dump modify bcolor not allowed with no bond types"); int nlo,nhi; force->bounds(arg[1],atom->nbondtypes,nlo,nhi); @@ -1726,7 +1726,7 @@ int DumpImage::modify_param(int narg, char **arg) for (int i = nlo; i <= nhi; i++) { bcolortype[i] = color2rgb(ptrs[m%ncount]); if (bcolortype[i] == NULL) - error->all("Invalid color in dump_modify command"); + error->all(FLERR,"Invalid color in dump_modify command"); m++; } @@ -1734,33 +1734,33 @@ int DumpImage::modify_param(int narg, char **arg) return 3; } else if (strcmp(arg[0],"bdiam") == 0) { - if (narg < 3) error->all("Illegal dump_modify command"); + if (narg < 3) error->all(FLERR,"Illegal dump_modify command"); if (atom->nbondtypes == 0) - error->all("Dump modify bdiam not allowed with no bond types"); + error->all(FLERR,"Dump modify bdiam not allowed with no bond types"); int nlo,nhi; force->bounds(arg[1],atom->ntypes,nlo,nhi); double diam = atof(arg[2]); - if (diam <= 0.0) error->all("Illegal dump_modify command"); + if (diam <= 0.0) error->all(FLERR,"Illegal dump_modify command"); for (int i = nlo; i <= nhi; i++) bdiamtype[i] = diam; return 3; } else if (strcmp(arg[0],"backcolor") == 0) { - if (narg < 2) error->all("Illegal dump_modify command"); + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); double *color = color2rgb(arg[1]); - if (color == NULL) error->all("Invalid color in dump_modify command"); + if (color == NULL) error->all(FLERR,"Invalid color in dump_modify command"); background[0] = static_cast (color[0]*255.0); background[1] = static_cast (color[1]*255.0); background[2] = static_cast (color[2]*255.0); return 2; } else if (strcmp(arg[0],"boxcolor") == 0) { - if (narg < 2) error->all("Illegal dump_modify command"); + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); boxcolor = color2rgb(arg[1]); - if (boxcolor == NULL) error->all("Invalid color in dump_modify command"); + if (boxcolor == NULL) error->all(FLERR,"Invalid color in dump_modify command"); return 2; } else if (strcmp(arg[0],"color") == 0) { - if (narg < 5) error->all("Illegal dump_modify command"); + if (narg < 5) error->all(FLERR,"Illegal dump_modify command"); username = (char **) memory->srealloc(username,(ncolors+1)*sizeof(char *),"dump:username"); memory->grow(userrgb,ncolors+1,3,"dump:userrgb"); @@ -1773,7 +1773,7 @@ int DumpImage::modify_param(int narg, char **arg) if (userrgb[ncolors][0] < 0.0 || userrgb[ncolors][0] > 1.0 || userrgb[ncolors][1] < 0.0 || userrgb[ncolors][1] > 1.0 || userrgb[ncolors][2] < 0.0 || userrgb[ncolors][2] > 1.0) - error->all("Illegal dump_modify command"); + error->all(FLERR,"Illegal dump_modify command"); ncolors++; return 5; } diff --git a/src/dump_image.h b/src/dump_image.h index 866fc32e89..844ba1c112 100644 --- a/src/dump_image.h +++ b/src/dump_image.h @@ -69,8 +69,6 @@ class DumpImage : public DumpCustom { // constant view params - double PI; - double FOV; double ambientColor[3]; diff --git a/src/dump_local.cpp b/src/dump_local.cpp index aa1bad31c6..c95f77e7c0 100644 --- a/src/dump_local.cpp +++ b/src/dump_local.cpp @@ -35,7 +35,7 @@ enum{INT,DOUBLE}; DumpLocal::DumpLocal(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) { - if (narg == 5) error->all("No dump local arguments specified"); + if (narg == 5) error->all(FLERR,"No dump local arguments specified"); clearstep = 1; @@ -123,7 +123,7 @@ DumpLocal::~DumpLocal() void DumpLocal::init_style() { if (sort_flag && sortcol == 0) - error->all("Dump local cannot sort by atom ID"); + error->all(FLERR,"Dump local cannot sort by atom ID"); delete [] format; char *str; @@ -152,17 +152,17 @@ void DumpLocal::init_style() int icompute; for (int i = 0; i < ncompute; i++) { icompute = modify->find_compute(id_compute[i]); - if (icompute < 0) error->all("Could not find dump local compute ID"); + if (icompute < 0) error->all(FLERR,"Could not find dump local compute ID"); compute[i] = modify->compute[icompute]; } int ifix; for (int i = 0; i < nfix; i++) { ifix = modify->find_fix(id_fix[i]); - if (ifix < 0) error->all("Could not find dump local fix ID"); + if (ifix < 0) error->all(FLERR,"Could not find dump local fix ID"); fix[i] = modify->fix[ifix]; if (nevery % modify->fix[ifix]->local_freq) - error->all("Dump local and fix not computed at compatible times"); + error->all(FLERR,"Dump local and fix not computed at compatible times"); } // open single file, one time only @@ -175,7 +175,7 @@ void DumpLocal::init_style() int DumpLocal::modify_param(int narg, char **arg) { if (strcmp(arg[0],"label") == 0) { - if (narg < 2) error->all("Illegal dump_modify command"); + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); delete [] label; int n = strlen(arg[1]) + 1; label = new char[n]; @@ -223,13 +223,13 @@ int DumpLocal::count() for (int i = 0; i < ncompute; i++) { if (nmine < 0) nmine = compute[i]->size_local_rows; else if (nmine != compute[i]->size_local_rows) - error->one("Dump local count is not consistent across input fields"); + error->one(FLERR,"Dump local count is not consistent across input fields"); } for (int i = 0; i < nfix; i++) { if (nmine < 0) nmine = fix[i]->size_local_rows; else if (nmine != fix[i]->size_local_rows) - error->one("Dump local count is not consistent across input fields"); + error->one(FLERR,"Dump local count is not consistent across input fields"); } return nmine; @@ -290,22 +290,22 @@ void DumpLocal::parse_fields(int narg, char **arg) char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Invalid attribute in dump local command"); + error->all(FLERR,"Invalid attribute in dump local command"); argindex[i] = atoi(ptr+1); *ptr = '\0'; } else argindex[i] = 0; n = modify->find_compute(suffix); - if (n < 0) error->all("Could not find dump local compute ID"); + if (n < 0) error->all(FLERR,"Could not find dump local compute ID"); if (modify->compute[n]->local_flag == 0) - error->all("Dump local compute does not compute local info"); + error->all(FLERR,"Dump local compute does not compute local info"); if (argindex[i] == 0 && modify->compute[n]->size_local_cols > 0) - error->all("Dump local compute does not calculate local vector"); + error->all(FLERR,"Dump local compute does not calculate local vector"); if (argindex[i] > 0 && modify->compute[n]->size_local_cols == 0) - error->all("Dump local compute does not calculate local array"); + error->all(FLERR,"Dump local compute does not calculate local array"); if (argindex[i] > 0 && argindex[i] > modify->compute[n]->size_local_cols) - error->all("Dump local compute vector is accessed out-of-range"); + error->all(FLERR,"Dump local compute vector is accessed out-of-range"); field2index[i] = add_compute(suffix); delete [] suffix; @@ -325,31 +325,31 @@ void DumpLocal::parse_fields(int narg, char **arg) char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Invalid attribute in dump local command"); + error->all(FLERR,"Invalid attribute in dump local command"); argindex[i] = atoi(ptr+1); *ptr = '\0'; } else argindex[i] = 0; n = modify->find_fix(suffix); - if (n < 0) error->all("Could not find dump local fix ID"); + if (n < 0) error->all(FLERR,"Could not find dump local fix ID"); if (modify->fix[n]->local_flag == 0) - error->all("Dump local fix does not compute local info"); + error->all(FLERR,"Dump local fix does not compute local info"); if (argindex[i] == 0 && modify->fix[n]->size_local_cols > 0) - error->all("Dump local fix does not compute local vector"); + error->all(FLERR,"Dump local fix does not compute local vector"); if (argindex[i] > 0 && modify->fix[n]->size_local_cols == 0) - error->all("Dump local fix does not compute local array"); + error->all(FLERR,"Dump local fix does not compute local array"); if (argindex[i] > 0 && argindex[i] > modify->fix[n]->size_local_cols) - error->all("Dump local fix vector is accessed out-of-range"); + error->all(FLERR,"Dump local fix vector is accessed out-of-range"); field2index[i] = add_fix(suffix); delete [] suffix; - } else error->all("Invalid attribute in dump local command"); + } else error->all(FLERR,"Invalid attribute in dump local command"); } if (computefixflag == 0) - error->all("Dump local attributes contain no compute or fix"); + error->all(FLERR,"Dump local attributes contain no compute or fix"); } /* ---------------------------------------------------------------------- diff --git a/src/dump_xyz.cpp b/src/dump_xyz.cpp index d9814cdf7a..817e376fbf 100644 --- a/src/dump_xyz.cpp +++ b/src/dump_xyz.cpp @@ -24,8 +24,8 @@ using namespace LAMMPS_NS; DumpXYZ::DumpXYZ(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) { - if (narg != 5) error->all("Illegal dump xyz command"); - if (binary || multiproc) error->all("Invalid dump xyz filename"); + if (narg != 5) error->all(FLERR,"Illegal dump xyz command"); + if (binary || multiproc) error->all(FLERR,"Invalid dump xyz filename"); size_one = 5; sort_flag = 1; diff --git a/src/error.cpp b/src/error.cpp index 81f40a5498..c9297eb75d 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -29,13 +29,15 @@ Error::Error(LAMMPS *lmp) : Pointers(lmp) {} close all output, screen, and log files in world and universe ------------------------------------------------------------------------- */ -void Error::universe_all(const char *str) +void Error::universe_all(const char *file, int line, const char *str) { MPI_Barrier(universe->uworld); if (universe->me == 0) { - if (universe->uscreen) fprintf(universe->uscreen,"ERROR: %s\n",str); - if (universe->ulogfile) fprintf(universe->ulogfile,"ERROR: %s\n",str); + if (universe->uscreen) fprintf(universe->uscreen, + "ERROR: %s (%s:%d)\n",str,file,line); + if (universe->ulogfile) fprintf(universe->ulogfile, + "ERROR: %s (%s:%d)\n",str,file,line); } if (output) delete output; @@ -53,10 +55,11 @@ void Error::universe_all(const char *str) called by one proc in universe ------------------------------------------------------------------------- */ -void Error::universe_one(const char *str) +void Error::universe_one(const char *file, int line, const char *str) { if (universe->uscreen) - fprintf(universe->uscreen,"ERROR on proc %d: %s\n",universe->me,str); + fprintf(universe->uscreen,"ERROR on proc %d: %s (%s:%d)\n", + universe->me,str,file,line); MPI_Abort(universe->uworld,1); } @@ -65,7 +68,7 @@ void Error::universe_one(const char *str) close all output, screen, and log files in world ------------------------------------------------------------------------- */ -void Error::all(const char *str) +void Error::all(const char *file, int line, const char *str) { MPI_Barrier(world); @@ -73,8 +76,8 @@ void Error::all(const char *str) MPI_Comm_rank(world,&me); if (me == 0) { - if (screen) fprintf(screen,"ERROR: %s\n",str); - if (logfile) fprintf(logfile,"ERROR: %s\n",str); + if (screen) fprintf(screen,"ERROR: %s (%s:%d)\n",str,file,line); + if (logfile) fprintf(logfile,"ERROR: %s (%s:%d)\n",str,file,line); } if (output) delete output; @@ -91,13 +94,15 @@ void Error::all(const char *str) always write to universe screen ------------------------------------------------------------------------- */ -void Error::one(const char *str) +void Error::one(const char *file, int line, const char *str) { int me; MPI_Comm_rank(world,&me); - if (screen) fprintf(screen,"ERROR on proc %d: %s\n",me,str); + if (screen) fprintf(screen,"ERROR on proc %d: %s (%s:%d)\n", + me,str,file,line); if (universe->nworlds > 1) - fprintf(universe->uscreen,"ERROR on proc %d: %s\n",universe->me,str); + fprintf(universe->uscreen,"ERROR on proc %d: %s (%s:%d)\n", + universe->me,str,file,line); MPI_Abort(world,1); } @@ -106,10 +111,11 @@ void Error::one(const char *str) only write to screen if non-NULL on this proc since could be file ------------------------------------------------------------------------- */ -void Error::warning(const char *str, int logflag) +void Error::warning(const char *file, int line, const char *str, int logflag) { - if (screen) fprintf(screen,"WARNING: %s\n",str); - if (logflag && logfile) fprintf(logfile,"WARNING: %s\n",str); + if (screen) fprintf(screen,"WARNING: %s (%s:%d)\n",str,file,line); + if (logflag && logfile) fprintf(logfile,"WARNING: %s (%s:%d)\n", + str,file,line); } /* ---------------------------------------------------------------------- @@ -117,10 +123,10 @@ void Error::warning(const char *str, int logflag) write message to screen and logfile (if logflag is set) ------------------------------------------------------------------------- */ -void Error::message(char *str, int logflag) +void Error::message(const char *file, int line, char *str, int logflag) { - if (screen) fprintf(screen,"%s\n",str); - if (logflag && logfile) fprintf(logfile,"%s\n",str); + if (screen) fprintf(screen,"%s (%s:%d)\n",str,file,line); + if (logflag && logfile) fprintf(logfile,"%s (%s:%d)\n",str,file,line); } /* ---------------------------------------------------------------------- diff --git a/src/error.h b/src/error.h index 8c55a046c9..395581dee3 100644 --- a/src/error.h +++ b/src/error.h @@ -22,13 +22,13 @@ class Error : protected Pointers { public: Error(class LAMMPS *); - void universe_all(const char *); - void universe_one(const char *); + void universe_all(const char *, int, const char *); + void universe_one(const char *, int, const char *); - void all(const char *); - void one(const char *); - void warning(const char *, int = 1); - void message(char *, int = 1); + void all(const char *, int, const char *); + void one(const char *, int, const char *); + void warning(const char *, int, const char *, int = 1); + void message(const char *, int, char *, int = 1); void done(); }; diff --git a/src/finish.cpp b/src/finish.cpp index 9fe68ec2d0..fb43f1c7ba 100644 --- a/src/finish.cpp +++ b/src/finish.cpp @@ -18,6 +18,7 @@ #include "finish.h" #include "timer.h" #include "atom.h" +#include "comm.h" #include "force.h" #include "kspace.h" #include "update.h" @@ -30,9 +31,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ Finish::Finish(LAMMPS *lmp) : Pointers(lmp) {} @@ -82,7 +80,22 @@ void Finish::end(int flag) time_loop = tmp/nprocs; // overall loop time - + +#if defined(_OPENMP) + if (me == 0) { + int ntasks = nprocs * comm->nthreads; + if (screen) fprintf(screen, + "Loop time of %g on %d procs (%d MPI x %d OpenMP) " + "for %d steps with " BIGINT_FORMAT " atoms\n", + time_loop,ntasks,nprocs,comm->nthreads, + update->nsteps,atom->natoms); + if (logfile) fprintf(logfile, + "Loop time of %g on %d procs (%d MPI x %d OpenMP) " + "for %d steps with " BIGINT_FORMAT " atoms\n", + time_loop,ntasks,nprocs,comm->nthreads, + update->nsteps,atom->natoms); + } +#else if (me == 0) { if (screen) fprintf(screen, "Loop time of %g on %d procs for %d steps with " @@ -92,7 +105,8 @@ void Finish::end(int flag) "Loop time of %g on %d procs for %d steps with " BIGINT_FORMAT " atoms\n", time_loop,nprocs,update->nsteps,atom->natoms); - } + } +#endif if (time_loop == 0.0) time_loop = 1.0; } diff --git a/src/fix.cpp b/src/fix.cpp index 2ed2dc7485..dc4263b7d1 100644 --- a/src/fix.cpp +++ b/src/fix.cpp @@ -34,10 +34,10 @@ Fix::Fix(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) for (int i = 0; i < n-1; i++) if (!isalnum(id[i]) && id[i] != '_') - error->all("Fix ID must be alphanumeric or underscore characters"); + error->all(FLERR,"Fix ID must be alphanumeric or underscore characters"); igroup = group->find(arg[1]); - if (igroup == -1) error->all("Could not find fix group ID"); + if (igroup == -1) error->all(FLERR,"Could not find fix group ID"); groupbit = group->bitmask[igroup]; n = strlen(arg[2]) + 1; @@ -107,19 +107,19 @@ Fix::~Fix() void Fix::modify_params(int narg, char **arg) { - if (narg == 0) error->all("Illegal fix_modify command"); + if (narg == 0) error->all(FLERR,"Illegal fix_modify command"); int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"energy") == 0) { - if (iarg+2 > narg) error->all("Illegal fix_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); if (strcmp(arg[iarg+1],"no") == 0) thermo_energy = 0; else if (strcmp(arg[iarg+1],"yes") == 0) thermo_energy = 1; - else error->all("Illegal fix_modify command"); + else error->all(FLERR,"Illegal fix_modify command"); iarg += 2; } else { int n = modify_param(narg-iarg,&arg[iarg]); - if (n == 0) error->all("Illegal fix_modify command"); + if (n == 0) error->all(FLERR,"Illegal fix_modify command"); iarg += n; } } diff --git a/src/fix_adapt.cpp b/src/fix_adapt.cpp index d5825b5616..59af597bc3 100644 --- a/src/fix_adapt.cpp +++ b/src/fix_adapt.cpp @@ -24,24 +24,23 @@ #include "kspace.h" #include "input.h" #include "variable.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; enum{PAIR,KSPACE,ATOM}; enum{DIAMETER}; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 5) error->all("Illegal fix adapt command"); + if (narg < 5) error->all(FLERR,"Illegal fix adapt command"); nevery = atoi(arg[3]); - if (nevery < 0) error->all("Illegal fix adapt command"); + if (nevery < 0) error->all(FLERR,"Illegal fix adapt command"); // count # of adaptations @@ -50,21 +49,21 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) int iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"pair") == 0) { - if (iarg+6 > narg) error->all("Illegal fix adapt command"); + if (iarg+6 > narg) error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 6; } else if (strcmp(arg[iarg],"kspace") == 0) { - if (iarg+2 > narg) error->all("Illegal fix adapt command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 2; } else if (strcmp(arg[iarg],"atom") == 0) { - if (iarg+3 > narg) error->all("Illegal fix adapt command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 3; } else break; } - if (nadapt == 0) error->all("Illegal fix adapt command"); + if (nadapt == 0) error->all(FLERR,"Illegal fix adapt command"); adapt = new Adapt[nadapt]; // parse keywords @@ -75,7 +74,7 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"pair") == 0) { - if (iarg+6 > narg) error->all("Illegal fix adapt command"); + if (iarg+6 > narg) error->all(FLERR,"Illegal fix adapt command"); adapt[nadapt].which = PAIR; int n = strlen(arg[iarg+1]) + 1; adapt[nadapt].pstyle = new char[n]; @@ -91,31 +90,31 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) n = strlen(&arg[iarg+5][2]) + 1; adapt[nadapt].var = new char[n]; strcpy(adapt[nadapt].var,&arg[iarg+5][2]); - } else error->all("Illegal fix adapt command"); + } else error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 6; } else if (strcmp(arg[iarg],"kspace") == 0) { - if (iarg+2 > narg) error->all("Illegal fix adapt command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command"); adapt[nadapt].which = KSPACE; if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { int n = strlen(&arg[iarg+1][2]) + 1; adapt[nadapt].var = new char[n]; strcpy(adapt[nadapt].var,&arg[iarg+1][2]); - } else error->all("Illegal fix adapt command"); + } else error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 2; } else if (strcmp(arg[iarg],"atom") == 0) { - if (iarg+3 > narg) error->all("Illegal fix adapt command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix adapt command"); adapt[nadapt].which = ATOM; if (strcmp(arg[iarg+1],"diameter") == 0) { adapt[nadapt].aparam = DIAMETER; diamflag = 1; - } else error->all("Illegal fix adapt command"); + } else error->all(FLERR,"Illegal fix adapt command"); if (strstr(arg[iarg+2],"v_") == arg[iarg+2]) { int n = strlen(&arg[iarg+2][2]) + 1; adapt[nadapt].var = new char[n]; strcpy(adapt[nadapt].var,&arg[iarg+2][2]); - } else error->all("Illegal fix adapt command"); + } else error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 3; } else break; @@ -128,18 +127,18 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) while (iarg < narg) { if (strcmp(arg[iarg],"reset") == 0) { - if (iarg+2 > narg) error->all("Illegal fix adapt command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command"); if (strcmp(arg[iarg+1],"no") == 0) resetflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) resetflag = 1; - else error->all("Illegal fix adapt command"); + else error->all(FLERR,"Illegal fix adapt command"); iarg += 2; } else if (strcmp(arg[iarg],"scale") == 0) { - if (iarg+2 > narg) error->all("Illegal fix adapt command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command"); if (strcmp(arg[iarg+1],"no") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) scaleflag = 1; - else error->all("Illegal fix adapt command"); + else error->all(FLERR,"Illegal fix adapt command"); iarg += 2; - } else error->all("Illegal fix adapt command"); + } else error->all(FLERR,"Illegal fix adapt command"); } // allocate pair style arrays @@ -190,17 +189,17 @@ void FixAdapt::init() ad->ivar = input->variable->find(ad->var); if (ad->ivar < 0) - error->all("Variable name for fix adapt does not exist"); + error->all(FLERR,"Variable name for fix adapt does not exist"); if (!input->variable->equalstyle(ad->ivar)) - error->all("Variable for fix adapt is invalid style"); + error->all(FLERR,"Variable for fix adapt is invalid style"); if (ad->which == PAIR) { anypair = 1; Pair *pair = force->pair_match(ad->pstyle,1); - if (pair == NULL) error->all("Fix adapt pair style does not exist"); + if (pair == NULL) error->all(FLERR,"Fix adapt pair style does not exist"); void *ptr = pair->extract(ad->pparam,ad->pdim); - if (ptr == NULL) error->all("Fix adapt pair style param not supported"); + if (ptr == NULL) error->all(FLERR,"Fix adapt pair style param not supported"); ad->pdim = 2; if (ad->pdim == 0) ad->scalar = (double *) ptr; @@ -214,19 +213,19 @@ void FixAdapt::init() for (i = ad->ilo; i <= ad->ihi; i++) for (j = MAX(ad->jlo,i); j <= ad->jhi; j++) if (!pair->check_ijtype(i,j,ad->pstyle)) - error->all("Fix adapt type pair range is not valid for " + error->all(FLERR,"Fix adapt type pair range is not valid for " "pair hybrid sub-style"); } } else if (ad->which == KSPACE) { if (force->kspace == NULL) - error->all("Fix adapt kspace style does not exist"); + error->all(FLERR,"Fix adapt kspace style does not exist"); kspace_scale = (double *) force->kspace->extract("scale"); } else if (ad->which == ATOM) { if (ad->aparam == DIAMETER) { if (!atom->radius_flag) - error->all("Fix adapt requires atom attribute diameter"); + error->all(FLERR,"Fix adapt requires atom attribute diameter"); } } } @@ -312,7 +311,6 @@ void FixAdapt::change_settings() if (ad->aparam == DIAMETER) { int mflag = 0; if (atom->rmass_flag) mflag = 1; - double PI = 4.0*atan(1.0); double density; double *radius = atom->radius; @@ -327,9 +325,11 @@ void FixAdapt::change_settings() } else { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) { - density = rmass[i] / (4.0*PI/3.0 * radius[i]*radius[i]*radius[i]); + density = rmass[i] / (4.0*MY_PI/3.0 * + radius[i]*radius[i]*radius[i]); radius[i] = 0.5*value; - rmass[i] = 4.0*PI/3.0 * radius[i]*radius[i]*radius[i] * density; + rmass[i] = 4.0*MY_PI/3.0 * + radius[i]*radius[i]*radius[i] * density; } } } diff --git a/src/fix_addforce.cpp b/src/fix_addforce.cpp index fa5c3be606..fee57525d8 100644 --- a/src/fix_addforce.cpp +++ b/src/fix_addforce.cpp @@ -34,7 +34,7 @@ enum{NONE,CONSTANT,EQUAL,ATOM}; FixAddForce::FixAddForce(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 6) error->all("Illegal fix addforce command"); + if (narg < 6) error->all(FLERR,"Illegal fix addforce command"); scalar_flag = 1; vector_flag = 1; @@ -79,23 +79,23 @@ FixAddForce::FixAddForce(LAMMPS *lmp, int narg, char **arg) : int iarg = 6; while (iarg < narg) { if (strcmp(arg[iarg],"region") == 0) { - if (iarg+2 > narg) error->all("Illegal fix addforce command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix addforce command"); iregion = domain->find_region(arg[iarg+1]); if (iregion == -1) - error->all("Region ID for fix addforce does not exist"); + error->all(FLERR,"Region ID for fix addforce does not exist"); int n = strlen(arg[iarg+1]) + 1; idregion = new char[n]; strcpy(idregion,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"energy") == 0) { - if (iarg+2 > narg) error->all("Illegal fix addforce command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix addforce command"); if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { int n = strlen(&arg[iarg+1][2]) + 1; estr = new char[n]; strcpy(estr,&arg[iarg+1][2]); - } else error->all("Illegal fix addforce command"); + } else error->all(FLERR,"Illegal fix addforce command"); iarg += 2; - } else error->all("Illegal fix addforce command"); + } else error->all(FLERR,"Illegal fix addforce command"); } force_flag = 0; @@ -137,37 +137,42 @@ void FixAddForce::init() if (xstr) { xvar = input->variable->find(xstr); - if (xvar < 0) error->all("Variable name for fix addforce does not exist"); + if (xvar < 0) + error->all(FLERR,"Variable name for fix addforce does not exist"); if (input->variable->equalstyle(xvar)) xstyle = EQUAL; else if (input->variable->atomstyle(xvar)) xstyle = ATOM; - else error->all("Variable for fix addforce is invalid style"); + else error->all(FLERR,"Variable for fix addforce is invalid style"); } if (ystr) { yvar = input->variable->find(ystr); - if (yvar < 0) error->all("Variable name for fix addforce does not exist"); + if (yvar < 0) + error->all(FLERR,"Variable name for fix addforce does not exist"); if (input->variable->equalstyle(yvar)) ystyle = EQUAL; else if (input->variable->atomstyle(yvar)) ystyle = ATOM; - else error->all("Variable for fix addforce is invalid style"); + else error->all(FLERR,"Variable for fix addforce is invalid style"); } if (zstr) { zvar = input->variable->find(zstr); - if (zvar < 0) error->all("Variable name for fix addforce does not exist"); + if (zvar < 0) + error->all(FLERR,"Variable name for fix addforce does not exist"); if (input->variable->equalstyle(zvar)) zstyle = EQUAL; else if (input->variable->atomstyle(zvar)) zstyle = ATOM; - else error->all("Variable for fix addforce is invalid style"); + else error->all(FLERR,"Variable for fix addforce is invalid style"); } if (estr) { evar = input->variable->find(estr); - if (evar < 0) error->all("Variable name for fix addforce does not exist"); + if (evar < 0) + error->all(FLERR,"Variable name for fix addforce does not exist"); if (input->variable->atomstyle(evar)) estyle = ATOM; - else error->all("Variable for fix addforce is invalid style"); + else error->all(FLERR,"Variable for fix addforce is invalid style"); } else estyle = NONE; // set index and check validity of region if (iregion >= 0) { iregion = domain->find_region(idregion); - if (iregion == -1) error->all("Region ID for fix addforce does not exist"); + if (iregion == -1) + error->all(FLERR,"Region ID for fix addforce does not exist"); } if (xstyle == ATOM || ystyle == ATOM || zstyle == ATOM) @@ -177,11 +182,11 @@ void FixAddForce::init() else varflag = CONSTANT; if (varflag == CONSTANT && estyle != NONE) - error->all("Cannot use variable energy with " + error->all(FLERR,"Cannot use variable energy with " "constant force in fix addforce"); if ((varflag == EQUAL || varflag == ATOM) && update->whichflag == 2 && estyle == NONE) - error->all("Must use variable energy with fix addforce"); + error->all(FLERR,"Must use variable energy with fix addforce"); if (strstr(update->integrate_style,"respa")) nlevels_respa = ((Respa *) update->integrate)->nlevels; diff --git a/src/fix_ave_atom.cpp b/src/fix_ave_atom.cpp index b604977f7e..01f21f9508 100644 --- a/src/fix_ave_atom.cpp +++ b/src/fix_ave_atom.cpp @@ -36,7 +36,7 @@ enum{X,V,F,COMPUTE,FIX,VARIABLE}; FixAveAtom::FixAveAtom(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 7) error->all("Illegal fix ave/atom command"); + if (narg < 7) error->all(FLERR,"Illegal fix ave/atom command"); time_depend = 1; @@ -100,7 +100,7 @@ FixAveAtom::FixAveAtom(LAMMPS *lmp, int narg, char **arg) : char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Illegal fix ave/atom command"); + error->all(FLERR,"Illegal fix ave/atom command"); argindex[nvalues] = atoi(ptr+1); *ptr = '\0'; } else argindex[nvalues] = 0; @@ -111,7 +111,7 @@ FixAveAtom::FixAveAtom(LAMMPS *lmp, int narg, char **arg) : nvalues++; delete [] suffix; - } else error->all("Illegal fix ave/atom command"); + } else error->all(FLERR,"Illegal fix ave/atom command"); iarg++; } @@ -120,49 +120,49 @@ FixAveAtom::FixAveAtom(LAMMPS *lmp, int narg, char **arg) : // for fix inputs, check that fix frequency is acceptable if (nevery <= 0 || nrepeat <= 0 || peratom_freq <= 0) - error->all("Illegal fix ave/atom command"); + error->all(FLERR,"Illegal fix ave/atom command"); if (peratom_freq % nevery || (nrepeat-1)*nevery >= peratom_freq) - error->all("Illegal fix ave/atom command"); + error->all(FLERR,"Illegal fix ave/atom command"); for (int i = 0; i < nvalues; i++) { if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/atom does not exist"); + error->all(FLERR,"Compute ID for fix ave/atom does not exist"); if (modify->compute[icompute]->peratom_flag == 0) - error->all("Fix ave/atom compute does not calculate per-atom values"); + error->all(FLERR,"Fix ave/atom compute does not calculate per-atom values"); if (argindex[i] == 0 && modify->compute[icompute]->size_peratom_cols != 0) - error->all("Fix ave/atom compute does not " + error->all(FLERR,"Fix ave/atom compute does not " "calculate a per-atom vector"); if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) - error->all("Fix ave/atom compute does not " + error->all(FLERR,"Fix ave/atom compute does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) - error->all("Fix ave/atom compute array is accessed out-of-range"); + error->all(FLERR,"Fix ave/atom compute array is accessed out-of-range"); } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/atom does not exist"); + error->all(FLERR,"Fix ID for fix ave/atom does not exist"); if (modify->fix[ifix]->peratom_flag == 0) - error->all("Fix ave/atom fix does not calculate per-atom values"); + error->all(FLERR,"Fix ave/atom fix does not calculate per-atom values"); if (argindex[i] == 0 && modify->fix[ifix]->size_peratom_cols != 0) - error->all("Fix ave/atom fix does not calculate a per-atom vector"); + error->all(FLERR,"Fix ave/atom fix does not calculate a per-atom vector"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) - error->all("Fix ave/atom fix does not calculate a per-atom array"); + error->all(FLERR,"Fix ave/atom fix does not calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) - error->all("Fix ave/atom fix array is accessed out-of-range"); + error->all(FLERR,"Fix ave/atom fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->peratom_freq) - error->all("Fix for fix ave/atom not computed at compatible time"); + error->all(FLERR,"Fix for fix ave/atom not computed at compatible time"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for fix ave/atom does not exist"); + error->all(FLERR,"Variable name for fix ave/atom does not exist"); if (input->variable->atomstyle(ivariable) == 0) - error->all("Fix ave/atom variable is not atom-style variable"); + error->all(FLERR,"Fix ave/atom variable is not atom-style variable"); } } @@ -233,19 +233,19 @@ void FixAveAtom::init() if (which[m] == COMPUTE) { int icompute = modify->find_compute(ids[m]); if (icompute < 0) - error->all("Compute ID for fix ave/atom does not exist"); + error->all(FLERR,"Compute ID for fix ave/atom does not exist"); value2index[m] = icompute; } else if (which[m] == FIX) { int ifix = modify->find_fix(ids[m]); if (ifix < 0) - error->all("Fix ID for fix ave/atom does not exist"); + error->all(FLERR,"Fix ID for fix ave/atom does not exist"); value2index[m] = ifix; } else if (which[m] == VARIABLE) { int ivariable = input->variable->find(ids[m]); if (ivariable < 0) - error->all("Variable name for fix ave/atom does not exist"); + error->all(FLERR,"Variable name for fix ave/atom does not exist"); value2index[m] = ivariable; } else value2index[m] = -1; diff --git a/src/fix_ave_correlate.cpp b/src/fix_ave_correlate.cpp index 9abf3e46d2..b84fc06b4d 100644 --- a/src/fix_ave_correlate.cpp +++ b/src/fix_ave_correlate.cpp @@ -44,7 +44,7 @@ enum{AUTO,UPPER,LOWER,AUTOUPPER,AUTOLOWER,FULL}; FixAveCorrelate::FixAveCorrelate(LAMMPS * lmp, int narg, char **arg): Fix (lmp, narg, arg) { - if (narg < 7) error->all ("Illegal fix ave/correlate command"); + if (narg < 7) error->all(FLERR,"Illegal fix ave/correlate command"); MPI_Comm_rank(world,&me); @@ -79,7 +79,7 @@ FixAveCorrelate::FixAveCorrelate(LAMMPS * lmp, int narg, char **arg): char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Illegal fix ave/correlate command"); + error->all(FLERR,"Illegal fix ave/correlate command"); argindex[nvalues] = atoi(ptr+1); *ptr = '\0'; } else argindex[nvalues] = 0; @@ -107,107 +107,111 @@ FixAveCorrelate::FixAveCorrelate(LAMMPS * lmp, int narg, char **arg): while (iarg < narg) { if (strcmp(arg[iarg],"type") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/correlate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); if (strcmp(arg[iarg+1],"auto") == 0) type = AUTO; else if (strcmp(arg[iarg+1],"upper") == 0) type = UPPER; else if (strcmp(arg[iarg+1],"lower") == 0) type = LOWER; else if (strcmp(arg[iarg+1],"auto/upper") == 0) type = AUTOUPPER; else if (strcmp(arg[iarg+1],"auto/lower") == 0) type = AUTOLOWER; else if (strcmp(arg[iarg+1],"full") == 0) type = FULL; - else error->all("Illegal fix ave/correlate command"); + else error->all(FLERR,"Illegal fix ave/correlate command"); iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/correlate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; - else error->all("Illegal fix ave/correlate command"); + else error->all(FLERR,"Illegal fix ave/correlate command"); iarg += 2; } else if (strcmp(arg[iarg],"start") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/correlate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); startstep = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"prefactor") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/correlate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); prefactor = atof(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/correlate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix ave/correlate file %s",arg[iarg+1]); - error->one(str); + error->one(FLERR,str); } } iarg += 2; } else if (strcmp(arg[iarg],"title1") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/correlate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); delete [] title1; int n = strlen(arg[iarg+1]) + 1; title1 = new char[n]; strcpy(title1,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title2") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/correlate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); delete [] title2; int n = strlen(arg[iarg+1]) + 1; title2 = new char[n]; strcpy(title2,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/correlate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); delete [] title3; int n = strlen(arg[iarg+1]) + 1; title3 = new char[n]; strcpy(title3,arg[iarg+1]); iarg += 2; - } else error->all("Illegal fix ave/correlate command"); + } else error->all(FLERR,"Illegal fix ave/correlate command"); } // setup and error check // for fix inputs, check that fix frequency is acceptable if (nevery <= 0 || nrepeat <= 0 || nfreq <= 0) - error->all("Illegal fix ave/correlate command"); + error->all(FLERR,"Illegal fix ave/correlate command"); if (nfreq % nevery) - error->all("Illegal fix ave/correlate command"); + error->all(FLERR,"Illegal fix ave/correlate command"); if (ave == ONE && nfreq < (nrepeat-1)*nevery) - error->all("Illegal fix ave/correlate command"); + error->all(FLERR,"Illegal fix ave/correlate command"); for (int i = 0; i < nvalues; i++) { if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all ("Compute ID for fix ave/correlate does not exist"); + error->all(FLERR,"Compute ID for fix ave/correlate does not exist"); if (argindex[i] == 0 && modify->compute[icompute]->scalar_flag == 0) - error->all ("Fix ave/correlate compute does not calculate a scalar"); + error->all(FLERR, + "Fix ave/correlate compute does not calculate a scalar"); if (argindex[i] && modify->compute[icompute]->vector_flag == 0) - error->all ("Fix ave/correlate compute does not calculate a vector"); + error->all(FLERR, + "Fix ave/correlate compute does not calculate a vector"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_vector) - error->all ("Fix ave/correlate compute vector " - "is accessed out-of-range"); + error->all(FLERR,"Fix ave/correlate compute vector " + "is accessed out-of-range"); } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all ("Fix ID for fix ave/correlate does not exist"); + error->all(FLERR,"Fix ID for fix ave/correlate does not exist"); if (argindex[i] == 0 && modify->fix[ifix]->scalar_flag == 0) - error->all ("Fix ave/correlate fix does not calculate a scalar"); + error->all(FLERR,"Fix ave/correlate fix does not calculate a scalar"); if (argindex[i] && modify->fix[ifix]->vector_flag == 0) - error->all ("Fix ave/correlate fix does not calculate a vector"); + error->all(FLERR,"Fix ave/correlate fix does not calculate a vector"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_vector) - error->all ("Fix ave/correlate fix vector is accessed out-of-range"); + error->all(FLERR, + "Fix ave/correlate fix vector is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) - error->all("Fix for fix ave/correlate " + error->all(FLERR,"Fix for fix ave/correlate " "not computed at compatible time"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all ("Variable name for fix ave/correlate does not exist"); + error->all(FLERR,"Variable name for fix ave/correlate does not exist"); if (input->variable->equalstyle(ivariable) == 0) - error->all ("Fix ave/correlate variable is not equal-style variable"); + error->all(FLERR, + "Fix ave/correlate variable is not equal-style variable"); } } @@ -333,19 +337,19 @@ void FixAveCorrelate::init() if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/correlate does not exist"); + error->all(FLERR,"Compute ID for fix ave/correlate does not exist"); value2index[i] = icompute; } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/correlate does not exist"); + error->all(FLERR,"Fix ID for fix ave/correlate does not exist"); value2index[i] = ifix; } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for fix ave/correlate does not exist"); + error->all(FLERR,"Variable name for fix ave/correlate does not exist"); value2index[i] = ivariable; } } diff --git a/src/fix_ave_histo.cpp b/src/fix_ave_histo.cpp index 6692681f19..f7909ac258 100644 --- a/src/fix_ave_histo.cpp +++ b/src/fix_ave_histo.cpp @@ -40,15 +40,12 @@ enum{IGNORE,END,EXTRA}; #define INVOKED_LOCAL 16 #define BIG 1.0e20 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 10) error->all("Illegal fix ave/histo command"); + if (narg < 10) error->all(FLERR,"Illegal fix ave/histo command"); MPI_Comm_rank(world,&me); @@ -179,7 +176,7 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Illegal fix ave/histo command"); + error->all(FLERR,"Illegal fix ave/histo command"); argindex[nvalues] = atoi(ptr+1); *ptr = '\0'; } else argindex[nvalues] = 0; @@ -193,7 +190,7 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : argindex[nvalues] == 0) { int icompute = modify->find_compute(ids[nvalues]); if (icompute < 0) - error->all("Compute ID for fix ave/histo does not exist"); + error->all(FLERR,"Compute ID for fix ave/histo does not exist"); if (modify->compute[icompute]->array_flag) { int ncols = modify->compute[icompute]->size_array_cols; maxvalues += ncols-1; @@ -213,7 +210,7 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : argindex[nvalues] == 0) { int ifix = modify->find_fix(ids[nvalues]); if (ifix < 0) - error->all("Fix ID for fix ave/histo does not exist"); + error->all(FLERR,"Fix ID for fix ave/histo does not exist"); if (modify->fix[ifix]->array_flag) { int ncols = modify->fix[ifix]->size_array_cols; maxvalues += ncols-1; @@ -240,11 +237,11 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : // for fix inputs, check that fix frequency is acceptable if (nevery <= 0 || nrepeat <= 0 || nfreq <= 0) - error->all("Illegal fix ave/histo command"); + error->all(FLERR,"Illegal fix ave/histo command"); if (nfreq % nevery || (nrepeat-1)*nevery >= nfreq) - error->all("Illegal fix ave/histo command"); - if (lo >= hi) error->all("Illegal fix ave/histo command"); - if (nbins <= 0) error->all("Illegal fix ave/histo command"); + error->all(FLERR,"Illegal fix ave/histo command"); + if (lo >= hi) error->all(FLERR,"Illegal fix ave/histo command"); + if (nbins <= 0) error->all(FLERR,"Illegal fix ave/histo command"); int kindflag; for (int i = 0; i < nvalues; i++) { @@ -255,161 +252,161 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : kindflag = GLOBAL; else if (compute->peratom_flag) kindflag = PERATOM; else if (compute->local_flag) kindflag = LOCAL; - else error->all("Fix ave/histo input is invalid compute"); + else error->all(FLERR,"Fix ave/histo input is invalid compute"); } else if (which[i] == FIX) { Fix *fix = modify->fix[modify->find_fix(ids[0])]; if (fix->scalar_flag || fix->vector_flag || fix->array_flag) kindflag = GLOBAL; else if (fix->peratom_flag) kindflag = PERATOM; else if (fix->local_flag) kindflag = LOCAL; - else error->all("Fix ave/histo input is invalid fix"); + else error->all(FLERR,"Fix ave/histo input is invalid fix"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (input->variable->equalstyle(ivariable)) kindflag = GLOBAL; else if (input->variable->atomstyle(ivariable)) kindflag = PERATOM; - else error->all("Fix ave/histo input is invalid variable"); + else error->all(FLERR,"Fix ave/histo input is invalid variable"); } if (i == 0) kind = kindflag; else if (kindflag != kind) - error->all("Fix ave/histo inputs are not all global, peratom, or local"); + error->all(FLERR,"Fix ave/histo inputs are not all global, peratom, or local"); } if (kind == PERATOM && mode == SCALAR) - error->all("Fix ave/histo cannot input per-atom values in scalar mode"); + error->all(FLERR,"Fix ave/histo cannot input per-atom values in scalar mode"); if (kind == LOCAL && mode == SCALAR) - error->all("Fix ave/histo cannot input local values in scalar mode"); + error->all(FLERR,"Fix ave/histo cannot input local values in scalar mode"); for (int i = 0; i < nvalues; i++) { if (which[i] == COMPUTE && kind == GLOBAL && mode == SCALAR) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/histo does not exist"); + error->all(FLERR,"Compute ID for fix ave/histo does not exist"); if (argindex[i] == 0 && modify->compute[icompute]->scalar_flag == 0) - error->all("Fix ave/histo compute does not calculate a global scalar"); + error->all(FLERR,"Fix ave/histo compute does not calculate a global scalar"); if (argindex[i] && modify->compute[icompute]->vector_flag == 0) - error->all("Fix ave/histo compute does not calculate a global vector"); + error->all(FLERR,"Fix ave/histo compute does not calculate a global vector"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_vector) - error->all("Fix ave/histo compute vector is accessed out-of-range"); + error->all(FLERR,"Fix ave/histo compute vector is accessed out-of-range"); } else if (which[i] == COMPUTE && kind == GLOBAL && mode == VECTOR) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/histo does not exist"); + error->all(FLERR,"Compute ID for fix ave/histo does not exist"); if (argindex[i] == 0 && modify->compute[icompute]->vector_flag == 0) - error->all("Fix ave/histo compute does not calculate a global vector"); + error->all(FLERR,"Fix ave/histo compute does not calculate a global vector"); if (argindex[i] && modify->compute[icompute]->array_flag == 0) - error->all("Fix ave/histo compute does not calculate a global array"); + error->all(FLERR,"Fix ave/histo compute does not calculate a global array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_array_cols) - error->all("Fix ave/histo compute array is accessed out-of-range"); + error->all(FLERR,"Fix ave/histo compute array is accessed out-of-range"); } else if (which[i] == COMPUTE && kind == PERATOM) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/histo does not exist"); + error->all(FLERR,"Compute ID for fix ave/histo does not exist"); if (modify->compute[icompute]->peratom_flag == 0) - error->all("Fix ave/histo compute does not calculate per-atom values"); + error->all(FLERR,"Fix ave/histo compute does not calculate per-atom values"); if (argindex[i] == 0 && modify->compute[icompute]->size_peratom_cols != 0) - error->all("Fix ave/histo compute does not " + error->all(FLERR,"Fix ave/histo compute does not " "calculate a per-atom vector"); if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) - error->all("Fix ave/histo compute does not " + error->all(FLERR,"Fix ave/histo compute does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) - error->all("Fix ave/histo compute array is accessed out-of-range"); + error->all(FLERR,"Fix ave/histo compute array is accessed out-of-range"); } else if (which[i] == COMPUTE && kind == LOCAL) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/histo does not exist"); + error->all(FLERR,"Compute ID for fix ave/histo does not exist"); if (modify->compute[icompute]->local_flag == 0) - error->all("Fix ave/histo compute does not calculate local values"); + error->all(FLERR,"Fix ave/histo compute does not calculate local values"); if (argindex[i] == 0 && modify->compute[icompute]->size_local_cols != 0) - error->all("Fix ave/histo compute does not " + error->all(FLERR,"Fix ave/histo compute does not " "calculate a local vector"); if (argindex[i] && modify->compute[icompute]->size_local_cols == 0) - error->all("Fix ave/histo compute does not " + error->all(FLERR,"Fix ave/histo compute does not " "calculate a local array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_local_cols) - error->all("Fix ave/histo compute array is accessed out-of-range"); + error->all(FLERR,"Fix ave/histo compute array is accessed out-of-range"); } else if (which[i] == FIX && kind == GLOBAL && mode == SCALAR) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/histo does not exist"); + error->all(FLERR,"Fix ID for fix ave/histo does not exist"); if (argindex[i] == 0 && modify->fix[ifix]->scalar_flag == 0) - error->all("Fix ave/histo fix does not calculate a global scalar"); + error->all(FLERR,"Fix ave/histo fix does not calculate a global scalar"); if (argindex[i] && modify->fix[ifix]->vector_flag == 0) - error->all("Fix ave/histo fix does not calculate a global vector"); + error->all(FLERR,"Fix ave/histo fix does not calculate a global vector"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_vector) - error->all("Fix ave/histo fix vector is accessed out-of-range"); + error->all(FLERR,"Fix ave/histo fix vector is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) - error->all("Fix for fix ave/histo not computed at compatible time"); + error->all(FLERR,"Fix for fix ave/histo not computed at compatible time"); } else if (which[i] == FIX && kind == GLOBAL && mode == VECTOR) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/histo does not exist"); + error->all(FLERR,"Fix ID for fix ave/histo does not exist"); if (argindex[i] == 0 && modify->fix[ifix]->vector_flag == 0) - error->all("Fix ave/histo fix does not calculate a global vector"); + error->all(FLERR,"Fix ave/histo fix does not calculate a global vector"); if (argindex[i] && modify->fix[ifix]->array_flag == 0) - error->all("Fix ave/histo fix does not calculate a global array"); + error->all(FLERR,"Fix ave/histo fix does not calculate a global array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_array_cols) - error->all("Fix ave/histo fix array is accessed out-of-range"); + error->all(FLERR,"Fix ave/histo fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) - error->all("Fix for fix ave/histo not computed at compatible time"); + error->all(FLERR,"Fix for fix ave/histo not computed at compatible time"); } else if (which[i] == FIX && kind == PERATOM) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/histo does not exist"); + error->all(FLERR,"Fix ID for fix ave/histo does not exist"); if (modify->fix[ifix]->peratom_flag == 0) - error->all("Fix ave/histo fix does not calculate per-atom values"); + error->all(FLERR,"Fix ave/histo fix does not calculate per-atom values"); if (argindex[i] == 0 && modify->fix[ifix]->size_peratom_cols != 0) - error->all("Fix ave/histo fix does not " + error->all(FLERR,"Fix ave/histo fix does not " "calculate a per-atom vector"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) - error->all("Fix ave/histo fix does not " + error->all(FLERR,"Fix ave/histo fix does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) - error->all("Fix ave/histo fix array is accessed out-of-range"); + error->all(FLERR,"Fix ave/histo fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) - error->all("Fix for fix ave/histo not computed at compatible time"); + error->all(FLERR,"Fix for fix ave/histo not computed at compatible time"); } else if (which[i] == FIX && kind == LOCAL) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/histo does not exist"); + error->all(FLERR,"Fix ID for fix ave/histo does not exist"); if (modify->fix[ifix]->local_flag == 0) - error->all("Fix ave/histo fix does not calculate local values"); + error->all(FLERR,"Fix ave/histo fix does not calculate local values"); if (argindex[i] == 0 && modify->fix[ifix]->size_local_cols != 0) - error->all("Fix ave/histo fix does not " + error->all(FLERR,"Fix ave/histo fix does not " "calculate a local vector"); if (argindex[i] && modify->fix[ifix]->size_local_cols == 0) - error->all("Fix ave/histo fix does not " + error->all(FLERR,"Fix ave/histo fix does not " "calculate a local array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_local_cols) - error->all("Fix ave/histo fix array is accessed out-of-range"); + error->all(FLERR,"Fix ave/histo fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) - error->all("Fix for fix ave/histo not computed at compatible time"); + error->all(FLERR,"Fix for fix ave/histo not computed at compatible time"); } else if (which[i] == VARIABLE && kind == GLOBAL) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for fix ave/histo does not exist"); + error->all(FLERR,"Variable name for fix ave/histo does not exist"); } else if (which[i] == VARIABLE && kind == PERATOM) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for fix ave/histo does not exist"); + error->all(FLERR,"Variable name for fix ave/histo does not exist"); } } @@ -524,19 +521,19 @@ void FixAveHisto::init() if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/histo does not exist"); + error->all(FLERR,"Compute ID for fix ave/histo does not exist"); value2index[i] = icompute; } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/histo does not exist"); + error->all(FLERR,"Fix ID for fix ave/histo does not exist"); value2index[i] = ifix; } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for fix ave/histo does not exist"); + error->all(FLERR,"Variable name for fix ave/histo does not exist"); value2index[i] = ivariable; } } @@ -901,68 +898,68 @@ void FixAveHisto::options(int narg, char **arg) int iarg = 9 + nvalues; while (iarg < narg) { if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/histo command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix ave/histo file %s",arg[iarg+1]); - error->one(str); + error->one(FLERR,str); } } iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/histo command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else if (strcmp(arg[iarg+1],"window") == 0) ave = WINDOW; - else error->all("Illegal fix ave/histo command"); + else error->all(FLERR,"Illegal fix ave/histo command"); if (ave == WINDOW) { - if (iarg+3 > narg) error->all("Illegal fix ave/histo command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/histo command"); nwindow = atoi(arg[iarg+2]); - if (nwindow <= 0) error->all("Illegal fix ave/histo command"); + if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/histo command"); } iarg += 2; if (ave == WINDOW) iarg++; } else if (strcmp(arg[iarg],"start") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/histo command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); startstep = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"mode") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/histo command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); if (strcmp(arg[iarg+1],"scalar") == 0) mode = SCALAR; else if (strcmp(arg[iarg+1],"vector") == 0) mode = VECTOR; - else error->all("Illegal fix ave/histo command"); + else error->all(FLERR,"Illegal fix ave/histo command"); iarg += 2; } else if (strcmp(arg[iarg],"beyond") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/histo command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); if (strcmp(arg[iarg+1],"ignore") == 0) beyond = IGNORE; else if (strcmp(arg[iarg+1],"end") == 0) beyond = END; else if (strcmp(arg[iarg+1],"extra") == 0) beyond = EXTRA; - else error->all("Illegal fix ave/histo command"); + else error->all(FLERR,"Illegal fix ave/histo command"); iarg += 2; } else if (strcmp(arg[iarg],"title1") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); delete [] title1; int n = strlen(arg[iarg+1]) + 1; title1 = new char[n]; strcpy(title1,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title2") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); delete [] title2; int n = strlen(arg[iarg+1]) + 1; title2 = new char[n]; strcpy(title2,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); delete [] title3; int n = strlen(arg[iarg+1]) + 1; title3 = new char[n]; strcpy(title3,arg[iarg+1]); iarg += 2; - } else error->all("Illegal fix ave/histo command"); + } else error->all(FLERR,"Illegal fix ave/histo command"); } } diff --git a/src/fix_ave_spatial.cpp b/src/fix_ave_spatial.cpp index f066615e8d..0fd4672ecf 100644 --- a/src/fix_ave_spatial.cpp +++ b/src/fix_ave_spatial.cpp @@ -43,15 +43,12 @@ enum{ONE,RUNNING,WINDOW}; #define INVOKED_PERATOM 8 #define BIG 1000000000 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixAveSpatial::FixAveSpatial(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 6) error->all("Illegal fix ave/spatial command"); + if (narg < 6) error->all(FLERR,"Illegal fix ave/spatial command"); MPI_Comm_rank(world,&me); @@ -73,7 +70,7 @@ FixAveSpatial::FixAveSpatial(LAMMPS *lmp, int narg, char **arg) : else break; if (dim[ndim] == 2 && domain->dimension == 2) - error->all("Cannot use fix ave/spatial z for 2 dimensional model"); + error->all(FLERR,"Cannot use fix ave/spatial z for 2 dimensional model"); if (strcmp(arg[iarg+1],"lower") == 0) originflag[ndim] = LOWER; if (strcmp(arg[iarg+1],"center") == 0) originflag[ndim] = CENTER; @@ -86,11 +83,11 @@ FixAveSpatial::FixAveSpatial(LAMMPS *lmp, int narg, char **arg) : iarg += 3; } - if (!ndim) error->all("Illegal fix ave/spatial command"); + if (!ndim) error->all(FLERR,"Illegal fix ave/spatial command"); if (ndim == 2 && dim[0] == dim[1]) - error->all("Same dimension twice in fix ave/spatial"); + error->all(FLERR,"Same dimension twice in fix ave/spatial"); if (ndim == 3 && (dim[0] == dim[1] || dim[1] == dim[2] || dim[0] == dim[2])) - error->all("Same dimension twice in fix ave/spatial"); + error->all(FLERR,"Same dimension twice in fix ave/spatial"); // parse values until one isn't recognized @@ -144,7 +141,7 @@ FixAveSpatial::FixAveSpatial(LAMMPS *lmp, int narg, char **arg) : char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Illegal fix ave/spatial command"); + error->all(FLERR,"Illegal fix ave/spatial command"); argindex[nvalues] = atoi(ptr+1); *ptr = '\0'; } else argindex[nvalues] = 0; @@ -175,125 +172,125 @@ FixAveSpatial::FixAveSpatial(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"norm") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); if (strcmp(arg[iarg+1],"all") == 0) normflag = ALL; else if (strcmp(arg[iarg+1],"sample") == 0) normflag = SAMPLE; - else error->all("Illegal fix ave/spatial command"); + else error->all(FLERR,"Illegal fix ave/spatial command"); iarg += 2; } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = BOX; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = LATTICE; else if (strcmp(arg[iarg+1],"reduced") == 0) scaleflag = REDUCED; - else error->all("Illegal fix ave/spatial command"); + else error->all(FLERR,"Illegal fix ave/spatial command"); iarg += 2; } else if (strcmp(arg[iarg],"region") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); iregion = domain->find_region(arg[iarg+1]); if (iregion == -1) - error->all("Region ID for fix ave/spatial does not exist"); + error->all(FLERR,"Region ID for fix ave/spatial does not exist"); int n = strlen(arg[iarg+1]) + 1; idregion = new char[n]; strcpy(idregion,arg[iarg+1]); regionflag = 1; iarg += 2; } else if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix ave/spatial file %s",arg[iarg+1]); - error->one(str); + error->one(FLERR,str); } } iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else if (strcmp(arg[iarg+1],"window") == 0) ave = WINDOW; - else error->all("Illegal fix ave/spatial command"); + else error->all(FLERR,"Illegal fix ave/spatial command"); if (ave == WINDOW) { - if (iarg+3 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); nwindow = atoi(arg[iarg+2]); - if (nwindow <= 0) error->all("Illegal fix ave/spatial command"); + if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/spatial command"); } iarg += 2; if (ave == WINDOW) iarg++; } else if (strcmp(arg[iarg],"title1") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); delete [] title1; int n = strlen(arg[iarg+1]) + 1; title1 = new char[n]; strcpy(title1,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title2") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); delete [] title2; int n = strlen(arg[iarg+1]) + 1; title2 = new char[n]; strcpy(title2,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); delete [] title3; int n = strlen(arg[iarg+1]) + 1; title3 = new char[n]; strcpy(title3,arg[iarg+1]); iarg += 2; - } else error->all("Illegal fix ave/spatial command"); + } else error->all(FLERR,"Illegal fix ave/spatial command"); } // setup and error check if (nevery <= 0 || nrepeat <= 0 || nfreq <= 0) - error->all("Illegal fix ave/spatial command"); + error->all(FLERR,"Illegal fix ave/spatial command"); if (nfreq % nevery || (nrepeat-1)*nevery >= nfreq) - error->all("Illegal fix ave/spatial command"); - if (delta[0] <= 0.0) error->all("Illegal fix ave/spatial command"); + error->all(FLERR,"Illegal fix ave/spatial command"); + if (delta[0] <= 0.0) error->all(FLERR,"Illegal fix ave/spatial command"); if (ndim >= 2 && delta[1] <= 0.0) - error->all("Illegal fix ave/spatial command"); + error->all(FLERR,"Illegal fix ave/spatial command"); if (ndim == 3 && delta[2] <= 0.0) - error->all("Illegal fix ave/spatial command"); + error->all(FLERR,"Illegal fix ave/spatial command"); for (int i = 0; i < nvalues; i++) { if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/spatial does not exist"); + error->all(FLERR,"Compute ID for fix ave/spatial does not exist"); if (modify->compute[icompute]->peratom_flag == 0) - error->all("Fix ave/spatial compute does not " + error->all(FLERR,"Fix ave/spatial compute does not " "calculate per-atom values"); if (argindex[i] == 0 && modify->compute[icompute]->size_peratom_cols != 0) - error->all("Fix ave/spatial compute does not " + error->all(FLERR,"Fix ave/spatial compute does not " "calculate a per-atom vector"); if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) - error->all("Fix ave/spatial compute does not " + error->all(FLERR,"Fix ave/spatial compute does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) - error->all("Fix ave/spatial compute vector is accessed out-of-range"); + error->all(FLERR,"Fix ave/spatial compute vector is accessed out-of-range"); } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/spatial does not exist"); + error->all(FLERR,"Fix ID for fix ave/spatial does not exist"); if (modify->fix[ifix]->peratom_flag == 0) - error->all("Fix ave/spatial fix does not calculate per-atom values"); + error->all(FLERR,"Fix ave/spatial fix does not calculate per-atom values"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols != 0) - error->all("Fix ave/spatial fix does not calculate a per-atom vector"); + error->all(FLERR,"Fix ave/spatial fix does not calculate a per-atom vector"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) - error->all("Fix ave/spatial fix does not calculate a per-atom array"); + error->all(FLERR,"Fix ave/spatial fix does not calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) - error->all("Fix ave/spatial fix vector is accessed out-of-range"); + error->all(FLERR,"Fix ave/spatial fix vector is accessed out-of-range"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for fix ave/spatial does not exist"); + error->all(FLERR,"Variable name for fix ave/spatial does not exist"); if (input->variable->atomstyle(ivariable) == 0) - error->all("Fix ave/spatial variable is not atom-style variable"); + error->all(FLERR,"Fix ave/spatial variable is not atom-style variable"); } } @@ -310,7 +307,7 @@ FixAveSpatial::FixAveSpatial(LAMMPS *lmp, int narg, char **arg) : if (ndim == 1) fprintf(fp,"# Bin Coord Ncount"); else if (ndim == 2) fprintf(fp,"# Bin Coord1 Coord2 Ncount"); else if (ndim == 3) fprintf(fp,"# Bin Coord1 Coord2 Coord3 Ncount"); - for (int i = 0; i < nvalues; i++) fprintf(fp," %s",arg[9+i]); + for (int i = 0; i < nvalues; i++) fprintf(fp," %s",arg[6+3*ndim+i]); fprintf(fp,"\n"); } } @@ -330,10 +327,10 @@ FixAveSpatial::FixAveSpatial(LAMMPS *lmp, int narg, char **arg) : int triclinic = domain->triclinic; if (triclinic == 1 && scaleflag != REDUCED) - error->all("Fix ave/spatial for triclinic boxes requires units reduced"); + error->all(FLERR,"Fix ave/spatial for triclinic boxes requires units reduced"); if (scaleflag == LATTICE && domain->lattice == NULL) - error->all("Use of fix ave/spatial with undefined lattice"); + error->all(FLERR,"Use of fix ave/spatial with undefined lattice"); if (scaleflag == LATTICE) { xscale = domain->lattice->xlattice; @@ -429,7 +426,7 @@ void FixAveSpatial::init() if (regionflag) { iregion = domain->find_region(idregion); if (iregion == -1) - error->all("Region ID for fix ave/spatial does not exist"); + error->all(FLERR,"Region ID for fix ave/spatial does not exist"); region = domain->regions[iregion]; } @@ -437,7 +434,7 @@ void FixAveSpatial::init() if (ave == RUNNING || ave == WINDOW) { if (scaleflag != REDUCED && domain->box_change) - error->all("Fix ave/spatial settings invalid with changing box"); + error->all(FLERR,"Fix ave/spatial settings invalid with changing box"); } // set indices and check validity of all computes,fixes,variables @@ -447,22 +444,22 @@ void FixAveSpatial::init() if (which[m] == COMPUTE) { int icompute = modify->find_compute(ids[m]); if (icompute < 0) - error->all("Compute ID for fix ave/spatial does not exist"); + error->all(FLERR,"Compute ID for fix ave/spatial does not exist"); value2index[m] = icompute; } else if (which[m] == FIX) { int ifix = modify->find_fix(ids[m]); if (ifix < 0) - error->all("Fix ID for fix ave/spatial does not exist"); + error->all(FLERR,"Fix ID for fix ave/spatial does not exist"); value2index[m] = ifix; if (nevery % modify->fix[ifix]->peratom_freq) - error->all("Fix for fix ave/spatial not computed at compatible time"); + error->all(FLERR,"Fix for fix ave/spatial not computed at compatible time"); } else if (which[m] == VARIABLE) { int ivariable = input->variable->find(ids[m]); if (ivariable < 0) - error->all("Variable name for fix ave/spatial does not exist"); + error->all(FLERR,"Variable name for fix ave/spatial does not exist"); value2index[m] = ivariable; } else value2index[m] = -1; diff --git a/src/fix_ave_time.cpp b/src/fix_ave_time.cpp index 5addde6258..6d93da8e60 100644 --- a/src/fix_ave_time.cpp +++ b/src/fix_ave_time.cpp @@ -43,7 +43,7 @@ enum{SCALAR,VECTOR}; FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 7) error->all("Illegal fix ave/time command"); + if (narg < 7) error->all(FLERR,"Illegal fix ave/time command"); MPI_Comm_rank(world,&me); @@ -98,7 +98,7 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) : char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Illegal fix ave/time command"); + error->all(FLERR,"Illegal fix ave/time command"); argindex[nvalues] = atoi(ptr+1); *ptr = '\0'; } else argindex[nvalues] = 0; @@ -112,7 +112,7 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) : argindex[nvalues] == 0) { int icompute = modify->find_compute(ids[nvalues]); if (icompute < 0) - error->all("Compute ID for fix ave/time does not exist"); + error->all(FLERR,"Compute ID for fix ave/time does not exist"); if (modify->compute[icompute]->array_flag) { int ncols = modify->compute[icompute]->size_array_cols; maxvalues += ncols-1; @@ -132,7 +132,7 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) : argindex[nvalues] == 0) { int ifix = modify->find_fix(ids[nvalues]); if (ifix < 0) - error->all("Fix ID for fix ave/time does not exist"); + error->all(FLERR,"Fix ID for fix ave/time does not exist"); if (modify->fix[ifix]->array_flag) { int ncols = modify->fix[ifix]->size_array_cols; maxvalues += ncols-1; @@ -159,7 +159,7 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) : for (int i = 0; i < nvalues; i++) offcol[i] = 0; for (int i = 0; i < noff; i++) { if (offlist[i] < 1 || offlist[i] > nvalues) - error->all("Invalid fix ave/time off column"); + error->all(FLERR,"Invalid fix ave/time off column"); offcol[offlist[i]-1] = 1; } @@ -167,68 +167,68 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) : // for fix inputs, check that fix frequency is acceptable if (nevery <= 0 || nrepeat <= 0 || nfreq <= 0) - error->all("Illegal fix ave/time command"); + error->all(FLERR,"Illegal fix ave/time command"); if (nfreq % nevery || (nrepeat-1)*nevery >= nfreq) - error->all("Illegal fix ave/time command"); + error->all(FLERR,"Illegal fix ave/time command"); for (int i = 0; i < nvalues; i++) { if (which[i] == COMPUTE && mode == SCALAR) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/time does not exist"); + error->all(FLERR,"Compute ID for fix ave/time does not exist"); if (argindex[i] == 0 && modify->compute[icompute]->scalar_flag == 0) - error->all("Fix ave/time compute does not calculate a scalar"); + error->all(FLERR,"Fix ave/time compute does not calculate a scalar"); if (argindex[i] && modify->compute[icompute]->vector_flag == 0) - error->all("Fix ave/time compute does not calculate a vector"); + error->all(FLERR,"Fix ave/time compute does not calculate a vector"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_vector) - error->all("Fix ave/time compute vector is accessed out-of-range"); + error->all(FLERR,"Fix ave/time compute vector is accessed out-of-range"); } else if (which[i] == COMPUTE && mode == VECTOR) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/time does not exist"); + error->all(FLERR,"Compute ID for fix ave/time does not exist"); if (argindex[i] == 0 && modify->compute[icompute]->vector_flag == 0) - error->all("Fix ave/time compute does not calculate a vector"); + error->all(FLERR,"Fix ave/time compute does not calculate a vector"); if (argindex[i] && modify->compute[icompute]->array_flag == 0) - error->all("Fix ave/time compute does not calculate an array"); + error->all(FLERR,"Fix ave/time compute does not calculate an array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_array_cols) - error->all("Fix ave/time compute array is accessed out-of-range"); + error->all(FLERR,"Fix ave/time compute array is accessed out-of-range"); } else if (which[i] == FIX && mode == SCALAR) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/time does not exist"); + error->all(FLERR,"Fix ID for fix ave/time does not exist"); if (argindex[i] == 0 && modify->fix[ifix]->scalar_flag == 0) - error->all("Fix ave/time fix does not calculate a scalar"); + error->all(FLERR,"Fix ave/time fix does not calculate a scalar"); if (argindex[i] && modify->fix[ifix]->vector_flag == 0) - error->all("Fix ave/time fix does not calculate a vector"); + error->all(FLERR,"Fix ave/time fix does not calculate a vector"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_vector) - error->all("Fix ave/time fix vector is accessed out-of-range"); + error->all(FLERR,"Fix ave/time fix vector is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) - error->all("Fix for fix ave/time not computed at compatible time"); + error->all(FLERR,"Fix for fix ave/time not computed at compatible time"); } else if (which[i] == FIX && mode == VECTOR) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/time does not exist"); + error->all(FLERR,"Fix ID for fix ave/time does not exist"); if (argindex[i] == 0 && modify->fix[ifix]->vector_flag == 0) - error->all("Fix ave/time fix does not calculate a vector"); + error->all(FLERR,"Fix ave/time fix does not calculate a vector"); if (argindex[i] && modify->fix[ifix]->array_flag == 0) - error->all("Fix ave/time fix does not calculate an array"); + error->all(FLERR,"Fix ave/time fix does not calculate an array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_array_cols) - error->all("Fix ave/time fix array is accessed out-of-range"); + error->all(FLERR,"Fix ave/time fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) - error->all("Fix for fix ave/time not computed at compatible time"); + error->all(FLERR,"Fix for fix ave/time not computed at compatible time"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for fix ave/time does not exist"); + error->all(FLERR,"Variable name for fix ave/time does not exist"); if (input->variable->equalstyle(ivariable) == 0) - error->all("Fix ave/time variable is not equal-style variable"); + error->all(FLERR,"Fix ave/time variable is not equal-style variable"); if (mode == VECTOR) - error->all("Fix ave/time cannot use variable with vector mode"); + error->all(FLERR,"Fix ave/time cannot use variable with vector mode"); } } @@ -250,7 +250,7 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) : } if (i == 0) nrows = length; else if (length != nrows) - error->all("Fix ave/time columns are inconsistent lengths"); + error->all(FLERR,"Fix ave/time columns are inconsistent lengths"); } column = new double[nrows]; @@ -389,11 +389,11 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) : else value = fix->extarray; } if (value == -1) - error->all("Fix ave/time cannot set output array " + error->all(FLERR,"Fix ave/time cannot set output array " "intensive/extensive from these inputs"); if (i == 0) extarray = value; else if (value != extarray) - error->all("Fix ave/time cannot set output array " + error->all(FLERR,"Fix ave/time cannot set output array " "intensive/extensive from these inputs"); } } @@ -463,19 +463,19 @@ void FixAveTime::init() if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix ave/time does not exist"); + error->all(FLERR,"Compute ID for fix ave/time does not exist"); value2index[i] = icompute; } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix ave/time does not exist"); + error->all(FLERR,"Fix ID for fix ave/time does not exist"); value2index[i] = ifix; } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for fix ave/time does not exist"); + error->all(FLERR,"Variable name for fix ave/time does not exist"); value2index[i] = ivariable; } } @@ -833,66 +833,66 @@ void FixAveTime::options(int narg, char **arg) int iarg = 6 + nvalues; while (iarg < narg) { if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/time command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix ave/time file %s",arg[iarg+1]); - error->one(str); + error->one(FLERR,str); } } iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/time command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else if (strcmp(arg[iarg+1],"window") == 0) ave = WINDOW; - else error->all("Illegal fix ave/time command"); + else error->all(FLERR,"Illegal fix ave/time command"); if (ave == WINDOW) { - if (iarg+3 > narg) error->all("Illegal fix ave/time command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/time command"); nwindow = atoi(arg[iarg+2]); - if (nwindow <= 0) error->all("Illegal fix ave/time command"); + if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/time command"); } iarg += 2; if (ave == WINDOW) iarg++; } else if (strcmp(arg[iarg],"start") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/time command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); startstep = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"mode") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/time command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); if (strcmp(arg[iarg+1],"scalar") == 0) mode = SCALAR; else if (strcmp(arg[iarg+1],"vector") == 0) mode = VECTOR; - else error->all("Illegal fix ave/time command"); + else error->all(FLERR,"Illegal fix ave/time command"); iarg += 2; } else if (strcmp(arg[iarg],"off") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/time command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); memory->grow(offlist,noff+1,"ave/time:offlist"); offlist[noff++] = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title1") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); delete [] title1; int n = strlen(arg[iarg+1]) + 1; title1 = new char[n]; strcpy(title1,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title2") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); delete [] title2; int n = strlen(arg[iarg+1]) + 1; title2 = new char[n]; strcpy(title2,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { - if (iarg+2 > narg) error->all("Illegal fix ave/spatial command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); delete [] title3; int n = strlen(arg[iarg+1]) + 1; title3 = new char[n]; strcpy(title3,arg[iarg+1]); iarg += 2; - } else error->all("Illegal fix ave/time command"); + } else error->all(FLERR,"Illegal fix ave/time command"); } } diff --git a/src/fix_aveforce.cpp b/src/fix_aveforce.cpp index b4fd4f333a..c825e51b38 100644 --- a/src/fix_aveforce.cpp +++ b/src/fix_aveforce.cpp @@ -34,7 +34,7 @@ enum{NONE,CONSTANT,EQUAL}; FixAveForce::FixAveForce(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 6) error->all("Illegal fix aveforce command"); + if (narg < 6) error->all(FLERR,"Illegal fix aveforce command"); vector_flag = 1; size_vector = 3; @@ -82,15 +82,15 @@ FixAveForce::FixAveForce(LAMMPS *lmp, int narg, char **arg) : int iarg = 6; while (iarg < narg) { if (strcmp(arg[iarg],"region") == 0) { - if (iarg+2 > narg) error->all("Illegal fix aveforce command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix aveforce command"); iregion = domain->find_region(arg[iarg+1]); if (iregion == -1) - error->all("Region ID for fix aveforce does not exist"); + error->all(FLERR,"Region ID for fix aveforce does not exist"); int n = strlen(arg[iarg+1]) + 1; idregion = new char[n]; strcpy(idregion,arg[iarg+1]); iarg += 2; - } else error->all("Illegal fix aveforce command"); + } else error->all(FLERR,"Illegal fix aveforce command"); } @@ -127,28 +127,28 @@ void FixAveForce::init() if (xstr) { xvar = input->variable->find(xstr); - if (xvar < 0) error->all("Variable name for fix aveforce does not exist"); + if (xvar < 0) error->all(FLERR,"Variable name for fix aveforce does not exist"); if (input->variable->equalstyle(xvar)) xstyle = EQUAL; - else error->all("Variable for fix aveforce is invalid style"); + else error->all(FLERR,"Variable for fix aveforce is invalid style"); } if (ystr) { yvar = input->variable->find(ystr); - if (yvar < 0) error->all("Variable name for fix aveforce does not exist"); + if (yvar < 0) error->all(FLERR,"Variable name for fix aveforce does not exist"); if (input->variable->equalstyle(yvar)) ystyle = EQUAL; - else error->all("Variable for fix aveforce is invalid style"); + else error->all(FLERR,"Variable for fix aveforce is invalid style"); } if (zstr) { zvar = input->variable->find(zstr); - if (zvar < 0) error->all("Variable name for fix aveforce does not exist"); + if (zvar < 0) error->all(FLERR,"Variable name for fix aveforce does not exist"); if (input->variable->equalstyle(zvar)) zstyle = EQUAL; - else error->all("Variable for fix aveforce is invalid style"); + else error->all(FLERR,"Variable for fix aveforce is invalid style"); } // set index and check validity of region if (iregion >= 0) { iregion = domain->find_region(idregion); - if (iregion == -1) error->all("Region ID for fix aveforce does not exist"); + if (iregion == -1) error->all(FLERR,"Region ID for fix aveforce does not exist"); } if (xstyle == EQUAL || ystyle == EQUAL || zstyle == EQUAL) varflag = EQUAL; diff --git a/src/fix_box_relax.cpp b/src/fix_box_relax.cpp index 7d4d74d08a..f2b045b511 100644 --- a/src/fix_box_relax.cpp +++ b/src/fix_box_relax.cpp @@ -32,9 +32,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - enum{NONE,XYZ,XY,YZ,XZ}; enum{ISO,ANISO,TRICLINIC}; @@ -45,7 +42,7 @@ enum{ISO,ANISO,TRICLINIC}; FixBoxRelax::FixBoxRelax(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 5) error->all("Illegal fix box/relax command"); + if (narg < 5) error->all(FLERR,"Illegal fix box/relax command"); scalar_flag = 1; extscalar = 1; @@ -74,7 +71,7 @@ FixBoxRelax::FixBoxRelax(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"iso") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); pcouple = XYZ; p_target[0] = p_target[1] = p_target[2] = atof(arg[iarg+1]); p_flag[0] = p_flag[1] = p_flag[2] = 1; @@ -84,7 +81,7 @@ FixBoxRelax::FixBoxRelax(LAMMPS *lmp, int narg, char **arg) : } iarg += 2; } else if (strcmp(arg[iarg],"aniso") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); pcouple = NONE; p_target[0] = p_target[1] = p_target[2] = atof(arg[iarg+1]); p_flag[0] = p_flag[1] = p_flag[2] = 1; @@ -94,7 +91,7 @@ FixBoxRelax::FixBoxRelax(LAMMPS *lmp, int narg, char **arg) : } iarg += 2; } else if (strcmp(arg[iarg],"tri") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); pcouple = NONE; p_target[0] = p_target[1] = p_target[2] = atof(arg[iarg+1]); p_flag[0] = p_flag[1] = p_flag[2] = 1; @@ -107,75 +104,75 @@ FixBoxRelax::FixBoxRelax(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else if (strcmp(arg[iarg],"x") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); p_target[0] = atof(arg[iarg+1]); p_flag[0] = 1; deviatoric_flag = 1; iarg += 2; } else if (strcmp(arg[iarg],"y") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); p_target[1] = atof(arg[iarg+1]); p_flag[1] = 1; deviatoric_flag = 1; iarg += 2; } else if (strcmp(arg[iarg],"z") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); p_target[2] = atof(arg[iarg+1]); p_flag[2] = 1; deviatoric_flag = 1; iarg += 2; if (dimension == 2) - error->all("Invalid fix box/relax command for a 2d simulation"); + error->all(FLERR,"Invalid fix box/relax command for a 2d simulation"); } else if (strcmp(arg[iarg],"yz") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); p_target[3] = atof(arg[iarg+1]); p_flag[3] = 1; deviatoric_flag = 1; iarg += 2; if (dimension == 2) - error->all("Invalid fix box/relax command for a 2d simulation"); + error->all(FLERR,"Invalid fix box/relax command for a 2d simulation"); } else if (strcmp(arg[iarg],"xz") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); p_target[4] = atof(arg[iarg+1]); p_flag[4] = 1; deviatoric_flag = 1; iarg += 2; if (dimension == 2) - error->all("Invalid fix box/relax command for a 2d simulation"); + error->all(FLERR,"Invalid fix box/relax command for a 2d simulation"); } else if (strcmp(arg[iarg],"xy") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); p_target[5] = atof(arg[iarg+1]); p_flag[5] = 1; deviatoric_flag = 1; iarg += 2; } else if (strcmp(arg[iarg],"couple") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); if (strcmp(arg[iarg+1],"xyz") == 0) pcouple = XYZ; else if (strcmp(arg[iarg+1],"xy") == 0) pcouple = XY; else if (strcmp(arg[iarg+1],"yz") == 0) pcouple = YZ; else if (strcmp(arg[iarg+1],"xz") == 0) pcouple = XZ; else if (strcmp(arg[iarg+1],"none") == 0) pcouple = NONE; - else error->all("Illegal fix box/relax command"); + else error->all(FLERR,"Illegal fix box/relax command"); iarg += 2; } else if (strcmp(arg[iarg],"dilate") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); if (strcmp(arg[iarg+1],"all") == 0) allremap = 1; else if (strcmp(arg[iarg+1],"partial") == 0) allremap = 0; - else error->all("Illegal fix box/relax command"); + else error->all(FLERR,"Illegal fix box/relax command"); iarg += 2; } else if (strcmp(arg[iarg],"vmax") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); vmax = atof(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"nreset") == 0) { - if (iarg+2 > narg) error->all("Illegal fix box/relax command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command"); nreset_h0 = atoi(arg[iarg+1]); - if (nreset_h0 < 0) error->all("Illegal fix box/relax command"); + if (nreset_h0 < 0) error->all(FLERR,"Illegal fix box/relax command"); iarg += 2; - } else error->all("Illegal fix box/relax command"); + } else error->all(FLERR,"Illegal fix box/relax command"); } if (p_flag[0] || p_flag[1] || p_flag[2]) box_change_size = 1; @@ -185,51 +182,51 @@ FixBoxRelax::FixBoxRelax(LAMMPS *lmp, int narg, char **arg) : // error checks if (dimension == 2 && (p_flag[2] || p_flag[3] || p_flag[4])) - error->all("Invalid fix box/relax command for a 2d simulation"); + error->all(FLERR,"Invalid fix box/relax command for a 2d simulation"); if (dimension == 2 && (pcouple == YZ || pcouple == XZ)) - error->all("Invalid fix box/relax command for a 2d simulation"); + error->all(FLERR,"Invalid fix box/relax command for a 2d simulation"); if (pcouple == XYZ && (p_flag[0] == 0 || p_flag[1] == 0)) - error->all("Invalid fix box/relax command pressure settings"); + error->all(FLERR,"Invalid fix box/relax command pressure settings"); if (pcouple == XYZ && dimension == 3 && p_flag[2] == 0) - error->all("Invalid fix box/relax command pressure settings"); + error->all(FLERR,"Invalid fix box/relax command pressure settings"); if (pcouple == XY && (p_flag[0] == 0 || p_flag[1] == 0)) - error->all("Invalid fix box/relax command pressure settings"); + error->all(FLERR,"Invalid fix box/relax command pressure settings"); if (pcouple == YZ && (p_flag[1] == 0 || p_flag[2] == 0)) - error->all("Invalid fix box/relax command pressure settings"); + error->all(FLERR,"Invalid fix box/relax command pressure settings"); if (pcouple == XZ && (p_flag[0] == 0 || p_flag[2] == 0)) - error->all("Invalid fix box/relax command pressure settings"); + error->all(FLERR,"Invalid fix box/relax command pressure settings"); if (p_flag[0] && domain->xperiodic == 0) - error->all("Cannot use fix box/relax on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix box/relax on a non-periodic dimension"); if (p_flag[1] && domain->yperiodic == 0) - error->all("Cannot use fix box/relax on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix box/relax on a non-periodic dimension"); if (p_flag[2] && domain->zperiodic == 0) - error->all("Cannot use fix box/relax on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix box/relax on a non-periodic dimension"); if (p_flag[3] && domain->zperiodic == 0) - error->all("Cannot use fix box/relax on a 2nd non-periodic dimension"); + error->all(FLERR,"Cannot use fix box/relax on a 2nd non-periodic dimension"); if (p_flag[4] && domain->zperiodic == 0) - error->all("Cannot use fix box/relax on a 2nd non-periodic dimension"); + error->all(FLERR,"Cannot use fix box/relax on a 2nd non-periodic dimension"); if (p_flag[5] && domain->yperiodic == 0) - error->all("Cannot use fix box/relax on a 2nd non-periodic dimension"); + error->all(FLERR,"Cannot use fix box/relax on a 2nd non-periodic dimension"); if (!domain->triclinic && (p_flag[3] || p_flag[4] || p_flag[5])) - error->all("Can not specify Pxy/Pxz/Pyz in " + error->all(FLERR,"Can not specify Pxy/Pxz/Pyz in " "fix box/relax with non-triclinic box"); if (pcouple == XYZ && dimension == 3 && (p_target[0] != p_target[1] || p_target[0] != p_target[2])) - error->all("Invalid fix box/relax pressure settings"); + error->all(FLERR,"Invalid fix box/relax pressure settings"); if (pcouple == XYZ && dimension == 2 && p_target[0] != p_target[1]) - error->all("Invalid fix box/relax pressure settings"); + error->all(FLERR,"Invalid fix box/relax pressure settings"); if (pcouple == XY && p_target[0] != p_target[1]) - error->all("Invalid fix box/relax pressure settings"); + error->all(FLERR,"Invalid fix box/relax pressure settings"); if (pcouple == YZ && p_target[1] != p_target[2]) - error->all("Invalid fix box/relax pressure settings"); + error->all(FLERR,"Invalid fix box/relax pressure settings"); if (pcouple == XZ && p_target[0] != p_target[2]) - error->all("Invalid fix box/relax pressure settings"); + error->all(FLERR,"Invalid fix box/relax pressure settings"); - if (vmax <= 0.0) error->all("Illegal fix box/relax command"); + if (vmax <= 0.0) error->all(FLERR,"Illegal fix box/relax command"); // pstyle = TRICLINIC if any off-diagonal term is controlled -> 6 dof // else pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof @@ -314,11 +311,11 @@ void FixBoxRelax::init() int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix box/relax does not exist"); + error->all(FLERR,"Temperature ID for fix box/relax does not exist"); temperature = modify->compute[icompute]; icompute = modify->find_compute(id_press); - if (icompute < 0) error->all("Pressure ID for fix box/relax does not exist"); + if (icompute < 0) error->all(FLERR,"Pressure ID for fix box/relax does not exist"); pressure = modify->compute[icompute]; pv2e = 1.0 / force->nktv2p; @@ -473,7 +470,7 @@ void FixBoxRelax::min_clearstore() void FixBoxRelax::min_pushstore() { if (current_lifo >= MAX_LIFO_DEPTH) { - error->all("Attempt to push beyond stack limit in fix box/relax"); + error->all(FLERR,"Attempt to push beyond stack limit in fix box/relax"); return; } current_lifo++; @@ -487,7 +484,7 @@ void FixBoxRelax::min_pushstore() void FixBoxRelax::min_popstore() { if (current_lifo <= 0) { - error->all("Attempt to pop empty stack in fix box/relax"); + error->all(FLERR,"Attempt to pop empty stack in fix box/relax"); return; } current_lifo--; @@ -611,7 +608,7 @@ void FixBoxRelax::remap() domain->boxlo[i] = currentBoxLo0 + (currentBoxLo0-ctr)*ds[i]/s0[i]; domain->boxhi[i] = currentBoxHi0 + (currentBoxHi0-ctr)*ds[i]/s0[i]; if (domain->boxlo[i] >= domain->boxhi[i]) - error->all("Fix box/relax generated negative box length"); + error->all(FLERR,"Fix box/relax generated negative box length"); } if (pstyle == TRICLINIC) { @@ -680,7 +677,7 @@ void FixBoxRelax::couple() int FixBoxRelax::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -691,24 +688,24 @@ int FixBoxRelax::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(arg[1]); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != 0 && comm->me == 0) - error->warning("Temperature for fix modify is not for group all"); + error->warning(FLERR,"Temperature for fix modify is not for group all"); // reset id_temp of pressure to new temperature ID icompute = modify->find_compute(id_press); - if (icompute < 0) error->all("Pressure ID for fix modify does not exist"); + if (icompute < 0) error->all(FLERR,"Pressure ID for fix modify does not exist"); modify->compute[icompute]->reset_extra_compute_fix(id_temp); return 2; } else if (strcmp(arg[0],"press") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (pflag) { modify->delete_compute(id_press); pflag = 0; @@ -719,11 +716,11 @@ int FixBoxRelax::modify_param(int narg, char **arg) strcpy(id_press,arg[1]); int icompute = modify->find_compute(arg[1]); - if (icompute < 0) error->all("Could not find fix_modify pressure ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify pressure ID"); pressure = modify->compute[icompute]; if (pressure->pressflag == 0) - error->all("Fix_modify pressure ID does not compute pressure"); + error->all(FLERR,"Fix_modify pressure ID does not compute pressure"); return 2; } return 0; @@ -904,7 +901,7 @@ void FixBoxRelax::compute_press_target() /* ---------------------------------------------------------------------- compute PV and strain energy for access to the user -/* ---------------------------------------------------------------------- */ + ---------------------------------------------------------------------- */ double FixBoxRelax::compute_scalar() { diff --git a/src/fix_deform.cpp b/src/fix_deform.cpp index 75db867299..097683ad23 100644 --- a/src/fix_deform.cpp +++ b/src/fix_deform.cpp @@ -27,10 +27,12 @@ #include "lattice.h" #include "force.h" #include "modify.h" +#include "math_const.h" #include "kspace.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; enum{NONE,FINAL,DELTA,SCALE,VEL,ERATE,TRATE,VOLUME,WIGGLE}; enum{ONE_FROM_ONE,ONE_FROM_TWO,TWO_FROM_ONE}; @@ -43,13 +45,13 @@ enum{NO_REMAP,X_REMAP,V_REMAP}; FixDeform::FixDeform(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 4) error->all("Illegal fix deform command"); + if (narg < 4) error->all(FLERR,"Illegal fix deform command"); box_change = 1; no_change_box = 1; nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix deform command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix deform command"); // set defaults @@ -72,36 +74,36 @@ FixDeform::FixDeform(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) else if (strcmp(arg[iarg],"y") == 0) index = 1; else if (strcmp(arg[iarg],"z") == 0) index = 2; - if (iarg+2 > narg) error->all("Illegal fix deform command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix deform command"); if (strcmp(arg[iarg+1],"final") == 0) { - if (iarg+4 > narg) error->all("Illegal fix deform command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = FINAL; set[index].flo = atof(arg[iarg+2]); set[index].fhi = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg+1],"delta") == 0) { - if (iarg+4 > narg) error->all("Illegal fix deform command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = DELTA; set[index].dlo = atof(arg[iarg+2]); set[index].dhi = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg+1],"scale") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deform command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = SCALE; set[index].scale = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"vel") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deform command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = VEL; set[index].vel = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"erate") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deform command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = ERATE; set[index].rate = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"trate") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deform command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = TRATE; set[index].rate = atof(arg[iarg+2]); iarg += 3; @@ -109,60 +111,60 @@ FixDeform::FixDeform(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) set[index].style = VOLUME; iarg += 2; } else if (strcmp(arg[iarg+1],"wiggle") == 0) { - if (iarg+4 > narg) error->all("Illegal fix deform command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = WIGGLE; set[index].amplitude = atof(arg[iarg+2]); set[index].tperiod = atof(arg[iarg+3]); if (set[index].tperiod <= 0.0) - error->all("Illegal fix deform command"); + error->all(FLERR,"Illegal fix deform command"); iarg += 4; - } else error->all("Illegal fix deform command"); + } else error->all(FLERR,"Illegal fix deform command"); } else if (strcmp(arg[iarg],"xy") == 0 || strcmp(arg[iarg],"xz") == 0 || strcmp(arg[iarg],"yz") == 0) { if (triclinic == 0) - error->all("Fix deform tilt factors require triclinic box"); + error->all(FLERR,"Fix deform tilt factors require triclinic box"); if (strcmp(arg[iarg],"xy") == 0) index = 5; else if (strcmp(arg[iarg],"xz") == 0) index = 4; else if (strcmp(arg[iarg],"yz") == 0) index = 3; - if (iarg+2 > narg) error->all("Illegal fix deform command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix deform command"); if (strcmp(arg[iarg+1],"final") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deform command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = FINAL; set[index].ftilt = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"delta") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deform command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = DELTA; set[index].dtilt = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"vel") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deform command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = VEL; set[index].vel = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"erate") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deform command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = ERATE; set[index].rate = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"trate") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deform command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = TRATE; set[index].rate = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"wiggle") == 0) { - if (iarg+4 > narg) error->all("Illegal fix deform command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix deform command"); set[index].style = WIGGLE; set[index].amplitude = atof(arg[iarg+2]); set[index].tperiod = atof(arg[iarg+3]); if (set[index].tperiod <= 0.0) - error->all("Illegal fix deform command"); + error->all(FLERR,"Illegal fix deform command"); iarg += 4; - } else error->all("Illegal fix deform command"); + } else error->all(FLERR,"Illegal fix deform command"); } else break; } @@ -187,14 +189,14 @@ FixDeform::FixDeform(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) if ((set[0].style && domain->xperiodic == 0) || (set[1].style && domain->yperiodic == 0) || (set[2].style && domain->zperiodic == 0)) - error->all("Cannot use fix deform on a non-periodic boundary"); + error->all(FLERR,"Cannot use fix deform on a non-periodic boundary"); if (set[3].style && domain->zperiodic == 0) - error->all("Cannot use fix deform on a 2nd non-periodic boundary"); + error->all(FLERR,"Cannot use fix deform on a 2nd non-periodic boundary"); if (set[4].style && domain->zperiodic == 0) - error->all("Cannot use fix deform on a 2nd non-periodic boundary"); + error->all(FLERR,"Cannot use fix deform on a 2nd non-periodic boundary"); if (set[5].style && domain->yperiodic == 0) - error->all("Cannot use fix deform on a 2nd non-periodic boundary"); + error->all(FLERR,"Cannot use fix deform on a 2nd non-periodic boundary"); // apply scaling to FINAL,DELTA,VEL,WIGGLE since they have distance/vel units @@ -204,7 +206,7 @@ FixDeform::FixDeform(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) set[i].style == VEL || set[i].style == WIGGLE) flag = 1; if (flag && scaleflag && domain->lattice == NULL) - error->all("Use of fix deform with undefined lattice"); + error->all(FLERR,"Use of fix deform with undefined lattice"); double xscale,yscale,zscale; if (flag && scaleflag) { @@ -251,25 +253,25 @@ FixDeform::FixDeform(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) if (set[other1].style == NONE) { if (set[other2].style == NONE || set[other2].style == VOLUME) - error->all("Fix deform volume setting is invalid"); + error->all(FLERR,"Fix deform volume setting is invalid"); set[i].substyle = ONE_FROM_ONE; set[i].fixed = other1; set[i].dynamic1 = other2; } else if (set[other2].style == NONE) { if (set[other1].style == NONE || set[other1].style == VOLUME) - error->all("Fix deform volume setting is invalid"); + error->all(FLERR,"Fix deform volume setting is invalid"); set[i].substyle = ONE_FROM_ONE; set[i].fixed = other2; set[i].dynamic1 = other1; } else if (set[other1].style == VOLUME) { if (set[other2].style == NONE || set[other2].style == VOLUME) - error->all("Fix deform volume setting is invalid"); + error->all(FLERR,"Fix deform volume setting is invalid"); set[i].substyle = TWO_FROM_ONE; set[i].fixed = other1; set[i].dynamic1 = other2; } else if (set[other2].style == VOLUME) { if (set[other1].style == NONE || set[other1].style == VOLUME) - error->all("Fix deform volume setting is invalid"); + error->all(FLERR,"Fix deform volume setting is invalid"); set[i].substyle = TWO_FROM_ONE; set[i].fixed = other2; set[i].dynamic1 = other1; @@ -305,7 +307,7 @@ FixDeform::FixDeform(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) if (force_reneighbor) irregular = new Irregular(lmp); else irregular = NULL; - TWOPI = 8.0*atan(1.0); + TWOPI = 2.0*MY_PI; } /* ---------------------------------------------------------------------- */ @@ -347,7 +349,7 @@ void FixDeform::init() int count = 0; for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"deform") == 0) count++; - if (count > 1) error->all("More than one fix deform"); + if (count > 1) error->all(FLERR,"More than one fix deform"); // Kspace setting @@ -395,7 +397,7 @@ void FixDeform::init() set[i].hi_stop = set[i].hi_start + 0.5*delt*set[i].rate * (set[i].hi_start-set[i].lo_start); if (set[i].hi_stop <= set[i].lo_stop) - error->all("Final box dimension due to fix deform is < 0.0"); + error->all(FLERR,"Final box dimension due to fix deform is < 0.0"); } else if (set[i].style == TRATE) { set[i].lo_stop = 0.5*(set[i].lo_start+set[i].hi_start) - 0.5*((set[i].hi_start-set[i].lo_start) * exp(set[i].rate*delt)); @@ -477,7 +479,7 @@ void FixDeform::init() for (int i = 3; i < 6; i++) if (set[i].style == TRATE && set[i].tilt_start == 0.0) - error->all("Cannot use fix deform trate on a box with zero tilt"); + error->all(FLERR,"Cannot use fix deform trate on a box with zero tilt"); // if yz changes and will cause box flip, then xy cannot be changing // test for WIGGLE is on min/max oscillation limit, not tilt_stop @@ -499,7 +501,7 @@ void FixDeform::init() hi > 0.5*(set[1].hi_stop-set[1].lo_stop)) flag = 1; } if (flag) - error->all("Fix deform is changing yz by too much with changing xy"); + error->all(FLERR,"Fix deform is changing yz by too much with changing xy"); } // set domain->h_rate values for use by domain and other fixes/computes @@ -823,7 +825,7 @@ void FixDeform::end_of_step() void FixDeform::options(int narg, char **arg) { - if (narg < 0) error->all("Illegal fix deform command"); + if (narg < 0) error->all(FLERR,"Illegal fix deform command"); remapflag = X_REMAP; scaleflag = 1; @@ -831,18 +833,18 @@ void FixDeform::options(int narg, char **arg) int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"remap") == 0) { - if (iarg+2 > narg) error->all("Illegal fix deform command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix deform command"); if (strcmp(arg[iarg+1],"x") == 0) remapflag = X_REMAP; else if (strcmp(arg[iarg+1],"v") == 0) remapflag = V_REMAP; else if (strcmp(arg[iarg+1],"none") == 0) remapflag = NO_REMAP; - else error->all("Illegal fix deform command"); + else error->all(FLERR,"Illegal fix deform command"); iarg += 2; } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal fix deform command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix deform command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal fix deform command"); + else error->all(FLERR,"Illegal fix deform command"); iarg += 2; - } else error->all("Illegal fix deform command"); + } else error->all(FLERR,"Illegal fix deform command"); } } diff --git a/src/fix_deposit.cpp b/src/fix_deposit.cpp index 357a325942..214856ce37 100644 --- a/src/fix_deposit.cpp +++ b/src/fix_deposit.cpp @@ -36,7 +36,7 @@ using namespace LAMMPS_NS; FixDeposit::FixDeposit(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 7) error->all("Illegal fix deposit command"); + if (narg < 7) error->all(FLERR,"Illegal fix deposit command"); restart_global = 1; time_depend = 1; @@ -48,7 +48,7 @@ FixDeposit::FixDeposit(LAMMPS *lmp, int narg, char **arg) : nfreq = atoi(arg[5]); seed = atoi(arg[6]); - if (seed <= 0) error->all("Illegal fix deposit command"); + if (seed <= 0) error->all(FLERR,"Illegal fix deposit command"); // set defaults @@ -68,11 +68,11 @@ FixDeposit::FixDeposit(LAMMPS *lmp, int narg, char **arg) : // error checks on region and its extent being inside simulation box - if (iregion == -1) error->all("Must specify a region in fix deposit"); + if (iregion == -1) error->all(FLERR,"Must specify a region in fix deposit"); if (domain->regions[iregion]->bboxflag == 0) - error->all("Fix deposit region does not support a bounding box"); + error->all(FLERR,"Fix deposit region does not support a bounding box"); if (domain->regions[iregion]->dynamic_check()) - error->all("Fix deposit region cannot be dynamic"); + error->all(FLERR,"Fix deposit region cannot be dynamic"); xlo = domain->regions[iregion]->extent_xlo; xhi = domain->regions[iregion]->extent_xhi; @@ -85,18 +85,18 @@ FixDeposit::FixDeposit(LAMMPS *lmp, int narg, char **arg) : if (xlo < domain->boxlo[0] || xhi > domain->boxhi[0] || ylo < domain->boxlo[1] || yhi > domain->boxhi[1] || zlo < domain->boxlo[2] || zhi > domain->boxhi[2]) - error->all("Deposition region extends outside simulation box"); + error->all(FLERR,"Deposition region extends outside simulation box"); } else { if (xlo < domain->boxlo_bound[0] || xhi > domain->boxhi_bound[0] || ylo < domain->boxlo_bound[1] || yhi > domain->boxhi_bound[1] || zlo < domain->boxlo_bound[2] || zhi > domain->boxhi_bound[2]) - error->all("Deposition region extends outside simulation box"); + error->all(FLERR,"Deposition region extends outside simulation box"); } // setup scaling if (scaleflag && domain->lattice == NULL) - error->all("Use of fix deposit with undefined lattice"); + error->all(FLERR,"Use of fix deposit with undefined lattice"); double xscale,yscale,zscale; if (scaleflag) { @@ -162,7 +162,7 @@ void FixDeposit::init() // set index and check validity of region iregion = domain->find_region(idregion); - if (iregion == -1) error->all("Region ID for fix deposit does not exist"); + if (iregion == -1) error->all(FLERR,"Region ID for fix deposit does not exist"); } /* ---------------------------------------------------------------------- @@ -323,7 +323,7 @@ void FixDeposit::pre_exchange() // warn if not successful b/c too many attempts or no proc owned particle if (!success && comm->me == 0) - error->warning("Particle deposition was unsuccessful",0); + error->warning(FLERR,"Particle deposition was unsuccessful",0); // reset global natoms // set tag # of new particle beyond all previous atoms @@ -356,28 +356,28 @@ void FixDeposit::pre_exchange() void FixDeposit::options(int narg, char **arg) { - if (narg < 0) error->all("Illegal fix indent command"); + if (narg < 0) error->all(FLERR,"Illegal fix indent command"); int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"region") == 0) { - if (iarg+2 > narg) error->all("Illegal fix deposit command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix deposit command"); iregion = domain->find_region(arg[iarg+1]); if (iregion == -1) - error->all("Region ID for fix deposit does not exist"); + error->all(FLERR,"Region ID for fix deposit does not exist"); int n = strlen(arg[iarg+1]) + 1; idregion = new char[n]; strcpy(idregion,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"global") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deposit command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deposit command"); globalflag = 1; localflag = 0; lo = atof(arg[iarg+1]); hi = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"local") == 0) { - if (iarg+4 > narg) error->all("Illegal fix deposit command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix deposit command"); localflag = 1; globalflag = 0; lo = atof(arg[iarg+1]); @@ -385,40 +385,40 @@ void FixDeposit::options(int narg, char **arg) deltasq = atof(arg[iarg+3])*atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"near") == 0) { - if (iarg+2 > narg) error->all("Illegal fix deposit command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix deposit command"); nearsq = atof(arg[iarg+1])*atof(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"attempt") == 0) { - if (iarg+2 > narg) error->all("Illegal fix deposit command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix deposit command"); maxattempt = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"rate") == 0) { - if (iarg+2 > narg) error->all("Illegal fix deposit command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix deposit command"); rateflag = 1; rate = atof(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"vx") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deposit command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deposit command"); vxlo = atof(arg[iarg+1]); vxhi = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"vy") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deposit command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deposit command"); vylo = atof(arg[iarg+1]); vyhi = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"vz") == 0) { - if (iarg+3 > narg) error->all("Illegal fix deposit command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix deposit command"); vzlo = atof(arg[iarg+1]); vzhi = atof(arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal fix deposit command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix deposit command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal fix deposit command"); + else error->all(FLERR,"Illegal fix deposit command"); iarg += 2; - } else error->all("Illegal fix deposit command"); + } else error->all(FLERR,"Illegal fix deposit command"); } } diff --git a/src/fix_drag.cpp b/src/fix_drag.cpp index 357495bd67..51e744aada 100644 --- a/src/fix_drag.cpp +++ b/src/fix_drag.cpp @@ -28,7 +28,7 @@ using namespace LAMMPS_NS; FixDrag::FixDrag(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 8) error->all("Illegal fix drag command"); + if (narg != 8) error->all(FLERR,"Illegal fix drag command"); vector_flag = 1; size_vector = 3; diff --git a/src/fix_dt_reset.cpp b/src/fix_dt_reset.cpp index 8991a879e5..758c8b32a5 100644 --- a/src/fix_dt_reset.cpp +++ b/src/fix_dt_reset.cpp @@ -33,15 +33,12 @@ using namespace LAMMPS_NS; #define BIG 1.0e20 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixDtReset::FixDtReset(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 7) error->all("Illegal fix dt/reset command"); + if (narg < 7) error->all(FLERR,"Illegal fix dt/reset command"); time_depend = 1; scalar_flag = 1; @@ -52,7 +49,7 @@ FixDtReset::FixDtReset(LAMMPS *lmp, int narg, char **arg) : extvector = 0; nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix dt/reset command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix dt/reset command"); minbound = maxbound = 1; tmin = tmax = 0.0; @@ -62,29 +59,29 @@ FixDtReset::FixDtReset(LAMMPS *lmp, int narg, char **arg) : else tmax = atof(arg[5]); xmax = atof(arg[6]); - if (minbound && tmin < 0.0) error->all("Illegal fix dt/reset command"); - if (maxbound && tmax < 0.0) error->all("Illegal fix dt/reset command"); + if (minbound && tmin < 0.0) error->all(FLERR,"Illegal fix dt/reset command"); + if (maxbound && tmax < 0.0) error->all(FLERR,"Illegal fix dt/reset command"); if (minbound && maxbound && tmin >= tmax) - error->all("Illegal fix dt/reset command"); - if (xmax <= 0.0) error->all("Illegal fix dt/reset command"); + error->all(FLERR,"Illegal fix dt/reset command"); + if (xmax <= 0.0) error->all(FLERR,"Illegal fix dt/reset command"); int scaleflag = 1; int iarg = 7; while (iarg < narg) { if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal fix dt/reset command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix dt/reset command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal fix dt/reset command"); + else error->all(FLERR,"Illegal fix dt/reset command"); iarg += 2; - } else error->all("Illegal fix dt/reset command"); + } else error->all(FLERR,"Illegal fix dt/reset command"); } // setup scaling, based on xlattice parameter if (scaleflag && domain->lattice == NULL) - error->all("Use of fix dt/reset with undefined lattice"); + error->all(FLERR,"Use of fix dt/reset with undefined lattice"); if (scaleflag) xmax *= domain->lattice->xlattice; // initializations @@ -116,7 +113,7 @@ void FixDtReset::init() for (int i = 0; i < output->ndump; i++) if ((strcmp(output->dump[i]->style,"dcd") == 0 || strcmp(output->dump[i]->style,"xtc") == 0) && comm->me == 0) - error->warning("Dump dcd/xtc timestamp may be wrong with fix dt/reset"); + error->warning(FLERR,"Dump dcd/xtc timestamp may be wrong with fix dt/reset"); ftm2v = force->ftm2v; } diff --git a/src/fix_efield.cpp b/src/fix_efield.cpp index 31c7ba147a..42bc2efc94 100644 --- a/src/fix_efield.cpp +++ b/src/fix_efield.cpp @@ -38,7 +38,7 @@ enum{CONSTANT,EQUAL,ATOM}; FixEfield::FixEfield(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 6) error->all("Illegal fix efield command"); + if (narg != 6) error->all(FLERR,"Illegal fix efield command"); qe2f = force->qe2f; xstr = ystr = zstr = NULL; @@ -98,30 +98,30 @@ int FixEfield::setmask() void FixEfield::init() { - if (!atom->q_flag) error->all("Fix efield requires atom attribute q"); + if (!atom->q_flag) error->all(FLERR,"Fix efield requires atom attribute q"); // check variables if (xstr) { xvar = input->variable->find(xstr); - if (xvar < 0) error->all("Variable name for fix efield does not exist"); + if (xvar < 0) error->all(FLERR,"Variable name for fix efield does not exist"); if (input->variable->equalstyle(xvar)) xstyle = EQUAL; else if (input->variable->atomstyle(xvar)) xstyle = ATOM; - else error->all("Variable for fix efield is invalid style"); + else error->all(FLERR,"Variable for fix efield is invalid style"); } if (ystr) { yvar = input->variable->find(ystr); - if (yvar < 0) error->all("Variable name for fix efield does not exist"); + if (yvar < 0) error->all(FLERR,"Variable name for fix efield does not exist"); if (input->variable->equalstyle(yvar)) ystyle = EQUAL; else if (input->variable->atomstyle(yvar)) ystyle = ATOM; - else error->all("Variable for fix efield is invalid style"); + else error->all(FLERR,"Variable for fix efield is invalid style"); } if (zstr) { zvar = input->variable->find(zstr); - if (zvar < 0) error->all("Variable name for fix efield does not exist"); + if (zvar < 0) error->all(FLERR,"Variable name for fix efield does not exist"); if (input->variable->equalstyle(zvar)) zstyle = EQUAL; else if (input->variable->atomstyle(zvar)) zstyle = ATOM; - else error->all("Variable for fix efield is invalid style"); + else error->all(FLERR,"Variable for fix efield is invalid style"); } if (xstyle == ATOM || ystyle == ATOM || zstyle == ATOM) diff --git a/src/fix_enforce2d.cpp b/src/fix_enforce2d.cpp index c08c1ecdce..ad7ef9f615 100644 --- a/src/fix_enforce2d.cpp +++ b/src/fix_enforce2d.cpp @@ -26,7 +26,7 @@ using namespace LAMMPS_NS; FixEnforce2D::FixEnforce2D(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 3) error->all("Illegal fix enforce2d command"); + if (narg != 3) error->all(FLERR,"Illegal fix enforce2d command"); } /* ---------------------------------------------------------------------- */ @@ -45,7 +45,7 @@ int FixEnforce2D::setmask() void FixEnforce2D::init() { if (domain->dimension == 3) - error->all("Cannot use fix enforce2d with 3d simulation"); + error->all(FLERR,"Cannot use fix enforce2d with 3d simulation"); } /* ---------------------------------------------------------------------- */ diff --git a/src/fix_evaporate.cpp b/src/fix_evaporate.cpp index c5db3dca4c..e00d0ca9e3 100644 --- a/src/fix_evaporate.cpp +++ b/src/fix_evaporate.cpp @@ -21,6 +21,7 @@ #include "domain.h" #include "region.h" #include "comm.h" +#include "force.h" #include "group.h" #include "random_park.h" #include "random_mars.h" @@ -29,15 +30,12 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixEvaporate::FixEvaporate(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 7) error->all("Illegal fix evaporate command"); + if (narg < 7) error->all(FLERR,"Illegal fix evaporate command"); scalar_flag = 1; global_freq = 1; @@ -51,9 +49,11 @@ FixEvaporate::FixEvaporate(LAMMPS *lmp, int narg, char **arg) : strcpy(idregion,arg[5]); int seed = atoi(arg[6]); - if (nevery <= 0 || nflux <= 0) error->all("Illegal fix evaporate command"); - if (iregion == -1) error->all("Region ID for fix evaporate does not exist"); - if (seed <= 0) error->all("Illegal fix evaporate command"); + if (nevery <= 0 || nflux <= 0) + error->all(FLERR,"Illegal fix evaporate command"); + if (iregion == -1) + error->all(FLERR,"Region ID for fix evaporate does not exist"); + if (seed <= 0) error->all(FLERR,"Illegal fix evaporate command"); // random number generator, same for all procs @@ -66,12 +66,12 @@ FixEvaporate::FixEvaporate(LAMMPS *lmp, int narg, char **arg) : int iarg = 7; while (iarg < narg) { if (strcmp(arg[iarg],"molecule") == 0) { - if (iarg+2 > narg) error->all("Illegal fix evaporate command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix evaporate command"); if (strcmp(arg[iarg+1],"no") == 0) molflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) molflag = 1; - else error->all("Illegal fix evaporate command"); + else error->all(FLERR,"Illegal fix evaporate command"); iarg += 2; - } else error->all("Illegal fix evaporate command"); + } else error->all(FLERR,"Illegal fix evaporate command"); } // set up reneighboring @@ -112,7 +112,7 @@ void FixEvaporate::init() iregion = domain->find_region(idregion); if (iregion == -1) - error->all("Region ID for fix evaporate does not exist"); + error->all(FLERR,"Region ID for fix evaporate does not exist"); // check that no deletable atoms are in atom->firstgroup // deleting such an atom would not leave firstgroup atoms first @@ -130,7 +130,7 @@ void FixEvaporate::init() MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); if (flagall) - error->all("Cannot evaporate atoms in atom_modify first group"); + error->all(FLERR,"Cannot evaporate atoms in atom_modify first group"); } // if molflag not set, warn if any deletable atom has a mol ID @@ -146,12 +146,13 @@ void FixEvaporate::init() int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); if (flagall && comm->me == 0) - error-> - warning("Fix evaporate may delete atom with non-zero molecule ID"); + error->warning(FLERR, + "Fix evaporate may delete atom with non-zero molecule ID"); } if (molflag && atom->molecule_flag == 0) - error->all("Fix evaporate molecule requires atom attribute molecule"); + error->all(FLERR, + "Fix evaporate molecule requires atom attribute molecule"); } /* ---------------------------------------------------------------------- @@ -162,7 +163,8 @@ void FixEvaporate::init() void FixEvaporate::pre_exchange() { - int i,iwhichglobal,iwhichlocal; + int i,j,m,iwhichglobal,iwhichlocal; + int ndel,ndeltopo[4]; if (update->ntimestep != next_reneighbor) return; @@ -179,10 +181,11 @@ void FixEvaporate::pre_exchange() // ncount = # of deletable atoms in region that I own // nall = # on all procs // nbefore = # on procs before me - // list[ncount] = list of local indices + // list[ncount] = list of local indices of atoms I can delete double **x = atom->x; int *mask = atom->mask; + int *tag = atom->tag; int nlocal = atom->nlocal; int ncount = 0; @@ -197,9 +200,10 @@ void FixEvaporate::pre_exchange() nbefore -= ncount; // ndel = total # of atom deletions, in or out of region + // ndeltopo[1,2,3,4] = ditto for bonds, angles, dihedrals, impropers // mark[] = 1 if deleted - int ndel = 0; + ndel = 0; for (i = 0; i < nlocal; i++) mark[i] = 0; // atomic deletions @@ -226,12 +230,14 @@ void FixEvaporate::pre_exchange() // bcast mol ID and delete all atoms in that molecule on any proc // update deletion count by total # of atoms in molecule // shrink list of eligible candidates as any of my atoms get marked - // keep ndel,ncount,nall,nbefore current after each molecule deletion + // keep ndel,ndeltopo,ncount,nall,nbefore current after each mol deletion } else { int me,proc,iatom,imolecule,ndelone,ndelall; int *molecule = atom->molecule; + ndeltopo[0] = ndeltopo[1] = ndeltopo[2] = ndeltopo[3] = 0; + while (nall && ndel < nflux) { // pick an iatom,imolecule on proc me to delete @@ -245,7 +251,9 @@ void FixEvaporate::pre_exchange() } else me = -1; // bcast mol ID to delete all atoms from - // delete single iatom if mol ID = 0 + // if mol ID > 0, delete any atom in molecule and decrement counters + // if mol ID == 0, delete single iatom + // be careful to delete correct # of bond,angle,etc for newton on or off MPI_Allreduce(&me,&proc,1,MPI_INT,MPI_MAX,world); MPI_Bcast(&imolecule,1,MPI_INT,proc,world); @@ -254,6 +262,43 @@ void FixEvaporate::pre_exchange() if (imolecule && molecule[i] == imolecule) { mark[i] = 1; ndelone++; + + if (atom->avec->bonds_allow) { + if (force->newton_bond) ndeltopo[0] += atom->num_bond[i]; + else { + for (j = 0; j < atom->num_bond[i]; j++) { + if (tag[i] < atom->bond_atom[i][j]) ndeltopo[0]++; + } + } + } + if (atom->avec->angles_allow) { + if (force->newton_bond) ndeltopo[1] += atom->num_angle[i]; + else { + for (j = 0; j < atom->num_angle[i]; j++) { + m = atom->map(atom->angle_atom2[i][j]); + if (m >= 0 && m < nlocal) ndeltopo[1]++; + } + } + } + if (atom->avec->dihedrals_allow) { + if (force->newton_bond) ndeltopo[2] += atom->num_dihedral[i]; + else { + for (j = 0; j < atom->num_dihedral[i]; j++) { + m = atom->map(atom->dihedral_atom2[i][j]); + if (m >= 0 && m < nlocal) ndeltopo[2]++; + } + } + } + if (atom->avec->impropers_allow) { + if (force->newton_bond) ndeltopo[3] += atom->num_improper[i]; + else { + for (j = 0; j < atom->num_improper[i]; j++) { + m = atom->map(atom->improper_atom2[i][j]); + if (m >= 0 && m < nlocal) ndeltopo[3]++; + } + } + } + } else if (me == proc && i == iatom) { mark[i] = 1; ndelone++; @@ -271,6 +316,8 @@ void FixEvaporate::pre_exchange() } // update ndel,ncount,nall,nbefore + // ndelall is total atoms deleted on this iteration + // ncount is already correct, so resum to get nall and nbefore MPI_Allreduce(&ndelone,&ndelall,1,MPI_INT,MPI_SUM,world); ndel += ndelall; @@ -292,11 +339,20 @@ void FixEvaporate::pre_exchange() } } - // reset global natoms + // reset global natoms and bonds, angles, etc // if global map exists, reset it now instead of waiting for comm // since deleting atoms messes up ghosts atom->natoms -= ndel; + if (molflag) { + int all[4]; + MPI_Allreduce(ndeltopo,all,4,MPI_INT,MPI_SUM,world); + atom->nbonds -= all[0]; + atom->nangles -= all[1]; + atom->ndihedrals -= all[2]; + atom->nimpropers -= all[3]; + } + if (ndel && atom->map_style) { atom->nghost = 0; atom->map_init(); diff --git a/src/fix_external.cpp b/src/fix_external.cpp index 449a6d07c9..dd92847cf0 100644 --- a/src/fix_external.cpp +++ b/src/fix_external.cpp @@ -26,7 +26,7 @@ using namespace LAMMPS_NS; FixExternal::FixExternal(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 3) error->all("Illegal fix external command"); + if (narg != 3) error->all(FLERR,"Illegal fix external command"); callback = NULL; @@ -55,7 +55,7 @@ int FixExternal::setmask() void FixExternal::init() { - if (callback == NULL) error->all("Fix external callback function not set"); + if (callback == NULL) error->all(FLERR,"Fix external callback function not set"); } /* ---------------------------------------------------------------------- */ diff --git a/src/fix_gravity.cpp b/src/fix_gravity.cpp index 7c25edf769..de71e6bd79 100644 --- a/src/fix_gravity.cpp +++ b/src/fix_gravity.cpp @@ -20,9 +20,11 @@ #include "update.h" #include "domain.h" #include "respa.h" +#include "math_const.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; enum{CHUTE,SPHERICAL,GRADIENT,VECTOR}; @@ -31,39 +33,41 @@ enum{CHUTE,SPHERICAL,GRADIENT,VECTOR}; FixGravity::FixGravity(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 5) error->all("Illegal fix gravity command"); + if (narg < 5) error->all(FLERR,"Illegal fix gravity command"); time_depend = 1; + scalar_flag = 1; + global_freq = 1; + extscalar = 1; magnitude = atof(arg[3]); if (strcmp(arg[4],"chute") == 0) { - if (narg != 6) error->all("Illegal fix gravity command"); + if (narg != 6) error->all(FLERR,"Illegal fix gravity command"); style = CHUTE; phi = 0.0; theta = 180.0 - atof(arg[5]); } else if (strcmp(arg[4],"spherical") == 0) { - if (narg != 7) error->all("Illegal fix gravity command"); + if (narg != 7) error->all(FLERR,"Illegal fix gravity command"); style = SPHERICAL; phi = atof(arg[5]); theta = atof(arg[6]); } else if (strcmp(arg[4],"gradient") == 0) { - if (narg != 9) error->all("Illegal fix gravity command"); + if (narg != 9) error->all(FLERR,"Illegal fix gravity command"); style = GRADIENT; phi = atof(arg[5]); theta = atof(arg[6]); phigrad = atof(arg[7]); thetagrad = atof(arg[8]); } else if (strcmp(arg[4],"vector") == 0) { - if (narg != 8) error->all("Illegal fix gravity command"); + if (narg != 8) error->all(FLERR,"Illegal fix gravity command"); style = VECTOR; xdir = atof(arg[5]); ydir = atof(arg[6]); zdir = atof(arg[7]); - } else error->all("Illegal fix gravity command"); + } else error->all(FLERR,"Illegal fix gravity command"); - double PI = 4.0*atan(1.0); - degree2rad = PI/180.0; + degree2rad = MY_PI/180.0; if (style == CHUTE || style == SPHERICAL || style == GRADIENT) { if (domain->dimension == 3) { @@ -90,6 +94,9 @@ FixGravity::FixGravity(LAMMPS *lmp, int narg, char **arg) : } time_origin = update->ntimestep; + + eflag = 0; + egrav = 0.0; } /* ---------------------------------------------------------------------- */ @@ -98,6 +105,7 @@ int FixGravity::setmask() { int mask = 0; mask |= POST_FORCE; + mask |= THERMO_ENERGY; mask |= POST_FORCE_RESPA; return mask; } @@ -155,6 +163,7 @@ void FixGravity::post_force(int vflag) zacc = magnitude*zgrav; } + double **x = atom->x; double **f = atom->f; double *rmass = atom->rmass; double *mass = atom->mass; @@ -163,6 +172,9 @@ void FixGravity::post_force(int vflag) int nlocal = atom->nlocal; double massone; + eflag = 0; + egrav = 0.0; + if (rmass) { for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { @@ -170,6 +182,7 @@ void FixGravity::post_force(int vflag) f[i][0] += massone*xacc; f[i][1] += massone*yacc; f[i][2] += massone*zacc; + egrav -= massone * (xacc*x[i][0] + yacc*x[i][1] + zacc*x[i][2]); } } else { for (int i = 0; i < nlocal; i++) @@ -178,6 +191,7 @@ void FixGravity::post_force(int vflag) f[i][0] += massone*xacc; f[i][1] += massone*yacc; f[i][2] += massone*zacc; + egrav -= massone * (xacc*x[i][0] + yacc*x[i][1] + zacc*x[i][2]); } } } @@ -188,3 +202,18 @@ void FixGravity::post_force_respa(int vflag, int ilevel, int iloop) { if (ilevel == nlevels_respa-1) post_force(vflag); } + +/* ---------------------------------------------------------------------- + potential energy in gravity field +------------------------------------------------------------------------- */ + +double FixGravity::compute_scalar() +{ + // only sum across procs one time + + if (eflag == 0) { + MPI_Allreduce(&egrav,&egrav_all,1,MPI_DOUBLE,MPI_SUM,world); + eflag = 1; + } + return egrav_all; +} diff --git a/src/fix_gravity.h b/src/fix_gravity.h index 248a9ffa18..4b53c1b944 100644 --- a/src/fix_gravity.h +++ b/src/fix_gravity.h @@ -32,10 +32,11 @@ class FixGravity : public Fix { int setmask(); void init(); void setup(int); - void post_force(int); - void post_force_respa(int, int, int); + virtual void post_force(int); + virtual void post_force_respa(int, int, int); + double compute_scalar(); - private: + protected: int style; double magnitude,dt; double phi,theta,phigrad,thetagrad; @@ -44,6 +45,8 @@ class FixGravity : public Fix { double degree2rad; int nlevels_respa; int time_origin; + int eflag; + double egrav,egrav_all; }; } diff --git a/src/fix_heat.cpp b/src/fix_heat.cpp index 450d0bb841..45bd030cc2 100644 --- a/src/fix_heat.cpp +++ b/src/fix_heat.cpp @@ -33,14 +33,14 @@ using namespace LAMMPS_NS; FixHeat::FixHeat(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 4) error->all("Illegal fix heat command"); + if (narg < 4) error->all(FLERR,"Illegal fix heat command"); scalar_flag = 1; global_freq = 1; extscalar = 0; nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix heat command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix heat command"); heat_input = atof(arg[4]); @@ -52,14 +52,14 @@ FixHeat::FixHeat(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) int iarg = 5; while (iarg < narg) { if (strcmp(arg[iarg],"region") == 0) { - if (iarg+2 > narg) error->all("Illegal fix heat command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix heat command"); iregion = domain->find_region(arg[iarg+1]); - if (iregion == -1) error->all("Region ID for fix heat does not exist"); + if (iregion == -1) error->all(FLERR,"Region ID for fix heat does not exist"); int n = strlen(arg[iarg+1]) + 1; idregion = new char[n]; strcpy(idregion,arg[iarg+1]); iarg += 2; - } else error->all("Illegal fix heat command"); + } else error->all(FLERR,"Illegal fix heat command"); } scale = 1.0; @@ -89,12 +89,12 @@ void FixHeat::init() if (iregion >= 0) { iregion = domain->find_region(idregion); - if (iregion == -1) error->all("Region ID for fix heat does not exist"); + if (iregion == -1) error->all(FLERR,"Region ID for fix heat does not exist"); } // cannot have 0 atoms in group - if (group->count(igroup) == 0) error->all("Fix heat group has no atoms"); + if (group->count(igroup) == 0) error->all(FLERR,"Fix heat group has no atoms"); masstotal = group->mass(igroup); } @@ -113,7 +113,7 @@ void FixHeat::end_of_step() group->vcm(igroup,masstotal,vcm); } else { masstotal = group->mass(igroup,iregion); - if (masstotal == 0.0) error->all("Fix heat group has no atoms"); + if (masstotal == 0.0) error->all(FLERR,"Fix heat group has no atoms"); heat = heat_input*nevery*update->dt*force->ftm2v; ke = group->ke(igroup,iregion)*force->ftm2v; group->vcm(igroup,masstotal,vcm,iregion); @@ -121,7 +121,7 @@ void FixHeat::end_of_step() double vcmsq = vcm[0]*vcm[0] + vcm[1]*vcm[1] + vcm[2]*vcm[2]; double escale = (ke + heat - 0.5*vcmsq*masstotal)/(ke - 0.5*vcmsq*masstotal); - if (escale < 0.0) error->all("Fix heat kinetic energy went negative"); + if (escale < 0.0) error->all(FLERR,"Fix heat kinetic energy went negative"); scale = sqrt(escale); vsub[0] = (scale-1.0) * vcm[0]; diff --git a/src/fix_indent.cpp b/src/fix_indent.cpp index dd6f7490ee..48f72ac048 100644 --- a/src/fix_indent.cpp +++ b/src/fix_indent.cpp @@ -40,7 +40,7 @@ enum{INSIDE,OUTSIDE}; FixIndent::FixIndent(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 4) error->all("Illegal fix indent command"); + if (narg < 4) error->all(FLERR,"Illegal fix indent command"); scalar_flag = 1; vector_flag = 1; @@ -59,7 +59,7 @@ FixIndent::FixIndent(LAMMPS *lmp, int narg, char **arg) : // setup scaling if (scaleflag && domain->lattice == NULL) - error->all("Use of fix indent with undefined lattice"); + error->all(FLERR,"Use of fix indent with undefined lattice"); double xscale,yscale,zscale; if (scaleflag) { @@ -80,7 +80,7 @@ FixIndent::FixIndent(LAMMPS *lmp, int narg, char **arg) : if (cdim == 0 && !pstr) pvalue *= xscale; else if (cdim == 1 && !pstr) pvalue *= yscale; else if (cdim == 2 && !pstr) pvalue *= zscale; - } else error->all("Illegal fix indent command"); + } else error->all(FLERR,"Illegal fix indent command"); varflag = 0; if (xstr || ystr || zstr || rstr || pstr) varflag = 1; @@ -118,33 +118,33 @@ void FixIndent::init() { if (xstr) { xvar = input->variable->find(xstr); - if (xvar < 0) error->all("Variable name for fix indent does not exist"); + if (xvar < 0) error->all(FLERR,"Variable name for fix indent does not exist"); if (!input->variable->equalstyle(xvar)) - error->all("Variable for fix indent is invalid style"); + error->all(FLERR,"Variable for fix indent is invalid style"); } if (ystr) { yvar = input->variable->find(ystr); - if (yvar < 0) error->all("Variable name for fix indent does not exist"); + if (yvar < 0) error->all(FLERR,"Variable name for fix indent does not exist"); if (!input->variable->equalstyle(yvar)) - error->all("Variable for fix indent is not equal style"); + error->all(FLERR,"Variable for fix indent is not equal style"); } if (zstr) { zvar = input->variable->find(zstr); - if (zvar < 0) error->all("Variable name for fix indent does not exist"); + if (zvar < 0) error->all(FLERR,"Variable name for fix indent does not exist"); if (!input->variable->equalstyle(zvar)) - error->all("Variable for fix indent is not equal style"); + error->all(FLERR,"Variable for fix indent is not equal style"); } if (rstr) { rvar = input->variable->find(rstr); - if (rvar < 0) error->all("Variable name for fix indent does not exist"); + if (rvar < 0) error->all(FLERR,"Variable name for fix indent does not exist"); if (!input->variable->equalstyle(rvar)) - error->all("Variable for fix indent is not equal style"); + error->all(FLERR,"Variable for fix indent is not equal style"); } if (pstr) { pvar = input->variable->find(pstr); - if (pvar < 0) error->all("Variable name for fix indent does not exist"); + if (pvar < 0) error->all(FLERR,"Variable name for fix indent does not exist"); if (!input->variable->equalstyle(pvar)) - error->all("Variable for fix indent is not equal style"); + error->all(FLERR,"Variable for fix indent is not equal style"); } if (strstr(update->integrate_style,"respa")) @@ -396,7 +396,7 @@ double FixIndent::compute_vector(int n) void FixIndent::options(int narg, char **arg) { - if (narg < 0) error->all("Illegal fix indent command"); + if (narg < 0) error->all(FLERR,"Illegal fix indent command"); istyle = NONE; xstr = ystr = zstr = rstr = pstr = NULL; @@ -407,7 +407,7 @@ void FixIndent::options(int narg, char **arg) int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"sphere") == 0) { - if (iarg+5 > narg) error->all("Illegal fix indent command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal fix indent command"); if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { int n = strlen(&arg[iarg+1][2]) + 1; @@ -434,7 +434,7 @@ void FixIndent::options(int narg, char **arg) iarg += 5; } else if (strcmp(arg[iarg],"cylinder") == 0) { - if (iarg+5 > narg) error->all("Illegal fix indent command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal fix indent command"); if (strcmp(arg[iarg+1],"x") == 0) { cdim = 0; @@ -472,7 +472,7 @@ void FixIndent::options(int narg, char **arg) ystr = new char[n]; strcpy(ystr,&arg[iarg+3][2]); } else yvalue = atof(arg[iarg+3]); - } else error->all("Illegal fix indent command"); + } else error->all(FLERR,"Illegal fix indent command"); if (strstr(arg[iarg+4],"v_") == arg[iarg+4]) { int n = strlen(&arg[iarg+4][2]) + 1; @@ -484,11 +484,11 @@ void FixIndent::options(int narg, char **arg) iarg += 5; } else if (strcmp(arg[iarg],"plane") == 0) { - if (iarg+4 > narg) error->all("Illegal fix indent command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix indent command"); if (strcmp(arg[iarg+1],"x") == 0) cdim = 0; else if (strcmp(arg[iarg+1],"y") == 0) cdim = 1; else if (strcmp(arg[iarg+1],"z") == 0) cdim = 2; - else error->all("Illegal fix indent command"); + else error->all(FLERR,"Illegal fix indent command"); if (strstr(arg[iarg+2],"v_") == arg[iarg+2]) { int n = strlen(&arg[iarg+2][2]) + 1; @@ -498,23 +498,23 @@ void FixIndent::options(int narg, char **arg) if (strcmp(arg[iarg+3],"lo") == 0) planeside = -1; else if (strcmp(arg[iarg+3],"hi") == 0) planeside = 1; - else error->all("Illegal fix indent command"); + else error->all(FLERR,"Illegal fix indent command"); istyle = PLANE; iarg += 4; } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal fix indent command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix indent command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal fix indent command"); + else error->all(FLERR,"Illegal fix indent command"); iarg += 2; } else if (strcmp(arg[iarg],"side") == 0) { - if (iarg+2 > narg) error->all("Illegal fix indent command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix indent command"); if (strcmp(arg[iarg+1],"in") == 0) side = INSIDE; else if (strcmp(arg[iarg+1],"out") == 0) side = OUTSIDE; - else error->all("Illegal fix indent command"); + else error->all(FLERR,"Illegal fix indent command"); iarg += 2; - } else error->all("Illegal fix indent command"); + } else error->all(FLERR,"Illegal fix indent command"); } } diff --git a/src/fix_langevin.cpp b/src/fix_langevin.cpp index e887928993..d7683d7dee 100644 --- a/src/fix_langevin.cpp +++ b/src/fix_langevin.cpp @@ -48,7 +48,7 @@ enum{NOBIAS,BIAS}; FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 7) error->all("Illegal fix langevin command"); + if (narg < 7) error->all(FLERR,"Illegal fix langevin command"); scalar_flag = 1; global_freq = 1; @@ -60,8 +60,8 @@ FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) : t_period = atof(arg[5]); int seed = atoi(arg[6]); - if (t_period <= 0.0) error->all("Fix langevin period must be > 0.0"); - if (seed <= 0) error->all("Illegal fix langevin command"); + if (t_period <= 0.0) error->all(FLERR,"Fix langevin period must be > 0.0"); + if (seed <= 0) error->all(FLERR,"Illegal fix langevin command"); // initialize Marsaglia RNG with processor-unique seed @@ -83,38 +83,38 @@ FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) : int iarg = 7; while (iarg < narg) { if (strcmp(arg[iarg],"angmom") == 0) { - if (iarg+2 > narg) error->all("Illegal fix langevin command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix langevin command"); if (strcmp(arg[iarg+1],"no") == 0) aflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) aflag = 1; - else error->all("Illegal fix langevin command"); + else error->all(FLERR,"Illegal fix langevin command"); iarg += 2; } else if (strcmp(arg[iarg],"omega") == 0) { - if (iarg+2 > narg) error->all("Illegal fix langevin command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix langevin command"); if (strcmp(arg[iarg+1],"no") == 0) oflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) oflag = 1; - else error->all("Illegal fix langevin command"); + else error->all(FLERR,"Illegal fix langevin command"); iarg += 2; } else if (strcmp(arg[iarg],"scale") == 0) { - if (iarg+3 > narg) error->all("Illegal fix langevin command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix langevin command"); int itype = atoi(arg[iarg+1]); double scale = atof(arg[iarg+2]); if (itype <= 0 || itype > atom->ntypes) - error->all("Illegal fix langevin command"); + error->all(FLERR,"Illegal fix langevin command"); ratio[itype] = scale; iarg += 3; } else if (strcmp(arg[iarg],"tally") == 0) { - if (iarg+2 > narg) error->all("Illegal fix langevin command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix langevin command"); if (strcmp(arg[iarg+1],"no") == 0) tally = 0; else if (strcmp(arg[iarg+1],"yes") == 0) tally = 1; - else error->all("Illegal fix langevin command"); + else error->all(FLERR,"Illegal fix langevin command"); iarg += 2; } else if (strcmp(arg[iarg],"zero") == 0) { - if (iarg+2 > narg) error->all("Illegal fix langevin command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix langevin command"); if (strcmp(arg[iarg+1],"no") == 0) zeroflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) zeroflag = 1; - else error->all("Illegal fix langevin command"); + else error->all(FLERR,"Illegal fix langevin command"); iarg += 2; - } else error->all("Illegal fix langevin command"); + } else error->all(FLERR,"Illegal fix langevin command"); } // error check @@ -122,7 +122,7 @@ FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) : if (aflag) { avec = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); if (!avec) - error->all("Fix langevin angmom requires atom style ellipsoid"); + error->all(FLERR,"Fix langevin angmom requires atom style ellipsoid"); } // set temperature = NULL, user can override via fix_modify if wants bias @@ -167,9 +167,9 @@ int FixLangevin::setmask() void FixLangevin::init() { if (oflag && !atom->sphere_flag) - error->all("Fix langevin omega require atom style sphere"); + error->all(FLERR,"Fix langevin omega require atom style sphere"); if (aflag && !atom->ellipsoid_flag) - error->all("Fix langevin angmom require atom style ellipsoid"); + error->all(FLERR,"Fix langevin angmom require atom style ellipsoid"); // if oflag or aflag set, check that all group particles are finite-size @@ -181,7 +181,7 @@ void FixLangevin::init() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) if (radius[i] == 0.0) - error->one("Fix langevin omega requires extended particles"); + error->one(FLERR,"Fix langevin omega requires extended particles"); } if (aflag) { @@ -192,7 +192,7 @@ void FixLangevin::init() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) if (ellipsoid[i] < 0) - error->one("Fix langevin angmom requires extended particles"); + error->one(FLERR,"Fix langevin angmom requires extended particles"); } // set force prefactors @@ -283,7 +283,7 @@ void FixLangevin::post_force_no_tally() if (zeroflag) { count = group->count(igroup); if (count == 0) - error->all("Cannot zero Langevin force of 0 atoms"); + error->all(FLERR,"Cannot zero Langevin force of 0 atoms"); } if (rmass) { @@ -656,20 +656,20 @@ void FixLangevin::reset_dt() int FixLangevin::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); delete [] id_temp; int n = strlen(arg[1]) + 1; id_temp = new char[n]; strcpy(id_temp,arg[1]); int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != igroup && comm->me == 0) - error->warning("Group for fix_modify temp != fix group"); + error->warning(FLERR,"Group for fix_modify temp != fix group"); return 2; } return 0; diff --git a/src/fix_lineforce.cpp b/src/fix_lineforce.cpp index 9f3f6b241b..f56c28146a 100644 --- a/src/fix_lineforce.cpp +++ b/src/fix_lineforce.cpp @@ -27,13 +27,13 @@ using namespace LAMMPS_NS; FixLineForce::FixLineForce(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 6) error->all("Illegal fix lineforce command"); + if (narg != 6) error->all(FLERR,"Illegal fix lineforce command"); xdir = atof(arg[3]); ydir = atof(arg[4]); zdir = atof(arg[5]); double len = sqrt(xdir*xdir + ydir*ydir + zdir*zdir); - if (len == 0.0) error->all("Illegal fix lineforce command"); + if (len == 0.0) error->all(FLERR,"Illegal fix lineforce command"); xdir /= len; ydir /= len; diff --git a/src/fix_momentum.cpp b/src/fix_momentum.cpp index 400f394c93..8fb7f3ae02 100644 --- a/src/fix_momentum.cpp +++ b/src/fix_momentum.cpp @@ -30,16 +30,16 @@ using namespace LAMMPS_NS; FixMomentum::FixMomentum(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 4) error->all("Illegal fix momentum command"); + if (narg < 4) error->all(FLERR,"Illegal fix momentum command"); nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix momentum command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix momentum command"); linear = angular = 0; int iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"linear") == 0) { - if (iarg+4 > narg) error->all("Illegal fix momentum command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix momentum command"); linear = 1; xflag = atoi(arg[iarg+1]); yflag = atoi(arg[iarg+2]); @@ -48,20 +48,20 @@ FixMomentum::FixMomentum(LAMMPS *lmp, int narg, char **arg) : } else if (strcmp(arg[iarg],"angular") == 0) { angular = 1; iarg += 1; - } else error->all("Illegal fix momentum command"); + } else error->all(FLERR,"Illegal fix momentum command"); } if (linear == 0 && angular == 0) - error->all("Illegal fix momentum command"); + error->all(FLERR,"Illegal fix momentum command"); if (linear) if (xflag < 0 || xflag > 1 || yflag < 0 || yflag > 1 || - zflag < 0 || zflag > 1) error->all("Illegal fix momentum command"); + zflag < 0 || zflag > 1) error->all(FLERR,"Illegal fix momentum command"); // cannot have 0 atoms in group if (group->count(igroup) == 0) - error->all("Fix momentum group has no atoms"); + error->all(FLERR,"Fix momentum group has no atoms"); } /* ---------------------------------------------------------------------- */ diff --git a/src/fix_move.cpp b/src/fix_move.cpp index bb886f8ec0..74657fa86e 100644 --- a/src/fix_move.cpp +++ b/src/fix_move.cpp @@ -26,10 +26,12 @@ #include "respa.h" #include "input.h" #include "variable.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; enum{LINEAR,WIGGLE,ROTATE,VARIABLE}; enum{EQUAL,ATOM}; @@ -39,7 +41,7 @@ enum{EQUAL,ATOM}; FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 4) error->all("Illegal fix move command"); + if (narg < 4) error->all(FLERR,"Illegal fix move command"); restart_global = 1; restart_peratom = 1; @@ -57,7 +59,7 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : vxvarstr = vyvarstr = vzvarstr = NULL; if (strcmp(arg[3],"linear") == 0) { - if (narg < 7) error->all("Illegal fix move command"); + if (narg < 7) error->all(FLERR,"Illegal fix move command"); iarg = 7; mstyle = LINEAR; if (strcmp(arg[4],"NULL") == 0) vxflag = 0; @@ -77,7 +79,7 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : } } else if (strcmp(arg[3],"wiggle") == 0) { - if (narg < 8) error->all("Illegal fix move command"); + if (narg < 8) error->all(FLERR,"Illegal fix move command"); iarg = 8; mstyle = WIGGLE; if (strcmp(arg[4],"NULL") == 0) axflag = 0; @@ -98,7 +100,7 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : period = atof(arg[7]); } else if (strcmp(arg[3],"rotate") == 0) { - if (narg < 11) error->all("Illegal fix move command"); + if (narg < 11) error->all(FLERR,"Illegal fix move command"); iarg = 11; mstyle = ROTATE; point[0] = atof(arg[4]); @@ -110,7 +112,7 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : period = atof(arg[10]); } else if (strcmp(arg[3],"variable") == 0) { - if (narg < 10) error->all("Illegal fix move command"); + if (narg < 10) error->all(FLERR,"Illegal fix move command"); iarg = 10; mstyle = VARIABLE; if (strcmp(arg[4],"NULL") == 0) xvarstr = NULL; @@ -118,39 +120,39 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : int n = strlen(&arg[4][2]) + 1; xvarstr = new char[n]; strcpy(xvarstr,&arg[4][2]); - } else error->all("Illegal fix move command"); + } else error->all(FLERR,"Illegal fix move command"); if (strcmp(arg[5],"NULL") == 0) yvarstr = NULL; else if (strstr(arg[5],"v_") == arg[5]) { int n = strlen(&arg[5][2]) + 1; yvarstr = new char[n]; strcpy(yvarstr,&arg[5][2]); - } else error->all("Illegal fix move command"); + } else error->all(FLERR,"Illegal fix move command"); if (strcmp(arg[6],"NULL") == 0) zvarstr = NULL; else if (strstr(arg[6],"v_") == arg[6]) { int n = strlen(&arg[6][2]) + 1; zvarstr = new char[n]; strcpy(zvarstr,&arg[6][2]); - } else error->all("Illegal fix move command"); + } else error->all(FLERR,"Illegal fix move command"); if (strcmp(arg[7],"NULL") == 0) vxvarstr = NULL; else if (strstr(arg[7],"v_") == arg[7]) { int n = strlen(&arg[7][2]) + 1; vxvarstr = new char[n]; strcpy(vxvarstr,&arg[7][2]); - } else error->all("Illegal fix move command"); + } else error->all(FLERR,"Illegal fix move command"); if (strcmp(arg[8],"NULL") == 0) vyvarstr = NULL; else if (strstr(arg[8],"v_") == arg[8]) { int n = strlen(&arg[8][2]) + 1; vyvarstr = new char[n]; strcpy(vyvarstr,&arg[8][2]); - } else error->all("Illegal fix move command"); + } else error->all(FLERR,"Illegal fix move command"); if (strcmp(arg[9],"NULL") == 0) vzvarstr = NULL; else if (strstr(arg[9],"v_") == arg[9]) { int n = strlen(&arg[9][2]) + 1; vzvarstr = new char[n]; strcpy(vzvarstr,&arg[9][2]); - } else error->all("Illegal fix move command"); + } else error->all(FLERR,"Illegal fix move command"); - } else error->all("Illegal fix move command"); + } else error->all(FLERR,"Illegal fix move command"); // optional args @@ -158,38 +160,38 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal fix move command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix move command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal fix move command"); + else error->all(FLERR,"Illegal fix move command"); iarg += 2; - } else error->all("Illegal fix move command"); + } else error->all(FLERR,"Illegal fix move command"); } // error checks and warnings if (domain->dimension == 2) { if (mstyle == LINEAR && vzflag && vz != 0.0) - error->all("Fix move cannot set linear z motion for 2d problem"); + error->all(FLERR,"Fix move cannot set linear z motion for 2d problem"); if (mstyle == WIGGLE && azflag && az != 0.0) - error->all("Fix move cannot set wiggle z motion for 2d problem"); + error->all(FLERR,"Fix move cannot set wiggle z motion for 2d problem"); if (mstyle == ROTATE && (axis[0] != 0.0 || axis[1] != 0.0)) - error->all("Fix move cannot rotate aroung non z-axis for 2d problem"); + error->all(FLERR,"Fix move cannot rotate aroung non z-axis for 2d problem"); if (mstyle == VARIABLE && (zvarstr || vzvarstr)) - error->all("Fix move cannot define z or vz variable for 2d problem"); + error->all(FLERR,"Fix move cannot define z or vz variable for 2d problem"); } if (atom->angmom_flag && comm->me == 0) - error->warning("Fix move does not update angular momentum"); + error->warning(FLERR,"Fix move does not update angular momentum"); if (atom->ellipsoid_flag && comm->me == 0) - error->warning("Fix move does not update quaternions"); + error->warning(FLERR,"Fix move does not update quaternions"); // setup scaling and apply scaling factors to velocity & amplitude if ((mstyle == LINEAR || mstyle == WIGGLE || mstyle == ROTATE) && scaleflag) { if (domain->lattice == NULL) - error->all("Use of fix move with undefined lattice"); + error->all(FLERR,"Use of fix move with undefined lattice"); double xscale,yscale,zscale; if (scaleflag) { @@ -216,17 +218,14 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : // set omega_rotate from period - if (mstyle == WIGGLE || mstyle == ROTATE) { - double PI = 4.0 * atan(1.0); - omega_rotate = 2.0*PI / period; - } + if (mstyle == WIGGLE || mstyle == ROTATE) omega_rotate = 2.0*MY_PI / period; // runit = unit vector along rotation axis if (mstyle == ROTATE) { double len = sqrt(axis[0]*axis[0] + axis[1]*axis[1] + axis[2]*axis[2]); if (len == 0.0) - error->all("Fix move cannot have 0 length rotation vector"); + error->all(FLERR,"Fix move cannot have 0 length rotation vector"); runit[0] = axis[0]/len; runit[1] = axis[1]/len; runit[2] = axis[2]/len; @@ -310,45 +309,45 @@ void FixMove::init() if (mstyle == VARIABLE) { if (xvarstr) { xvar = input->variable->find(xvarstr); - if (xvar < 0) error->all("Variable name for fix move does not exist"); + if (xvar < 0) error->all(FLERR,"Variable name for fix move does not exist"); if (input->variable->equalstyle(xvar)) xvarstyle = EQUAL; else if (input->variable->atomstyle(xvar)) xvarstyle = ATOM; - else error->all("Variable for fix move is invalid style"); + else error->all(FLERR,"Variable for fix move is invalid style"); } if (yvarstr) { yvar = input->variable->find(yvarstr); - if (yvar < 0) error->all("Variable name for fix move does not exist"); + if (yvar < 0) error->all(FLERR,"Variable name for fix move does not exist"); if (input->variable->equalstyle(yvar)) yvarstyle = EQUAL; else if (input->variable->atomstyle(yvar)) yvarstyle = ATOM; - else error->all("Variable for fix move is invalid style"); + else error->all(FLERR,"Variable for fix move is invalid style"); } if (zvarstr) { zvar = input->variable->find(zvarstr); - if (zvar < 0) error->all("Variable name for fix move does not exist"); + if (zvar < 0) error->all(FLERR,"Variable name for fix move does not exist"); if (input->variable->equalstyle(zvar)) zvarstyle = EQUAL; else if (input->variable->atomstyle(zvar)) zvarstyle = ATOM; - else error->all("Variable for fix move is invalid style"); + else error->all(FLERR,"Variable for fix move is invalid style"); } if (vxvarstr) { vxvar = input->variable->find(vxvarstr); - if (vxvar < 0) error->all("Variable name for fix move does not exist"); + if (vxvar < 0) error->all(FLERR,"Variable name for fix move does not exist"); if (input->variable->equalstyle(vxvar)) vxvarstyle = EQUAL; else if (input->variable->atomstyle(vxvar)) vxvarstyle = ATOM; - else error->all("Variable for fix move is invalid style"); + else error->all(FLERR,"Variable for fix move is invalid style"); } if (vyvarstr) { vyvar = input->variable->find(vyvarstr); - if (vyvar < 0) error->all("Variable name for fix move does not exist"); + if (vyvar < 0) error->all(FLERR,"Variable name for fix move does not exist"); if (input->variable->equalstyle(vyvar)) vyvarstyle = EQUAL; else if (input->variable->atomstyle(vyvar)) vyvarstyle = ATOM; - else error->all("Variable for fix move is invalid style"); + else error->all(FLERR,"Variable for fix move is invalid style"); } if (vzvarstr) { vzvar = input->variable->find(vzvarstr); - if (vzvar < 0) error->all("Variable name for fix move does not exist"); + if (vzvar < 0) error->all(FLERR,"Variable name for fix move does not exist"); if (input->variable->equalstyle(vzvar)) vzvarstyle = EQUAL; else if (input->variable->atomstyle(vzvar)) vzvarstyle = ATOM; - else error->all("Variable for fix move is invalid style"); + else error->all(FLERR,"Variable for fix move is invalid style"); } displaceflag = velocityflag = 0; @@ -883,7 +882,7 @@ void FixMove::set_arrays(int i) // backup particle to time_origin if (mstyle == VARIABLE) - error->all("Cannot add atoms to fix move variable"); + error->all(FLERR,"Cannot add atoms to fix move variable"); domain->unmap(x[i],image[i],xoriginal[i]); double delta = (update->ntimestep - time_origin) * update->dt; @@ -1005,5 +1004,5 @@ int FixMove::size_restart(int nlocal) void FixMove::reset_dt() { - error->all("Resetting timestep is not allowed with fix move"); + error->all(FLERR,"Resetting timestep is not allowed with fix move"); } diff --git a/src/fix_nh.cpp b/src/fix_nh.cpp index 50d3c4dd79..2bf3df8a89 100644 --- a/src/fix_nh.cpp +++ b/src/fix_nh.cpp @@ -39,9 +39,6 @@ using namespace LAMMPS_NS; #define DELTAFLIP 0.1 #define TILTMAX 1.5 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - enum{NOBIAS,BIAS}; enum{NONE,XYZ,XY,YZ,XZ}; enum{ISO,ANISO,TRICLINIC}; @@ -52,7 +49,7 @@ enum{ISO,ANISO,TRICLINIC}; FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 4) error->all("Illegal fix nvt/npt/nph command"); + if (narg < 4) error->all(FLERR,"Illegal fix nvt/npt/nph command"); restart_global = 1; time_integrate = 1; @@ -72,6 +69,9 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) mtk_flag = 1; deviatoric_flag = 0; nreset_h0 = 0; + eta_mass_flag = 1; + omega_mass_flag = 0; + etap_mass_flag = 0; // turn on tilt factor scaling, whenever applicable @@ -103,17 +103,17 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) while (iarg < narg) { if (strcmp(arg[iarg],"temp") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); tstat_flag = 1; t_start = atof(arg[iarg+1]); t_stop = atof(arg[iarg+2]); t_period = atof(arg[iarg+3]); if (t_start < 0.0 || t_stop <= 0.0) - error->all("Target temperature for fix nvt/npt/nph cannot be 0.0"); + error->all(FLERR,"Target temperature for fix nvt/npt/nph cannot be 0.0"); iarg += 4; } else if (strcmp(arg[iarg],"iso") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); pcouple = XYZ; p_start[0] = p_start[1] = p_start[2] = atof(arg[iarg+1]); p_stop[0] = p_stop[1] = p_stop[2] = atof(arg[iarg+2]); @@ -125,7 +125,7 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) } iarg += 4; } else if (strcmp(arg[iarg],"aniso") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); pcouple = NONE; p_start[0] = p_start[1] = p_start[2] = atof(arg[iarg+1]); p_stop[0] = p_stop[1] = p_stop[2] = atof(arg[iarg+2]); @@ -137,7 +137,7 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) } iarg += 4; } else if (strcmp(arg[iarg],"tri") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); pcouple = NONE; scalexy = scalexz = scaleyz = 0; p_start[0] = p_start[1] = p_start[2] = atof(arg[iarg+1]); @@ -158,7 +158,7 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) } iarg += 4; } else if (strcmp(arg[iarg],"x") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[0] = atof(arg[iarg+1]); p_stop[0] = atof(arg[iarg+2]); p_period[0] = atof(arg[iarg+3]); @@ -166,7 +166,7 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) deviatoric_flag = 1; iarg += 4; } else if (strcmp(arg[iarg],"y") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[1] = atof(arg[iarg+1]); p_stop[1] = atof(arg[iarg+2]); p_period[1] = atof(arg[iarg+3]); @@ -174,7 +174,7 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) deviatoric_flag = 1; iarg += 4; } else if (strcmp(arg[iarg],"z") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[2] = atof(arg[iarg+1]); p_stop[2] = atof(arg[iarg+2]); p_period[2] = atof(arg[iarg+3]); @@ -182,10 +182,10 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) deviatoric_flag = 1; iarg += 4; if (dimension == 2) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); } else if (strcmp(arg[iarg],"yz") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); scaleyz = 0; p_start[3] = atof(arg[iarg+1]); p_stop[3] = atof(arg[iarg+2]); @@ -194,9 +194,9 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) deviatoric_flag = 1; iarg += 4; if (dimension == 2) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); } else if (strcmp(arg[iarg],"xz") == 0) { - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); scalexz = 0; p_start[4] = atof(arg[iarg+1]); p_stop[4] = atof(arg[iarg+2]); @@ -205,10 +205,10 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) deviatoric_flag = 1; iarg += 4; if (dimension == 2) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); } else if (strcmp(arg[iarg],"xy") == 0) { scalexy = 0; - if (iarg+4 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[5] = atof(arg[iarg+1]); p_stop[5] = atof(arg[iarg+2]); p_period[5] = atof(arg[iarg+3]); @@ -217,158 +217,158 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) iarg += 4; } else if (strcmp(arg[iarg],"couple") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"xyz") == 0) pcouple = XYZ; else if (strcmp(arg[iarg+1],"xy") == 0) pcouple = XY; else if (strcmp(arg[iarg+1],"yz") == 0) pcouple = YZ; else if (strcmp(arg[iarg+1],"xz") == 0) pcouple = XZ; else if (strcmp(arg[iarg+1],"none") == 0) pcouple = NONE; - else error->all("Illegal fix nvt/npt/nph command"); + else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"drag") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); drag = atof(arg[iarg+1]); - if (drag < 0.0) error->all("Illegal fix nvt/npt/nph command"); + if (drag < 0.0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"dilate") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"all") == 0) allremap = 1; else if (strcmp(arg[iarg+1],"partial") == 0) allremap = 0; - else error->all("Illegal fix nvt/npt/nph command"); + else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"tchain") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); mtchain = atoi(arg[iarg+1]); // used by FixNVTSllod to preserve non-default value mtchain_default_flag = 0; - if (mtchain < 1) error->all("Illegal fix nvt/npt/nph command"); + if (mtchain < 1) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"pchain") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); mpchain = atoi(arg[iarg+1]); - if (mpchain < 0) error->all("Illegal fix nvt/npt/nph command"); + if (mpchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"mtk") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"yes") == 0) mtk_flag = 1; else if (strcmp(arg[iarg+1],"no") == 0) mtk_flag = 0; - else error->all("Illegal fix nvt/npt/nph command"); + else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"tloop") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); nc_tchain = atoi(arg[iarg+1]); - if (nc_tchain < 0) error->all("Illegal fix nvt/npt/nph command"); + if (nc_tchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"ploop") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); nc_pchain = atoi(arg[iarg+1]); - if (nc_pchain < 0) error->all("Illegal fix nvt/npt/nph command"); + if (nc_pchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"nreset") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); nreset_h0 = atoi(arg[iarg+1]); - if (nreset_h0 < 0) error->all("Illegal fix nvt/npt/nph command"); + if (nreset_h0 < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"scalexy") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"yes") == 0) scalexy = 1; else if (strcmp(arg[iarg+1],"no") == 0) scalexy = 0; - else error->all("Illegal fix nvt/npt/nph command"); + else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"scalexz") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"yes") == 0) scalexz = 1; else if (strcmp(arg[iarg+1],"no") == 0) scalexz = 0; - else error->all("Illegal fix nvt/npt/nph command"); + else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"scaleyz") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nvt/npt/nph command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"yes") == 0) scaleyz = 1; else if (strcmp(arg[iarg+1],"no") == 0) scaleyz = 0; - else error->all("Illegal fix nvt/npt/nph command"); + else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; - } else error->all("Illegal fix nvt/npt/nph command"); + } else error->all(FLERR,"Illegal fix nvt/npt/nph command"); } // error checks if (dimension == 2 && (p_flag[2] || p_flag[3] || p_flag[4])) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); if (dimension == 2 && (pcouple == YZ || pcouple == XZ)) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); if (dimension == 2 && (scalexz == 1 || scaleyz == 1 )) - error->all("Invalid fix nvt/npt/nph command for a 2d simulation"); + error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); if (pcouple == XYZ && (p_flag[0] == 0 || p_flag[1] == 0)) - error->all("Invalid fix nvt/npt/nph command pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == XYZ && dimension == 3 && p_flag[2] == 0) - error->all("Invalid fix nvt/npt/nph command pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == XY && (p_flag[0] == 0 || p_flag[1] == 0)) - error->all("Invalid fix nvt/npt/nph command pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == YZ && (p_flag[1] == 0 || p_flag[2] == 0)) - error->all("Invalid fix nvt/npt/nph command pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == XZ && (p_flag[0] == 0 || p_flag[2] == 0)) - error->all("Invalid fix nvt/npt/nph command pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (p_flag[0] && domain->xperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension"); if (p_flag[1] && domain->yperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension"); if (p_flag[2] && domain->zperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension"); if (p_flag[3] && domain->zperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); if (p_flag[4] && domain->zperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); if (p_flag[5] && domain->yperiodic == 0) - error->all("Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); + error->all(FLERR,"Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); if (scaleyz == 1 && domain->zperiodic == 0) - error->all("Cannot use fix nvt/npt/nph " + error->all(FLERR,"Cannot use fix nvt/npt/nph " "with yz dynamics when z is non-periodic dimension"); if (scalexz == 1 && domain->zperiodic == 0) - error->all("Cannot use fix nvt/npt/nph " + error->all(FLERR,"Cannot use fix nvt/npt/nph " "with xz dynamics when z is non-periodic dimension"); if (scalexy == 1 && domain->yperiodic == 0) - error->all("Cannot use fix nvt/npt/nph " + error->all(FLERR,"Cannot use fix nvt/npt/nph " "with xy dynamics when y is non-periodic dimension"); if (p_flag[3] && scaleyz == 1) - error->all("Cannot use fix nvt/npt/nph with" + error->all(FLERR,"Cannot use fix nvt/npt/nph with" "both yz dynamics and yz scaling"); if (p_flag[4] && scalexz == 1) - error->all("Cannot use fix nvt/npt/nph with " + error->all(FLERR,"Cannot use fix nvt/npt/nph with " "both xz dynamics and xz scaling"); if (p_flag[5] && scalexy == 1) - error->all("Cannot use fix nvt/npt/nph with " + error->all(FLERR,"Cannot use fix nvt/npt/nph with " "both xy dynamics and xy scaling"); if (!domain->triclinic && (p_flag[3] || p_flag[4] || p_flag[5])) - error->all("Can not specify Pxy/Pxz/Pyz in " + error->all(FLERR,"Can not specify Pxy/Pxz/Pyz in " "fix nvt/npt/nph with non-triclinic box"); if (pcouple == XYZ && dimension == 3 && (p_start[0] != p_start[1] || p_start[0] != p_start[2] || p_stop[0] != p_stop[1] || p_stop[0] != p_stop[2] || p_period[0] != p_period[1] || p_period[0] != p_period[2])) - error->all("Invalid fix nvt/npt/nph pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == XYZ && dimension == 2 && (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || p_period[0] != p_period[1])) - error->all("Invalid fix nvt/npt/nph pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == XY && (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || p_period[0] != p_period[1])) - error->all("Invalid fix nvt/npt/nph pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == YZ && (p_start[1] != p_start[2] || p_stop[1] != p_stop[2] || p_period[1] != p_period[2])) - error->all("Invalid fix nvt/npt/nph pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == XZ && (p_start[0] != p_start[2] || p_stop[0] != p_stop[2] || p_period[0] != p_period[2])) - error->all("Invalid fix nvt/npt/nph pressure settings"); + error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if ((tstat_flag && t_period <= 0.0) || (p_flag[0] && p_period[0] <= 0.0) || @@ -377,7 +377,7 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) (p_flag[3] && p_period[3] <= 0.0) || (p_flag[4] && p_period[4] <= 0.0) || (p_flag[5] && p_period[5] <= 0.0)) - error->all("Fix nvt/npt/nph damping parameters must be > 0.0"); + error->all(FLERR,"Fix nvt/npt/nph damping parameters must be > 0.0"); // set pstat_flag and box change and restart_pbc variables @@ -541,7 +541,7 @@ void FixNH::init() if ((p_flag[0] && dimflag[0]) || (p_flag[1] && dimflag[1]) || (p_flag[2] && dimflag[2]) || (p_flag[3] && dimflag[3]) || (p_flag[4] && dimflag[4]) || (p_flag[5] && dimflag[5])) - error->all("Cannot use fix npt and fix deform on " + error->all(FLERR,"Cannot use fix npt and fix deform on " "same component of stress tensor"); } @@ -549,7 +549,7 @@ void FixNH::init() int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix nvt/nph/npt does not exist"); + error->all(FLERR,"Temperature ID for fix nvt/nph/npt does not exist"); temperature = modify->compute[icompute]; if (temperature->tempbias) which = BIAS; @@ -557,7 +557,7 @@ void FixNH::init() if (pstat_flag) { icompute = modify->find_compute(id_press); - if (icompute < 0) error->all("Pressure ID for fix npt/nph does not exist"); + if (icompute < 0) error->all(FLERR,"Pressure ID for fix npt/nph does not exist"); pressure = modify->compute[icompute]; } @@ -642,14 +642,14 @@ void FixNH::setup(int vflag) tdof = temperature->dof; // t_target is needed by NPH and NPT in compute_scalar() - // If no thermostat, + // If no thermostat or using fix nphug, // t_target must be defined by other means. - if (tstat_flag) { + if (tstat_flag && strcmp(style,"nphug") != 0) { compute_temp_target(); } else if (pstat_flag) { - // t0 = initial value for piston mass and energy conservation + // t0 = reference temperature for masses // cannot be done in init() b/c temperature cannot be called there // is b/c Modify::init() inits computes after fixes due to dof dependence // guesstimate a unit-dependent t0 if actual T = 0.0 @@ -675,7 +675,7 @@ void FixNH::setup(int vflag) pressure->addstep(update->ntimestep+1); } - // initial forces on thermostat variables + // masses and initial forces on thermostat variables if (tstat_flag) { eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq); @@ -687,6 +687,8 @@ void FixNH::setup(int vflag) } } + // masses and initial forces on barostat variables + if (pstat_flag) { double kt = boltz * t_target; double nkt = atom->natoms * kt; @@ -700,7 +702,7 @@ void FixNH::setup(int vflag) if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); } - // initial forces on barostat thermostat variables + // masses and initial forces on barostat thermostat variables if (mpchain) { etap_mass[0] = boltz * t_target / (p_freq_max*p_freq_max); @@ -729,9 +731,6 @@ void FixNH::initial_integrate(int vflag) if (tstat_flag) { compute_temp_target(); - eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq); - for (int ich = 1; ich < mtchain; ich++) - eta_mass[ich] = boltz * t_target / (t_freq*t_freq); nhc_temp_integrate(); } @@ -828,9 +827,6 @@ void FixNH::initial_integrate_respa(int vflag, int ilevel, int iloop) if (tstat_flag) { compute_temp_target(); - eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq); - for (int ich = 1; ich < mtchain; ich++) - eta_mass[ich] = boltz * t_target / (t_freq*t_freq); nhc_temp_integrate(); } @@ -1093,7 +1089,7 @@ void FixNH::remap() if (domain->yz < -TILTMAX*domain->yprd || domain->yz > TILTMAX*domain->yprd || domain->xz < -TILTMAX*domain->xprd || domain->xz > TILTMAX*domain->xprd || domain->xy < -TILTMAX*domain->xprd || domain->xy > TILTMAX*domain->xprd) - error->all("Fix npt/nph has tilted box too far in one step - " + error->all(FLERR,"Fix npt/nph has tilted box too far in one step - " "periodic cell is too far from equilibrium state"); domain->set_global_box(); @@ -1118,6 +1114,28 @@ void FixNH::remap() ------------------------------------------------------------------------- */ void FixNH::write_restart(FILE *fp) +{ + int nsize = size_restart_global(); + + double *list; + memory->create(list,nsize,"nh:list"); + + int n = pack_restart_data(list); + + if (comm->me == 0) { + int size = nsize * sizeof(double); + fwrite(&size,sizeof(int),1,fp); + fwrite(list,sizeof(double),nsize,fp); + } + + memory->destroy(list); +} + +/* ---------------------------------------------------------------------- + calculate the number of data to be packed +------------------------------------------------------------------------- */ + +int FixNH::size_restart_global() { int nsize = 2; if (tstat_flag) nsize += 1 + 2*mtchain; @@ -1126,9 +1144,15 @@ void FixNH::write_restart(FILE *fp) if (deviatoric_flag) nsize += 6; } - double *list; - memory->create(list,nsize,"nh:list"); + return nsize; +} +/* ---------------------------------------------------------------------- + pack restart data +------------------------------------------------------------------------- */ + +int FixNH::pack_restart_data(double *list) +{ int n = 0; list[n++] = tstat_flag; @@ -1175,13 +1199,7 @@ void FixNH::write_restart(FILE *fp) } } - if (comm->me == 0) { - int size = nsize * sizeof(double); - fwrite(&size,sizeof(int),1,fp); - fwrite(list,sizeof(double),nsize,fp); - } - - memory->destroy(list); + return n; } /* ---------------------------------------------------------------------- @@ -1242,7 +1260,7 @@ void FixNH::restart(char *buf) int FixNH::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -1253,28 +1271,28 @@ int FixNH::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(arg[1]); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != 0 && comm->me == 0) - error->warning("Temperature for fix modify is not for group all"); + error->warning(FLERR,"Temperature for fix modify is not for group all"); // reset id_temp of pressure to new temperature ID if (pstat_flag) { icompute = modify->find_compute(id_press); if (icompute < 0) - error->all("Pressure ID for fix modify does not exist"); + error->all(FLERR,"Pressure ID for fix modify does not exist"); modify->compute[icompute]->reset_extra_compute_fix(id_temp); } return 2; } else if (strcmp(arg[0],"press") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); - if (!pstat_flag) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); + if (!pstat_flag) error->all(FLERR,"Illegal fix_modify command"); if (pflag) { modify->delete_compute(id_press); pflag = 0; @@ -1285,11 +1303,11 @@ int FixNH::modify_param(int narg, char **arg) strcpy(id_press,arg[1]); int icompute = modify->find_compute(arg[1]); - if (icompute < 0) error->all("Could not find fix_modify pressure ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify pressure ID"); pressure = modify->compute[icompute]; if (pressure->pressflag == 0) - error->all("Fix_modify pressure ID does not compute pressure"); + error->all(FLERR,"Fix_modify pressure ID does not compute pressure"); return 2; } @@ -1552,19 +1570,10 @@ void FixNH::reset_dt() if (strstr(update->integrate_style,"respa")) dto = 0.5*step_respa[0]; - - p_freq_max = 0.0; - if (pstat_flag) { - p_freq_max = MAX(p_freq[0],p_freq[1]); - p_freq_max = MAX(p_freq_max,p_freq[2]); - if (pstyle == TRICLINIC) { - p_freq_max = MAX(p_freq_max,p_freq[3]); - p_freq_max = MAX(p_freq_max,p_freq[4]); - p_freq_max = MAX(p_freq_max,p_freq[5]); - } - pdrag_factor = 1.0 - (update->dt * p_freq_max * drag / nc_pchain); - } + if (pstat_flag) + pdrag_factor = 1.0 - (update->dt * p_freq_max * drag / nc_pchain); + if (tstat_flag) tdrag_factor = 1.0 - (update->dt * t_freq * drag / nc_tchain); } @@ -1577,8 +1586,16 @@ void FixNH::nhc_temp_integrate() { int ich; double expfac; - double kecurrent = tdof * boltz * t_current; + + // Update masses, to preserve initial freq, if flag set + + if (eta_mass_flag) { + eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq); + for (int ich = 1; ich < mtchain; ich++) + eta_mass[ich] = boltz * t_target / (t_freq*t_freq); + } + eta_dotdot[0] = (kecurrent - ke_target)/eta_mass[0]; double ncfac = 1.0/nc_tchain; @@ -1638,6 +1655,32 @@ void FixNH::nhc_press_integrate() double kt = boltz * t_target; double lkt_press = kt; + // Update masses, to preserve initial freq, if flag set + + if (omega_mass_flag) { + double nkt = atom->natoms * kt; + for (int i = 0; i < 3; i++) + if (p_flag[i]) + omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); + + if (pstyle == TRICLINIC) { + for (int i = 3; i < 6; i++) + if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); + } + } + + if (etap_mass_flag) { + if (mpchain) { + etap_mass[0] = boltz * t_target / (p_freq_max*p_freq_max); + for (int ich = 1; ich < mpchain; ich++) + etap_mass[ich] = boltz * t_target / (p_freq_max*p_freq_max); + for (int ich = 1; ich < mpchain; ich++) + etap_dotdot[ich] = + (etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] - + boltz * t_target) / etap_mass[ich]; + } + } + kecurrent = 0.0; for (i = 0; i < 3; i++) if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i]; diff --git a/src/fix_nh.h b/src/fix_nh.h index 1a2f44e6cf..9ed1cab142 100644 --- a/src/fix_nh.h +++ b/src/fix_nh.h @@ -31,9 +31,10 @@ class FixNH : public Fix { void final_integrate_respa(int, int); void pre_exchange(); double compute_scalar(); - double compute_vector(int); + virtual double compute_vector(int); void write_restart(FILE *); - void restart(char *); + virtual int pack_restart_data(double *); // pack restart data + virtual void restart(char *); int modify_param(int, char **); void reset_target(double); void reset_dt(); @@ -42,7 +43,9 @@ class FixNH : public Fix { int dimension,which; double dtv,dtf,dthalf,dt4,dt8,dto; double boltz,nktv2p,tdof; - double vol0,t0; + double vol0; // reference volume + double t0; // reference temperature + // used for barostat mass double t_start,t_stop; double t_current,t_target,ke_target; @@ -100,6 +103,10 @@ class FixNH : public Fix { double mtk_term1,mtk_term2; // Martyna-Tobias-Klein corrections + int eta_mass_flag; // 1 if eta_mass updated, 0 if not. + int omega_mass_flag; // 1 if omega_mass updated, 0 if not. + int etap_mass_flag; // 1 if etap_mass updated, 0 if not. + int scaleyz; // 1 if yz scaled with lz int scalexz; // 1 if xz scaled with lz int scalexy; // 1 if xy scaled with ly @@ -114,6 +121,7 @@ class FixNH : public Fix { virtual void nh_v_press(); virtual void nh_v_temp(); virtual void compute_temp_target(); + virtual int size_restart_global(); void compute_sigma(); void compute_deviatoric(); diff --git a/src/fix_nh_sphere.cpp b/src/fix_nh_sphere.cpp index ed414e511d..7bdbcee266 100644 --- a/src/fix_nh_sphere.cpp +++ b/src/fix_nh_sphere.cpp @@ -32,7 +32,7 @@ FixNHSphere::FixNHSphere(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { if (!atom->sphere_flag) - error->all("Fix nvt/nph/npt sphere requires atom style sphere"); + error->all(FLERR,"Fix nvt/nph/npt sphere requires atom style sphere"); } /* ---------------------------------------------------------------------- */ @@ -49,7 +49,7 @@ void FixNHSphere::init() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) if (radius[i] == 0.0) - error->one("Fix nvt/sphere requires extended particles"); + error->one(FLERR,"Fix nvt/sphere requires extended particles"); FixNH::init(); } diff --git a/src/fix_nph.cpp b/src/fix_nph.cpp index b863be12ab..e65da36589 100644 --- a/src/fix_nph.cpp +++ b/src/fix_nph.cpp @@ -24,9 +24,9 @@ FixNPH::FixNPH(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { if (tstat_flag) - error->all("Temperature control can not be used with fix nph"); + error->all(FLERR,"Temperature control can not be used with fix nph"); if (!pstat_flag) - error->all("Pressure control must be used with fix nph"); + error->all(FLERR,"Pressure control must be used with fix nph"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/fix_nph_sphere.cpp b/src/fix_nph_sphere.cpp index bc0e23a3b6..550dd8f5bc 100644 --- a/src/fix_nph_sphere.cpp +++ b/src/fix_nph_sphere.cpp @@ -24,9 +24,9 @@ FixNPHSphere::FixNPHSphere(LAMMPS *lmp, int narg, char **arg) : FixNHSphere(lmp, narg, arg) { if (tstat_flag) - error->all("Temperature control can not be used with fix nph/sphere"); + error->all(FLERR,"Temperature control can not be used with fix nph/sphere"); if (!pstat_flag) - error->all("Pressure control must be used with fix nph/sphere"); + error->all(FLERR,"Pressure control must be used with fix nph/sphere"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/fix_npt.cpp b/src/fix_npt.cpp index 3963e69ebb..84522560ac 100644 --- a/src/fix_npt.cpp +++ b/src/fix_npt.cpp @@ -24,9 +24,9 @@ FixNPT::FixNPT(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix npt"); + error->all(FLERR,"Temperature control must be used with fix npt"); if (!pstat_flag) - error->all("Pressure control must be used with fix npt"); + error->all(FLERR,"Pressure control must be used with fix npt"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/fix_npt_sphere.cpp b/src/fix_npt_sphere.cpp index 2e250fad8d..b58971f550 100644 --- a/src/fix_npt_sphere.cpp +++ b/src/fix_npt_sphere.cpp @@ -24,9 +24,9 @@ FixNPTSphere::FixNPTSphere(LAMMPS *lmp, int narg, char **arg) : FixNHSphere(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix npt/sphere"); + error->all(FLERR,"Temperature control must be used with fix npt/sphere"); if (!pstat_flag) - error->all("Pressure control must be used with fix npt/sphere"); + error->all(FLERR,"Pressure control must be used with fix npt/sphere"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/fix_nve.cpp b/src/fix_nve.cpp index bb500561ae..ce4e253069 100644 --- a/src/fix_nve.cpp +++ b/src/fix_nve.cpp @@ -28,7 +28,7 @@ FixNVE::FixNVE(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (strcmp(style,"nve/sphere") != 0 && narg < 3) - error->all("Illegal fix nve command"); + error->all(FLERR,"Illegal fix nve command"); time_integrate = 1; } diff --git a/src/fix_nve_limit.cpp b/src/fix_nve_limit.cpp index 2fed70c49e..a5e2b28946 100644 --- a/src/fix_nve_limit.cpp +++ b/src/fix_nve_limit.cpp @@ -29,7 +29,7 @@ using namespace LAMMPS_NS; FixNVELimit::FixNVELimit(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 4) error->all("Illegal fix nve/limit command"); + if (narg != 4) error->all(FLERR,"Illegal fix nve/limit command"); time_integrate = 1; scalar_flag = 1; diff --git a/src/fix_nve_noforce.cpp b/src/fix_nve_noforce.cpp index b0095ab180..b4d67be752 100644 --- a/src/fix_nve_noforce.cpp +++ b/src/fix_nve_noforce.cpp @@ -26,7 +26,7 @@ using namespace LAMMPS_NS; FixNVENoforce::FixNVENoforce(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 3) error->all("Illegal fix nve/noforce command"); + if (narg != 3) error->all(FLERR,"Illegal fix nve/noforce command"); time_integrate = 1; } diff --git a/src/fix_nve_noforce.h b/src/fix_nve_noforce.h index d56ecd96a1..90989869b8 100644 --- a/src/fix_nve_noforce.h +++ b/src/fix_nve_noforce.h @@ -28,12 +28,12 @@ class FixNVENoforce : public Fix { public: FixNVENoforce(class LAMMPS *, int, char **); int setmask(); - void init(); - void initial_integrate(int); + virtual void init(); + virtual void initial_integrate(int); void initial_integrate_respa(int, int, int); void reset_dt(); - private: + protected: double dtv; double *step_respa; }; diff --git a/src/fix_nve_sphere.cpp b/src/fix_nve_sphere.cpp index 935c9f0699..a00fa0bdf1 100644 --- a/src/fix_nve_sphere.cpp +++ b/src/fix_nve_sphere.cpp @@ -33,7 +33,7 @@ enum{NONE,DIPOLE}; FixNVESphere::FixNVESphere(LAMMPS *lmp, int narg, char **arg) : FixNVE(lmp, narg, arg) { - if (narg < 3) error->all("Illegal fix nve/sphere command"); + if (narg < 3) error->all(FLERR,"Illegal fix nve/sphere command"); time_integrate = 1; @@ -44,38 +44,28 @@ FixNVESphere::FixNVESphere(LAMMPS *lmp, int narg, char **arg) : int iarg = 3; while (iarg < narg) { if (strcmp(arg[iarg],"update") == 0) { - if (iarg+2 > narg) error->all("Illegal fix nve/sphere command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nve/sphere command"); if (strcmp(arg[iarg+1],"dipole") == 0) extra = DIPOLE; - else error->all("Illegal fix nve/sphere command"); + else error->all(FLERR,"Illegal fix nve/sphere command"); iarg += 2; - } else error->all("Illegal fix nve/sphere command"); + } else error->all(FLERR,"Illegal fix nve/sphere command"); } // error checks if (!atom->sphere_flag) - error->all("Fix nve/sphere requires atom style sphere"); + error->all(FLERR,"Fix nve/sphere requires atom style sphere"); if (extra == DIPOLE && !atom->mu_flag) - error->all("Fix nve/sphere requires atom attribute mu"); -} - -/* ---------------------------------------------------------------------- */ - -int FixNVESphere::setmask() -{ - int mask = 0; - mask |= INITIAL_INTEGRATE; - mask |= FINAL_INTEGRATE; - mask |= INITIAL_INTEGRATE_RESPA; - mask |= FINAL_INTEGRATE_RESPA; - return mask; + error->all(FLERR,"Fix nve/sphere requires atom attribute mu"); } /* ---------------------------------------------------------------------- */ void FixNVESphere::init() { - // check that all particles are finite-size + FixNVE::init(); + + // check that all particles are finite-size spheres // no point particles allowed double *radius = atom->radius; @@ -85,9 +75,7 @@ void FixNVESphere::init() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) if (radius[i] == 0.0) - error->one("Fix nve/sphere requires extended particles"); - - FixNVE::init(); + error->one(FLERR,"Fix nve/sphere requires extended particles"); } /* ---------------------------------------------------------------------- */ diff --git a/src/fix_nve_sphere.h b/src/fix_nve_sphere.h index 1582edc0e1..c3148c2c54 100644 --- a/src/fix_nve_sphere.h +++ b/src/fix_nve_sphere.h @@ -27,13 +27,12 @@ namespace LAMMPS_NS { class FixNVESphere : public FixNVE { public: FixNVESphere(class LAMMPS *, int, char **); - ~FixNVESphere() {} - int setmask(); + virtual ~FixNVESphere() {} void init(); - void initial_integrate(int); - void final_integrate(); + virtual void initial_integrate(int); + virtual void final_integrate(); - private: + protected: int extra; }; diff --git a/src/fix_nvt.cpp b/src/fix_nvt.cpp index 7817113b05..60478e6c41 100644 --- a/src/fix_nvt.cpp +++ b/src/fix_nvt.cpp @@ -25,9 +25,9 @@ FixNVT::FixNVT(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix nvt"); + error->all(FLERR,"Temperature control must be used with fix nvt"); if (pstat_flag) - error->all("Pressure control can not be used with fix nvt"); + error->all(FLERR,"Pressure control can not be used with fix nvt"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/fix_nvt_sllod.cpp b/src/fix_nvt_sllod.cpp index 576d064409..ab5c876ad3 100644 --- a/src/fix_nvt_sllod.cpp +++ b/src/fix_nvt_sllod.cpp @@ -38,9 +38,9 @@ FixNVTSllod::FixNVTSllod(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix nvt/sllod"); + error->all(FLERR,"Temperature control must be used with fix nvt/sllod"); if (pstat_flag) - error->all("Pressure control can not be used with fix nvt/sllod"); + error->all(FLERR,"Pressure control can not be used with fix nvt/sllod"); // default values @@ -72,7 +72,7 @@ void FixNVTSllod::init() FixNH::init(); if (!temperature->tempbias) - error->all("Temperature for fix nvt/sllod does not have a bias"); + error->all(FLERR,"Temperature for fix nvt/sllod does not have a bias"); nondeformbias = 0; if (strcmp(temperature->style,"temp/deform") != 0) nondeformbias = 1; @@ -83,12 +83,12 @@ void FixNVTSllod::init() for (i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"deform") == 0) { if (((FixDeform *) modify->fix[i])->remapflag != V_REMAP) - error->all("Using fix nvt/sllod with inconsistent fix deform " + error->all(FLERR,"Using fix nvt/sllod with inconsistent fix deform " "remap option"); break; } if (i == modify->nfix) - error->all("Using fix nvt/sllod with no fix deform defined"); + error->all(FLERR,"Using fix nvt/sllod with no fix deform defined"); } /* ---------------------------------------------------------------------- diff --git a/src/fix_nvt_sphere.cpp b/src/fix_nvt_sphere.cpp index 9873917c9f..84c4a6bbc6 100644 --- a/src/fix_nvt_sphere.cpp +++ b/src/fix_nvt_sphere.cpp @@ -25,9 +25,9 @@ FixNVTSphere::FixNVTSphere(LAMMPS *lmp, int narg, char **arg) : FixNHSphere(lmp, narg, arg) { if (!tstat_flag) - error->all("Temperature control must be used with fix nvt/sphere"); + error->all(FLERR,"Temperature control must be used with fix nvt/sphere"); if (pstat_flag) - error->all("Pressure control can not be used with fix nvt/sphere"); + error->all(FLERR,"Pressure control can not be used with fix nvt/sphere"); // create a new compute temp style // id = fix-ID + temp diff --git a/src/fix_orient_fcc.cpp b/src/fix_orient_fcc.cpp index 088c01785f..109373add7 100644 --- a/src/fix_orient_fcc.cpp +++ b/src/fix_orient_fcc.cpp @@ -28,16 +28,15 @@ #include "neigh_request.h" #include "comm.h" #include "output.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define BIG 1000000000 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixOrientFCC::FixOrientFCC(LAMMPS *lmp, int narg, char **arg) : @@ -45,7 +44,7 @@ FixOrientFCC::FixOrientFCC(LAMMPS *lmp, int narg, char **arg) : { MPI_Comm_rank(world,&me); - if (narg != 11) error->all("Illegal fix orient/fcc command"); + if (narg != 11) error->all(FLERR,"Illegal fix orient/fcc command"); scalar_flag = 1; global_freq = 1; @@ -76,11 +75,10 @@ FixOrientFCC::FixOrientFCC(LAMMPS *lmp, int narg, char **arg) : n = strlen(arg[10]) + 1; chifilename = new char[n]; strcpy(chifilename,arg[10]); - } else error->all("Illegal fix orient/fcc command"); + } else error->all(FLERR,"Illegal fix orient/fcc command"); // initializations - PI = 4.0*atan(1.0); half_fcc_nn = 6; use_xismooth = false; double xicutoff = 1.57; @@ -96,22 +94,22 @@ FixOrientFCC::FixOrientFCC(LAMMPS *lmp, int narg, char **arg) : int count; FILE *infile = fopen(xifilename,"r"); - if (infile == NULL) error->one("Fix orient/fcc file open failed"); + if (infile == NULL) error->one(FLERR,"Fix orient/fcc file open failed"); for (int i = 0; i < 6; i++) { result = fgets(line,512,infile); - if (!result) error->one("Fix orient/fcc file read failed"); + if (!result) error->one(FLERR,"Fix orient/fcc file read failed"); count = sscanf(line,"%lg %lg %lg",&Rxi[i][0],&Rxi[i][1],&Rxi[i][2]); - if (count != 3) error->one("Fix orient/fcc file read failed"); + if (count != 3) error->one(FLERR,"Fix orient/fcc file read failed"); } fclose(infile); infile = fopen(chifilename,"r"); - if (infile == NULL) error->one("Fix orient/fcc file open failed"); + if (infile == NULL) error->one(FLERR,"Fix orient/fcc file open failed"); for (int i = 0; i < 6; i++) { result = fgets(line,512,infile); - if (!result) error->one("Fix orient/fcc file read failed"); + if (!result) error->one(FLERR,"Fix orient/fcc file read failed"); count = sscanf(line,"%lg %lg %lg",&Rchi[i][0],&Rchi[i][1],&Rchi[i][2]); - if (count != 3) error->one("Fix orient/fcc file read failed"); + if (count != 3) error->one(FLERR,"Fix orient/fcc file read failed"); } fclose(infile); } @@ -347,10 +345,10 @@ void FixOrientFCC::post_force(int vflag) edelta = Vxi; order[i][1] = 1.0; } else { - omega = (0.5*PI)*(xi_total-xi0) / (xi1-xi0); - nbr[i].duxi = PI*Vxi*sin(2.0*omega) / (2.0*(xi1-xi0)); + omega = MY_PI2*(xi_total-xi0) / (xi1-xi0); + nbr[i].duxi = MY_PI*Vxi*sin(2.0*omega) / (2.0*(xi1-xi0)); edelta = Vxi*(1 - cos(2.0*omega)) / 2.0; - order[i][1] = omega / (0.5*PI); + order[i][1] = omega / MY_PI2; } added_energy += edelta; } @@ -396,7 +394,7 @@ void FixOrientFCC::post_force(int vflag) for (k = 0; k < nn; k++) { if (id_self == nbr[m].id[k]) { - if (found_myself) error->one("Fix orient/fcc found self twice"); + if (found_myself) error->one(FLERR,"Fix orient/fcc found self twice"); found_myself = true; duxi_other = nbr[m].duxi; dxiptr = &nbr[m].dxi[k][0]; diff --git a/src/fix_orient_fcc.h b/src/fix_orient_fcc.h index f401d30855..b83753619b 100644 --- a/src/fix_orient_fcc.h +++ b/src/fix_orient_fcc.h @@ -58,7 +58,6 @@ class FixOrientFCC : public Fix { private: int me; - double PI; int nlevels_respa; int direction_of_motion; // 1 = center shrinks, 0 = center grows diff --git a/src/fix_planeforce.cpp b/src/fix_planeforce.cpp index 0cf0ee2b92..5b7a0cfbec 100644 --- a/src/fix_planeforce.cpp +++ b/src/fix_planeforce.cpp @@ -27,13 +27,13 @@ using namespace LAMMPS_NS; FixPlaneForce::FixPlaneForce(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 6) error->all("Illegal fix planeforce command"); + if (narg != 6) error->all(FLERR,"Illegal fix planeforce command"); xdir = atof(arg[3]); ydir = atof(arg[4]); zdir = atof(arg[5]); double len = sqrt(xdir*xdir + ydir*ydir + zdir*zdir); - if (len == 0.0) error->all("Illegal fix planeforce command"); + if (len == 0.0) error->all(FLERR,"Illegal fix planeforce command"); xdir /= len; ydir /= len; diff --git a/src/fix_press_berendsen.cpp b/src/fix_press_berendsen.cpp index 2da7bde7b7..36abc158b2 100644 --- a/src/fix_press_berendsen.cpp +++ b/src/fix_press_berendsen.cpp @@ -29,9 +29,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - enum{NOBIAS,BIAS}; enum{NONE,XYZ,XY,YZ,XZ}; enum{ISO,ANISO}; @@ -41,7 +38,7 @@ enum{ISO,ANISO}; FixPressBerendsen::FixPressBerendsen(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 5) error->all("Illegal fix press/berendsen command"); + if (narg < 5) error->all(FLERR,"Illegal fix press/berendsen command"); box_change = 1; box_change_size = 1; @@ -70,7 +67,7 @@ FixPressBerendsen::FixPressBerendsen(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"iso") == 0) { - if (iarg+4 > narg) error->all("Illegal fix press/berendsen command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix press/berendsen command"); pcouple = XYZ; p_start[0] = p_start[1] = p_start[2] = atof(arg[iarg+1]); p_stop[0] = p_stop[1] = p_stop[2] = atof(arg[iarg+2]); @@ -82,7 +79,7 @@ FixPressBerendsen::FixPressBerendsen(LAMMPS *lmp, int narg, char **arg) : } iarg += 4; } else if (strcmp(arg[iarg],"aniso") == 0) { - if (iarg+4 > narg) error->all("Illegal fix press/berendsen command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix press/berendsen command"); pcouple = NONE; p_start[0] = p_start[1] = p_start[2] = atof(arg[iarg+1]); p_stop[0] = p_stop[1] = p_stop[2] = atof(arg[iarg+2]); @@ -95,52 +92,52 @@ FixPressBerendsen::FixPressBerendsen(LAMMPS *lmp, int narg, char **arg) : iarg += 4; } else if (strcmp(arg[iarg],"x") == 0) { - if (iarg+4 > narg) error->all("Illegal fix press/berendsen command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix press/berendsen command"); p_start[0] = atof(arg[iarg+1]); p_stop[0] = atof(arg[iarg+2]); p_period[0] = atof(arg[iarg+3]); p_flag[0] = 1; iarg += 4; } else if (strcmp(arg[iarg],"y") == 0) { - if (iarg+4 > narg) error->all("Illegal fix press/berendsen command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix press/berendsen command"); p_start[1] = atof(arg[iarg+1]); p_stop[1] = atof(arg[iarg+2]); p_period[1] = atof(arg[iarg+3]); p_flag[1] = 1; iarg += 4; } else if (strcmp(arg[iarg],"z") == 0) { - if (iarg+4 > narg) error->all("Illegal fix press/berendsen command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix press/berendsen command"); p_start[2] = atof(arg[iarg+1]); p_stop[2] = atof(arg[iarg+2]); p_period[2] = atof(arg[iarg+3]); p_flag[2] = 1; iarg += 4; if (dimension == 2) - error->all("Invalid fix press/berendsen for a 2d simulation"); + error->all(FLERR,"Invalid fix press/berendsen for a 2d simulation"); } else if (strcmp(arg[iarg],"couple") == 0) { - if (iarg+2 > narg) error->all("Illegal fix press/berendsen command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix press/berendsen command"); if (strcmp(arg[iarg+1],"xyz") == 0) pcouple = XYZ; else if (strcmp(arg[iarg+1],"xy") == 0) pcouple = XY; else if (strcmp(arg[iarg+1],"yz") == 0) pcouple = YZ; else if (strcmp(arg[iarg+1],"xz") == 0) pcouple = XZ; else if (strcmp(arg[iarg+1],"none") == 0) pcouple = NONE; - else error->all("Illegal fix press/berendsen command"); + else error->all(FLERR,"Illegal fix press/berendsen command"); iarg += 2; } else if (strcmp(arg[iarg],"modulus") == 0) { - if (iarg+2 > narg) error->all("Illegal fix press/berendsen command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix press/berendsen command"); bulkmodulus = atof(arg[iarg+1]); if (bulkmodulus <= 0.0) - error->all("Illegal fix press/berendsen command"); + error->all(FLERR,"Illegal fix press/berendsen command"); iarg += 2; } else if (strcmp(arg[iarg],"dilate") == 0) { - if (iarg+2 > narg) error->all("Illegal fix press/berendsen command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix press/berendsen command"); if (strcmp(arg[iarg+1],"all") == 0) allremap = 1; else if (strcmp(arg[iarg+1],"partial") == 0) allremap = 0; - else error->all("Illegal fix press/berendsen command"); + else error->all(FLERR,"Illegal fix press/berendsen command"); iarg += 2; - } else error->all("Illegal fix press/berendsen command"); + } else error->all(FLERR,"Illegal fix press/berendsen command"); } if (allremap == 0) restart_pbc = 1; @@ -148,54 +145,54 @@ FixPressBerendsen::FixPressBerendsen(LAMMPS *lmp, int narg, char **arg) : // error checks if (dimension == 2 && p_flag[2]) - error->all("Invalid fix press/berendsen for a 2d simulation"); + error->all(FLERR,"Invalid fix press/berendsen for a 2d simulation"); if (dimension == 2 && (pcouple == YZ || pcouple == XZ)) - error->all("Invalid fix press/berendsen for a 2d simulation"); + error->all(FLERR,"Invalid fix press/berendsen for a 2d simulation"); if (pcouple == XYZ && (p_flag[0] == 0 || p_flag[1] == 0)) - error->all("Invalid fix press/berendsen pressure settings"); + error->all(FLERR,"Invalid fix press/berendsen pressure settings"); if (pcouple == XYZ && dimension == 3 && p_flag[2] == 0) - error->all("Invalid fix press/berendsen pressure settings"); + error->all(FLERR,"Invalid fix press/berendsen pressure settings"); if (pcouple == XY && (p_flag[0] == 0 || p_flag[1] == 0)) - error->all("Invalid fix press/berendsen pressure settings"); + error->all(FLERR,"Invalid fix press/berendsen pressure settings"); if (pcouple == YZ && (p_flag[1] == 0 || p_flag[2] == 0)) - error->all("Invalid fix press/berendsen pressure settings"); + error->all(FLERR,"Invalid fix press/berendsen pressure settings"); if (pcouple == XZ && (p_flag[0] == 0 || p_flag[2] == 0)) - error->all("Invalid fix press/berendsen pressure settings"); + error->all(FLERR,"Invalid fix press/berendsen pressure settings"); if (p_flag[0] && domain->xperiodic == 0) - error->all("Cannot use fix press/berendsen on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix press/berendsen on a non-periodic dimension"); if (p_flag[1] && domain->yperiodic == 0) - error->all("Cannot use fix press/berendsen on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix press/berendsen on a non-periodic dimension"); if (p_flag[2] && domain->zperiodic == 0) - error->all("Cannot use fix press/berendsen on a non-periodic dimension"); + error->all(FLERR,"Cannot use fix press/berendsen on a non-periodic dimension"); if (pcouple == XYZ && dimension == 3 && (p_start[0] != p_start[1] || p_start[0] != p_start[2] || p_stop[0] != p_stop[1] || p_stop[0] != p_stop[2] || p_period[0] != p_period[1] || p_period[0] != p_period[2])) - error->all("Invalid fix press/berendsen pressure settings"); + error->all(FLERR,"Invalid fix press/berendsen pressure settings"); if (pcouple == XYZ && dimension == 2 && (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || p_period[0] != p_period[1])) - error->all("Invalid fix press/berendsen pressure settings"); + error->all(FLERR,"Invalid fix press/berendsen pressure settings"); if (pcouple == XY && (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || p_period[0] != p_period[1])) - error->all("Invalid fix press/berendsen pressure settings"); + error->all(FLERR,"Invalid fix press/berendsen pressure settings"); if (pcouple == YZ && (p_start[1] != p_start[2] || p_stop[1] != p_stop[2] || p_period[1] != p_period[2])) - error->all("Invalid fix press/berendsen pressure settings"); + error->all(FLERR,"Invalid fix press/berendsen pressure settings"); if (pcouple == XZ && (p_start[0] != p_start[2] || p_stop[0] != p_stop[2] || p_period[0] != p_period[2])) - error->all("Invalid fix press/berendsen pressure settings"); + error->all(FLERR,"Invalid fix press/berendsen pressure settings"); if ((p_flag[0] && p_period[0] <= 0.0) || (p_flag[1] && p_period[1] <= 0.0) || (p_flag[2] && p_period[2] <= 0.0)) - error->all("Fix press/berendsen damping parameters must be > 0.0"); + error->all(FLERR,"Fix press/berendsen damping parameters must be > 0.0"); // pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof // else pstyle = ANISO -> 3 dof @@ -271,7 +268,7 @@ int FixPressBerendsen::setmask() void FixPressBerendsen::init() { if (domain->triclinic) - error->all("Cannot use fix press/berendsen with triclinic box"); + error->all(FLERR,"Cannot use fix press/berendsen with triclinic box"); // insure no conflict with fix deform @@ -280,7 +277,7 @@ void FixPressBerendsen::init() int *dimflag = ((FixDeform *) modify->fix[i])->dimflag; if ((p_flag[0] && dimflag[0]) || (p_flag[1] && dimflag[1]) || (p_flag[2] && dimflag[2])) - error->all("Cannot use fix press/berendsen and " + error->all(FLERR,"Cannot use fix press/berendsen and " "fix deform on same component of stress tensor"); } @@ -288,7 +285,7 @@ void FixPressBerendsen::init() int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix press/berendsen does not exist"); + error->all(FLERR,"Temperature ID for fix press/berendsen does not exist"); temperature = modify->compute[icompute]; if (temperature->tempbias) which = BIAS; @@ -296,7 +293,7 @@ void FixPressBerendsen::init() icompute = modify->find_compute(id_press); if (icompute < 0) - error->all("Pressure ID for fix press/berendsen does not exist"); + error->all(FLERR,"Pressure ID for fix press/berendsen does not exist"); pressure = modify->compute[icompute]; // Kspace setting @@ -462,7 +459,7 @@ void FixPressBerendsen::remap() int FixPressBerendsen::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -473,25 +470,25 @@ int FixPressBerendsen::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(arg[1]); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != 0 && comm->me == 0) - error->warning("Temperature for NPT is not for group all"); + error->warning(FLERR,"Temperature for NPT is not for group all"); // reset id_temp of pressure to new temperature ID icompute = modify->find_compute(id_press); if (icompute < 0) - error->all("Pressure ID for fix press/berendsen does not exist"); + error->all(FLERR,"Pressure ID for fix press/berendsen does not exist"); modify->compute[icompute]->reset_extra_compute_fix(id_temp); return 2; } else if (strcmp(arg[0],"press") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (pflag) { modify->delete_compute(id_press); pflag = 0; @@ -502,11 +499,11 @@ int FixPressBerendsen::modify_param(int narg, char **arg) strcpy(id_press,arg[1]); int icompute = modify->find_compute(arg[1]); - if (icompute < 0) error->all("Could not find fix_modify pressure ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify pressure ID"); pressure = modify->compute[icompute]; if (pressure->pressflag == 0) - error->all("Fix_modify pressure ID does not compute pressure"); + error->all(FLERR,"Fix_modify pressure ID does not compute pressure"); return 2; } return 0; diff --git a/src/fix_print.cpp b/src/fix_print.cpp index 682c7b1b51..c38945a8c0 100644 --- a/src/fix_print.cpp +++ b/src/fix_print.cpp @@ -29,9 +29,9 @@ using namespace LAMMPS_NS; FixPrint::FixPrint(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 5) error->all("Illegal fix print command"); + if (narg < 5) error->all(FLERR,"Illegal fix print command"); nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix print command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix print command"); MPI_Comm_rank(world,&me); @@ -48,31 +48,31 @@ FixPrint::FixPrint(LAMMPS *lmp, int narg, char **arg) : int iarg = 5; while (iarg < narg) { if (strcmp(arg[iarg],"file") == 0 || strcmp(arg[iarg],"append") == 0) { - if (iarg+2 > narg) error->all("Illegal fix print command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix print command"); if (me == 0) { if (strcmp(arg[iarg],"file") == 0) fp = fopen(arg[iarg+1],"w"); else fp = fopen(arg[iarg+1],"a"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix print file %s",arg[iarg+1]); - error->one(str); + error->one(FLERR,str); } } iarg += 2; } else if (strcmp(arg[iarg],"screen") == 0) { - if (iarg+2 > narg) error->all("Illegal fix print command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix print command"); if (strcmp(arg[iarg+1],"yes") == 0) screenflag = 1; else if (strcmp(arg[iarg+1],"no") == 0) screenflag = 0; - else error->all("Illegal fix print command"); + else error->all(FLERR,"Illegal fix print command"); iarg += 2; } else if (strcmp(arg[iarg],"title") == 0) { - if (iarg+2 > narg) error->all("Illegal fix print command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix print command"); delete [] title; int n = strlen(arg[iarg+1]) + 1; title = new char[n]; strcpy(title,arg[iarg+1]); iarg += 2; - } else error->all("Illegal fix print command"); + } else error->all(FLERR,"Illegal fix print command"); } // print file comment line diff --git a/src/fix_recenter.cpp b/src/fix_recenter.cpp index cd2b311c9a..ac752b99c3 100644 --- a/src/fix_recenter.cpp +++ b/src/fix_recenter.cpp @@ -35,7 +35,7 @@ enum{BOX,LATTICE,FRACTION}; FixRecenter::FixRecenter(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 6) error->all("Illegal fix recenter command"); + if (narg < 6) error->all(FLERR,"Illegal fix recenter command"); xcom = ycom = zcom = 0.0; xflag = yflag = zflag = 1; @@ -60,22 +60,22 @@ FixRecenter::FixRecenter(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"shift") == 0) { int igroup2 = group->find(arg[iarg+1]); - if (igroup2 < 0) error->all("Could not find fix recenter group ID"); + if (igroup2 < 0) error->all(FLERR,"Could not find fix recenter group ID"); group2bit = group->bitmask[igroup2]; iarg += 2; } else if (strcmp(arg[iarg],"units") == 0) { if (strcmp(arg[iarg+1],"box") == 0) scaleflag = BOX; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = LATTICE; else if (strcmp(arg[iarg+1],"fraction") == 0) scaleflag = FRACTION; - else error->all("Illegal fix recenter command"); + else error->all(FLERR,"Illegal fix recenter command"); iarg += 2; - } else error->all("Illegal fix recenter command"); + } else error->all(FLERR,"Illegal fix recenter command"); } // scale xcom,ycom,zcom if (scaleflag == LATTICE && domain->lattice == NULL) - error->all("Use of fix recenter with undefined lattice"); + error->all(FLERR,"Use of fix recenter with undefined lattice"); double xscale,yscale,zscale; if (scaleflag == LATTICE) { @@ -92,7 +92,7 @@ FixRecenter::FixRecenter(LAMMPS *lmp, int narg, char **arg) : // cannot have 0 atoms in group if (group->count(igroup) == 0) - error->all("Fix recenter group has no atoms"); + error->all(FLERR,"Fix recenter group has no atoms"); } /* ---------------------------------------------------------------------- */ @@ -117,7 +117,7 @@ void FixRecenter::init() else if ((modify->fmask[i] & INITIAL_INTEGRATE) && after) flag = 1; } if (flag && comm->me == 0) - error->warning("Fix recenter should come after all other integration fixes"); + error->warning(FLERR,"Fix recenter should come after all other integration fixes"); masstotal = group->mass(igroup); diff --git a/src/fix_restrain.cpp b/src/fix_restrain.cpp new file mode 100644 index 0000000000..f3048cc18d --- /dev/null +++ b/src/fix_restrain.cpp @@ -0,0 +1,402 @@ +/* ---------------------------------------------------------------------- + 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: Craig Tenney (University of Notre Dame) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "string.h" +#include "stdlib.h" +#include "fix_restrain.h" +#include "atom.h" +#include "force.h" +#include "update.h" +#include "domain.h" +#include "comm.h" +#include "respa.h" +#include "input.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +enum{DIHEDRAL}; + +#define TOLERANCE 0.05 + +/* ---------------------------------------------------------------------- */ + +FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + int iarg = 6; + if (narg < iarg) error->all(FLERR,"Illegal fix restrain command"); + + scalar_flag = 1; + global_freq = 1; + extscalar = 1; + time_depend = 1; + + // parse standard arguments + + int n_atoms; + k_start = force->numeric(arg[3]); + k_stop = force->numeric(arg[4]); + if (strcmp(arg[5], "dihedral") == 0) { + rstyle = DIHEDRAL; + n_atoms = 4; + } else error->all(FLERR,"Illegal fix restrain command"); + + n_bonds = (narg - iarg) / (n_atoms + 1); + if (narg != iarg + n_bonds * (n_atoms + 1)) + error->all(FLERR,"Illegal fix restrain command"); + + // allocate arrays + + memory->create(atom_id,n_bonds,n_atoms,"restrain:atom_id"); + memory->create(target,n_bonds,"restrain:taret"); + + // grab atom_ids and restraint target values + + int ibond = 0; + while (iarg < narg) { + for (int i = 0; i < n_atoms; i++) { + atom_id[ibond][i] = force->inumeric(arg[iarg]); + iarg++; + } + target[ibond] = force->numeric(arg[iarg]); + iarg++; + ibond++; + } + + // special treatment for dihedral restraints + + if (rstyle == DIHEDRAL) { + cos_shift = (double *) + memory->smalloc(n_bonds * sizeof(double), "restrain:cos_shift"); + sin_shift = (double *) + memory->smalloc(n_bonds * sizeof(double), "restrain:sin_shift"); + for (ibond = 0; ibond < n_bonds; ibond++) { + double my_arg = MY_PI * (180.0 + target[ibond]) / 180.0; + cos_shift[ibond] = cos(my_arg); + sin_shift[ibond] = sin(my_arg); + } + } + + // require atom map to lookup atom IDs + + if (atom->map_style == 0) + error->all(FLERR,"Fix restrain requires an atom map, see atom_modify"); +} + +/* ---------------------------------------------------------------------- */ + +FixRestrain::~FixRestrain() +{ + memory->destroy(atom_id); + memory->destroy(target); + + if (rstyle == DIHEDRAL) { + memory->sfree(cos_shift); + memory->sfree(sin_shift); + } +} + +/* ---------------------------------------------------------------------- */ + +int FixRestrain::setmask() +{ + int mask = 0; + mask |= POST_FORCE; + mask |= THERMO_ENERGY; + mask |= POST_FORCE_RESPA; + mask |= MIN_POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixRestrain::init() +{ + if (strcmp(update->integrate_style,"respa") == 0) + nlevels_respa = ((Respa *) update->integrate)->nlevels; +} + +/* ---------------------------------------------------------------------- */ + +void FixRestrain::setup(int vflag) +{ + if (strcmp(update->integrate_style,"verlet") == 0) + post_force(vflag); + else { + ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); + post_force_respa(vflag,nlevels_respa-1,0); + ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixRestrain::min_setup(int vflag) +{ + post_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +void FixRestrain::post_force(int vflag) +{ + energy = 0.0; + if (rstyle == DIHEDRAL) restrain_dihedral(); +} + +/* ---------------------------------------------------------------------- */ + +void FixRestrain::post_force_respa(int vflag, int ilevel, int iloop) +{ + if (ilevel == nlevels_respa-1) post_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +void FixRestrain::min_post_force(int vflag) +{ + post_force(vflag); +} + +/* ---------------------------------------------------------------------- + apply dihedral restraints + adopted from dihedral_charmm +---------------------------------------------------------------------- */ + +void FixRestrain::restrain_dihedral() +{ + int i1,i2,i3,i4,i,m,n; + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double f1[3],f2[3],f3[3],f4[3]; + double ax,ay,az,bx,by,bz,rasq,rbsq,rgsq,rg,rginv,ra2inv,rb2inv,rabinv; + double df,df1,ddf1,fg,hg,fga,hgb,gaa,gbb; + double dtfx,dtfy,dtfz,dtgx,dtgy,dtgz,dthx,dthy,dthz; + double c,s,p,sx2,sy2,sz2; + + double **x = atom->x; + double **f = atom->f; + int nlocal = atom->nlocal; + int newton_bond = force->newton_bond; + + double delta = update->ntimestep - update->beginstep; + delta /= update->endstep - update->beginstep; + + double k_step = k_start + delta * (k_stop - k_start); + + for (n = 0; n < n_bonds; n++) { + i1 = atom->map(atom_id[n][0]); + i2 = atom->map(atom_id[n][1]); + i3 = atom->map(atom_id[n][2]); + i4 = atom->map(atom_id[n][3]); + + // insure exactly one processor computes restraint + + if (newton_bond) { + if (i2 == -1 || i2 >= nlocal) continue; + if (i1 == -1 || i3 == -1 || i4 == -1) { + char str[128]; + sprintf(str, + "Restrain atoms %d %d %d %d missing on proc %d at step " + BIGINT_FORMAT, + atom_id[n][0],atom_id[n][1],atom_id[n][2],atom_id[n][3], + comm->me,update->ntimestep); + error->one(FLERR,str); + } + } else { + if ((i1 == -1 || i1 >= nlocal) && (i2 == -1 || i2 >= nlocal) && + (i3 == -1 || i3 >= nlocal) && (i4 == -1 || i3 >= nlocal)) continue; + if (i1 == -1 || i2 == -1 || i3 == -1 || i4 == -1) { + char str[128]; + sprintf(str, + "Restrain atoms %d %d %d %d missing on proc %d at step " + BIGINT_FORMAT, + atom_id[n][0],atom_id[n][1],atom_id[n][2],atom_id[n][3], + comm->me,update->ntimestep); + error->one(FLERR,str); + } + } + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + domain->minimum_image(vb1x,vb1y,vb1z); + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + domain->minimum_image(vb2x,vb2y,vb2z); + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + domain->minimum_image(vb2xm,vb2ym,vb2zm); + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + domain->minimum_image(vb3x,vb3y,vb3z); + + ax = vb1y*vb2zm - vb1z*vb2ym; + ay = vb1z*vb2xm - vb1x*vb2zm; + az = vb1x*vb2ym - vb1y*vb2xm; + bx = vb3y*vb2zm - vb3z*vb2ym; + by = vb3z*vb2xm - vb3x*vb2zm; + bz = vb3x*vb2ym - vb3y*vb2xm; + + rasq = ax*ax + ay*ay + az*az; + rbsq = bx*bx + by*by + bz*bz; + rgsq = vb2xm*vb2xm + vb2ym*vb2ym + vb2zm*vb2zm; + rg = sqrt(rgsq); + + rginv = ra2inv = rb2inv = 0.0; + if (rg > 0) rginv = 1.0/rg; + if (rasq > 0) ra2inv = 1.0/rasq; + if (rbsq > 0) rb2inv = 1.0/rbsq; + rabinv = sqrt(ra2inv*rb2inv); + + c = (ax*bx + ay*by + az*bz)*rabinv; + s = rg*rabinv*(ax*vb3x + ay*vb3y + az*vb3z); + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) { + int me; + MPI_Comm_rank(world,&me); + if (screen) { + char str[128]; + sprintf(str,"Restrain problem: %d " BIGINT_FORMAT " %d %d %d %d", + me,update->ntimestep, + atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); + error->warning(FLERR,str); + fprintf(screen," 1st atom: %d %g %g %g\n", + me,x[i1][0],x[i1][1],x[i1][2]); + fprintf(screen," 2nd atom: %d %g %g %g\n", + me,x[i2][0],x[i2][1],x[i2][2]); + fprintf(screen," 3rd atom: %d %g %g %g\n", + me,x[i3][0],x[i3][1],x[i3][2]); + fprintf(screen," 4th atom: %d %g %g %g\n", + me,x[i4][0],x[i4][1],x[i4][2]); + } + } + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + m = 1; //multiplicity + p = 1.0; + df1 = 0.0; + + for (i = 0; i < m; i++) { + ddf1 = p*c - df1*s; + df1 = p*s + df1*c; + p = ddf1; + } + + p = p*cos_shift[n] + df1*sin_shift[n]; + df1 = df1*cos_shift[n] - ddf1*sin_shift[n]; + df1 *= -m; + p += 1.0; + + energy = k_step * p; + + fg = vb1x*vb2xm + vb1y*vb2ym + vb1z*vb2zm; + hg = vb3x*vb2xm + vb3y*vb2ym + vb3z*vb2zm; + fga = fg*ra2inv*rginv; + hgb = hg*rb2inv*rginv; + gaa = -ra2inv*rg; + gbb = rb2inv*rg; + + dtfx = gaa*ax; + dtfy = gaa*ay; + dtfz = gaa*az; + dtgx = fga*ax - hgb*bx; + dtgy = fga*ay - hgb*by; + dtgz = fga*az - hgb*bz; + dthx = gbb*bx; + dthy = gbb*by; + dthz = gbb*bz; + + df = -k_step * df1; + + sx2 = df*dtgx; + sy2 = df*dtgy; + sz2 = df*dtgz; + + f1[0] = df*dtfx; + f1[1] = df*dtfy; + f1[2] = df*dtfz; + + f2[0] = sx2 - f1[0]; + f2[1] = sy2 - f1[1]; + f2[2] = sz2 - f1[2]; + + f4[0] = df*dthx; + f4[1] = df*dthy; + f4[2] = df*dthz; + + f3[0] = -sx2 - f4[0]; + f3[1] = -sy2 - f4[1]; + f3[2] = -sz2 - f4[2]; + + // apply force to each of 4 atoms + + if (newton_bond || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (newton_bond || i2 < nlocal) { + f[i2][0] += f2[0]; + f[i2][1] += f2[1]; + f[i2][2] += f2[2]; + } + + if (newton_bond || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (newton_bond || i4 < nlocal) { + f[i4][0] += f4[0]; + f[i4][1] += f4[1]; + f[i4][2] += f4[2]; + } + } +} + +/* ---------------------------------------------------------------------- + potential energy of added force +------------------------------------------------------------------------- */ + +double FixRestrain::compute_scalar() +{ + MPI_Allreduce(&energy,&energy_all,1,MPI_DOUBLE,MPI_SUM,world); + return energy_all; +} diff --git a/src/fix_restrain.h b/src/fix_restrain.h new file mode 100644 index 0000000000..c540459092 --- /dev/null +++ b/src/fix_restrain.h @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------- + 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(restrain,FixRestrain) + +#else + +#ifndef LMP_FIX_RESTRAIN_H +#define LMP_FIX_RESTRAIN_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixRestrain : public Fix { + public: + FixRestrain(class LAMMPS *, int, char **); + ~FixRestrain(); + int setmask(); + void init(); + void setup(int); + void min_setup(int); + void post_force(int); + void post_force_respa(int, int, int); + void min_post_force(int); + double compute_scalar(); + + private: + int nlevels_respa; + int n_bonds, rstyle; + double k_start, k_stop, energy, energy_all; + int **atom_id; + double *target, *cos_shift, *sin_shift; + + void restrain_dihedral(); +}; + +} + +#endif +#endif diff --git a/src/fix_rigid.cpp b/src/fix_rigid.cpp index 85e29292d7..63df87b782 100644 --- a/src/fix_rigid.cpp +++ b/src/fix_rigid.cpp @@ -19,6 +19,8 @@ #include "math_extra.h" #include "atom.h" #include "atom_vec_ellipsoid.h" +#include "atom_vec_line.h" +#include "atom_vec_tri.h" #include "domain.h" #include "update.h" #include "respa.h" @@ -28,16 +30,19 @@ #include "random_mars.h" #include "force.h" #include "output.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define TOLERANCE 1.0e-6 #define EPSILON 1.0e-7 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) +#define SINERTIA 0.4 // moment of inertia prefactor for sphere +#define EINERTIA 0.4 // moment of inertia prefactor for ellipsoid +#define LINERTIA (1.0/12.0) // moment of inertia prefactor for line segment /* ---------------------------------------------------------------------- */ @@ -59,19 +64,19 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : // perform initial allocation of atom-based arrays // register with Atom class - extended = dorientflag = qorientflag = 0; + extended = orientflag = dorientflag = 0; body = NULL; displace = NULL; eflags = NULL; + orient = NULL; dorient = NULL; - qorient = NULL; grow_arrays(atom->nmax); atom->add_callback(0); // parse args for rigid body specification // set nbody and body[i] for each atom - if (narg < 4) error->all("Illegal fix rigid command"); + if (narg < 4) error->all(FLERR,"Illegal fix rigid command"); int iarg; // single rigid body @@ -99,7 +104,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : } else if (strcmp(arg[3],"molecule") == 0) { iarg = 4; if (atom->molecule_flag == 0) - error->all("Fix rigid molecule requires atom attribute molecule"); + error->all(FLERR,"Fix rigid molecule requires atom attribute molecule"); int *mask = atom->mask; int *molecule = atom->molecule; @@ -141,17 +146,17 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : // error if atom belongs to more than 1 rigid body } else if (strcmp(arg[3],"group") == 0) { - if (narg < 5) error->all("Illegal fix rigid command"); + if (narg < 5) error->all(FLERR,"Illegal fix rigid command"); nbody = atoi(arg[4]); - if (nbody <= 0) error->all("Illegal fix rigid command"); - if (narg < 5+nbody) error->all("Illegal fix rigid command"); + if (nbody <= 0) error->all(FLERR,"Illegal fix rigid command"); + if (narg < 5+nbody) error->all(FLERR,"Illegal fix rigid command"); iarg = 5+nbody; int *igroups = new int[nbody]; for (ibody = 0; ibody < nbody; ibody++) { igroups[ibody] = group->find(arg[5+ibody]); if (igroups[ibody] == -1) - error->all("Could not find fix rigid group ID"); + error->all(FLERR,"Could not find fix rigid group ID"); } int *mask = atom->mask; @@ -171,15 +176,15 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); if (flagall) - error->all("One or more atoms belong to multiple rigid bodies"); + error->all(FLERR,"One or more atoms belong to multiple rigid bodies"); delete [] igroups; - } else error->all("Illegal fix rigid command"); + } else error->all(FLERR,"Illegal fix rigid command"); // error check on nbody - if (nbody == 0) error->all("No rigid bodies defined"); + if (nbody == 0) error->all(FLERR,"No rigid bodies defined"); // create all nbody-length arrays @@ -233,7 +238,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"force") == 0) { - if (iarg+5 > narg) error->all("Illegal fix rigid command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal fix rigid command"); int mlo,mhi; force->bounds(arg[iarg+1],nbody,mlo,mhi); @@ -241,16 +246,16 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : double xflag,yflag,zflag; if (strcmp(arg[iarg+2],"off") == 0) xflag = 0.0; else if (strcmp(arg[iarg+2],"on") == 0) xflag = 1.0; - else error->all("Illegal fix rigid command"); + else error->all(FLERR,"Illegal fix rigid command"); if (strcmp(arg[iarg+3],"off") == 0) yflag = 0.0; else if (strcmp(arg[iarg+3],"on") == 0) yflag = 1.0; - else error->all("Illegal fix rigid command"); + else error->all(FLERR,"Illegal fix rigid command"); if (strcmp(arg[iarg+4],"off") == 0) zflag = 0.0; else if (strcmp(arg[iarg+4],"on") == 0) zflag = 1.0; - else error->all("Illegal fix rigid command"); + else error->all(FLERR,"Illegal fix rigid command"); if (domain->dimension == 2 && zflag == 1.0) - error->all("Fix rigid z force cannot be on for 2d simulation"); + error->all(FLERR,"Fix rigid z force cannot be on for 2d simulation"); int count = 0; for (int m = mlo; m <= mhi; m++) { @@ -259,12 +264,12 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : fflag[m-1][2] = zflag; count++; } - if (count == 0) error->all("Illegal fix rigid command"); + if (count == 0) error->all(FLERR,"Illegal fix rigid command"); iarg += 5; } else if (strcmp(arg[iarg],"torque") == 0) { - if (iarg+5 > narg) error->all("Illegal fix rigid command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal fix rigid command"); int mlo,mhi; force->bounds(arg[iarg+1],nbody,mlo,mhi); @@ -272,16 +277,16 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : double xflag,yflag,zflag; if (strcmp(arg[iarg+2],"off") == 0) xflag = 0.0; else if (strcmp(arg[iarg+2],"on") == 0) xflag = 1.0; - else error->all("Illegal fix rigid command"); + else error->all(FLERR,"Illegal fix rigid command"); if (strcmp(arg[iarg+3],"off") == 0) yflag = 0.0; else if (strcmp(arg[iarg+3],"on") == 0) yflag = 1.0; - else error->all("Illegal fix rigid command"); + else error->all(FLERR,"Illegal fix rigid command"); if (strcmp(arg[iarg+4],"off") == 0) zflag = 0.0; else if (strcmp(arg[iarg+4],"on") == 0) zflag = 1.0; - else error->all("Illegal fix rigid command"); + else error->all(FLERR,"Illegal fix rigid command"); if (domain->dimension == 2 && (xflag == 1.0 || yflag == 1.0)) - error->all("Fix rigid xy torque cannot be on for 2d simulation"); + error->all(FLERR,"Fix rigid xy torque cannot be on for 2d simulation"); int count = 0; for (int m = mlo; m <= mhi; m++) { @@ -290,28 +295,28 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : tflag[m-1][2] = zflag; count++; } - if (count == 0) error->all("Illegal fix rigid command"); + if (count == 0) error->all(FLERR,"Illegal fix rigid command"); iarg += 5; } else if (strcmp(arg[iarg],"langevin") == 0) { - if (iarg+5 > narg) error->all("Illegal fix rigid command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal fix rigid command"); if (strcmp(style,"rigid") != 0 && strcmp(style,"rigid/nve") != 0) - error->all("Illegal fix rigid command"); + error->all(FLERR,"Illegal fix rigid command"); langflag = 1; t_start = atof(arg[iarg+1]); t_stop = atof(arg[iarg+2]); t_period = atof(arg[iarg+3]); seed = atoi(arg[iarg+4]); if (t_period <= 0.0) - error->all("Fix rigid langevin period must be > 0.0"); - if (seed <= 0) error->all("Illegal fix rigid command"); + error->all(FLERR,"Fix rigid langevin period must be > 0.0"); + if (seed <= 0) error->all(FLERR,"Illegal fix rigid command"); iarg += 5; } else if (strcmp(arg[iarg],"temp") == 0) { - if (iarg+4 > narg) error->all("Illegal fix rigid command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid command"); if (strcmp(style,"rigid/nvt") != 0 && strcmp(style,"rigid/npt") != 0) - error->all("Illegal fix rigid command"); + error->all(FLERR,"Illegal fix rigid command"); tempflag = 1; t_start = atof(arg[iarg+1]); t_stop = atof(arg[iarg+2]); @@ -319,9 +324,9 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : iarg += 4; } else if (strcmp(arg[iarg],"press") == 0) { - if (iarg+4 > narg) error->all("Illegal fix rigid command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid command"); if (strcmp(style,"rigid/npt") != 0) - error->all("Illegal fix rigid command"); + error->all(FLERR,"Illegal fix rigid command"); pressflag = 1; p_start = atof(arg[iarg+1]); p_stop = atof(arg[iarg+2]); @@ -329,22 +334,22 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : iarg += 4; } else if (strcmp(arg[iarg],"tparam") == 0) { - if (iarg+4 > narg) error->all("Illegal fix rigid command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid command"); if (strcmp(style,"rigid/nvt") != 0) - error->all("Illegal fix rigid command"); + error->all(FLERR,"Illegal fix rigid command"); t_chain = atoi(arg[iarg+1]); t_iter = atoi(arg[iarg+2]); t_order = atoi(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"pparam") == 0) { - if (iarg+2 > narg) error->all("Illegal fix rigid command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid command"); if (strcmp(style,"rigid/npt") != 0) - error->all("Illegal fix rigid command"); + error->all(FLERR,"Illegal fix rigid command"); p_chain = atoi(arg[iarg+1]); iarg += 2; - } else error->all("Illegal fix rigid command"); + } else error->all(FLERR,"Illegal fix rigid command"); } // initialize Marsaglia RNG with processor-unique seed @@ -376,7 +381,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : delete [] ncount; for (ibody = 0; ibody < nbody; ibody++) - if (nrigid[ibody] <= 1) error->all("One or zero atoms in rigid body"); + if (nrigid[ibody] <= 1) error->all(FLERR,"One or zero atoms in rigid body"); // set image flags for each rigid body to default values // will be reset during init() based on xcm and then by pre_neighbor() @@ -387,18 +392,24 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : // bitmasks for properties of extended particles - INERTIA_POINT = 1; - INERTIA_SPHERE = 2; - INERTIA_ELLIPSOID = 4; - ORIENT_DIPOLE = 8; - ORIENT_QUAT = 16; - OMEGA = 32; - ANGMOM = 64; - TORQUE = 128; + POINT = 1; + SPHERE = 2; + ELLIPSOID = 4; + LINE = 8; + TRIANGLE = 16; + DIPOLE = 32; + OMEGA = 64; + ANGMOM = 128; + TORQUE = 256; + + MINUSPI = -MY_PI; + TWOPI = 2.0*MY_PI; // atom style pointers to particles that store extra info avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + avec_line = (AtomVecLine *) atom->style_match("line"); + avec_tri = (AtomVecTri *) atom->style_match("tri"); // print statistics @@ -426,8 +437,8 @@ FixRigid::~FixRigid() memory->destroy(body); memory->destroy(displace); memory->destroy(eflags); + memory->destroy(orient); memory->destroy(dorient); - memory->destroy(qorient); // delete nbody-length arrays @@ -472,7 +483,7 @@ int FixRigid::setmask() void FixRigid::init() { - int i,ibody; + int i,itype,ibody; triclinic = domain->triclinic; @@ -481,7 +492,7 @@ void FixRigid::init() int count = 0; for (i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"rigid") == 0) count++; - if (count > 1 && me == 0) error->warning("More than one fix rigid"); + if (count > 1 && me == 0) error->warning(FLERR,"More than one fix rigid"); // error if npt,nph fix comes before rigid fix @@ -492,7 +503,7 @@ void FixRigid::init() if (i < modify->nfix) { for (int j = i; j < modify->nfix; j++) if (strcmp(modify->fix[j]->style,"rigid") == 0) - error->all("Rigid fix must come before NPT/NPH fix"); + error->all(FLERR,"Rigid fix must come before NPT/NPH fix"); } // timestep info @@ -507,24 +518,33 @@ void FixRigid::init() // extended = 1 if any particle in a rigid body is finite size // or has a dipole moment - extended = dorientflag = qorientflag = 0; + extended = orientflag = dorientflag = 0; AtomVecEllipsoid::Bonus *ebonus; if (avec_ellipsoid) ebonus = avec_ellipsoid->bonus; + AtomVecLine::Bonus *lbonus; + if (avec_line) lbonus = avec_line->bonus; + AtomVecTri::Bonus *tbonus; + if (avec_tri) tbonus = avec_tri->bonus; double **mu = atom->mu; double *radius = atom->radius; double *rmass = atom->rmass; double *mass = atom->mass; int *ellipsoid = atom->ellipsoid; + int *line = atom->line; + int *tri = atom->tri; int *type = atom->type; int nlocal = atom->nlocal; - if (atom->radius_flag || atom->ellipsoid_flag || atom->mu_flag) { + if (atom->radius_flag || atom->ellipsoid_flag || atom->line_flag || + atom->tri_flag || atom->mu_flag) { int flag = 0; for (i = 0; i < nlocal; i++) { if (body[i] < 0) continue; if (radius && radius[i] > 0.0) flag = 1; if (ellipsoid && ellipsoid[i] >= 0) flag = 1; + if (line && line[i] >= 0) flag = 1; + if (tri && tri[i] >= 0) flag = 1; if (mu && mu[i][3] > 0.0) flag = 1; } @@ -532,35 +552,45 @@ void FixRigid::init() } // grow extended arrays and set extended flags for each particle - // qorientflag = 1 if any particle stores quat orientation + // orientflag = 4 if any particle stores ellipsoid or tri orientation + // orientflag = 1 if any particle stores line orientation // dorientflag = 1 if any particle stores dipole orientation if (extended) { + if (atom->ellipsoid_flag) orientflag = 4; + if (atom->line_flag) orientflag = 1; + if (atom->tri_flag) orientflag = 4; if (atom->mu_flag) dorientflag = 1; - if (atom->ellipsoid_flag) qorientflag = 1; grow_arrays(atom->nmax); for (i = 0; i < nlocal; i++) { eflags[i] = 0; if (body[i] < 0) continue; - // set INERTIA to POINT or SPHERE or ELLIPSOID + // set to POINT or SPHERE or ELLIPSOID or LINE if (radius && radius[i] > 0.0) { - eflags[i] |= INERTIA_SPHERE; + eflags[i] |= SPHERE; eflags[i] |= OMEGA; eflags[i] |= TORQUE; } else if (ellipsoid && ellipsoid[i] >= 0) { - eflags[i] |= INERTIA_ELLIPSOID; - eflags[i] |= ORIENT_QUAT; + eflags[i] |= ELLIPSOID; eflags[i] |= ANGMOM; eflags[i] |= TORQUE; - } else eflags[i] |= INERTIA_POINT; + } else if (line && line[i] >= 0) { + eflags[i] |= LINE; + eflags[i] |= OMEGA; + eflags[i] |= TORQUE; + } else if (tri && tri[i] >= 0) { + eflags[i] |= TRIANGLE; + eflags[i] |= ANGMOM; + eflags[i] |= TORQUE; + } else eflags[i] |= POINT; // set DIPOLE if atom->mu and mu[3] > 0.0 if (atom->mu_flag && mu[i][3] > 0.0) - eflags[i] |= ORIENT_DIPOLE; + eflags[i] |= DIPOLE; } } @@ -595,8 +625,8 @@ void FixRigid::init() if ((xbox && !periodicity[0]) || (ybox && !periodicity[1]) || (zbox && !periodicity[2])) - error->one("Fix rigid atom has non-zero image flag " - "in a non-periodic dimension"); + error->one(FLERR,"Fix rigid atom has non-zero image flag " + "in a non-periodic dimension"); if (triclinic == 0) { xunwrap = x[i][0] + xbox*xprd; @@ -632,7 +662,7 @@ void FixRigid::init() // dx,dy,dz = coords relative to center-of-mass // symmetric 3x3 inertia tensor stored in Voigt notation as 6-vector - double dx,dy,dz; + double dx,dy,dz,rad; for (ibody = 0; ibody < nbody; ibody++) for (i = 0; i < 6; i++) sum[ibody][i] = 0.0; @@ -674,18 +704,19 @@ void FixRigid::init() if (extended) { double ivec[6]; - double *shape,*quatatom; + double *shape,*quatatom,*inertiaatom; + double length,theta; for (i = 0; i < nlocal; i++) { if (body[i] < 0) continue; ibody = body[i]; massone = rmass[i]; - if (eflags[i] & INERTIA_SPHERE) { - sum[ibody][0] += 0.4 * massone * radius[i]*radius[i]; - sum[ibody][1] += 0.4 * massone * radius[i]*radius[i]; - sum[ibody][2] += 0.4 * massone * radius[i]*radius[i]; - } else if (eflags[i] & INERTIA_ELLIPSOID) { + if (eflags[i] & SPHERE) { + sum[ibody][0] += SINERTIA*massone * radius[i]*radius[i]; + sum[ibody][1] += SINERTIA*massone * radius[i]*radius[i]; + sum[ibody][2] += SINERTIA*massone * radius[i]*radius[i]; + } else if (eflags[i] & ELLIPSOID) { shape = ebonus[ellipsoid[i]].shape; quatatom = ebonus[ellipsoid[i]].quat; MathExtra::inertia_ellipsoid(shape,quatatom,massone,ivec); @@ -695,6 +726,26 @@ void FixRigid::init() sum[ibody][3] += ivec[3]; sum[ibody][4] += ivec[4]; sum[ibody][5] += ivec[5]; + } else if (eflags[i] & LINE) { + length = lbonus[line[i]].length; + theta = lbonus[line[i]].theta; + MathExtra::inertia_line(length,theta,massone,ivec); + sum[ibody][0] += ivec[0]; + sum[ibody][1] += ivec[1]; + sum[ibody][2] += ivec[2]; + sum[ibody][3] += ivec[3]; + sum[ibody][4] += ivec[4]; + sum[ibody][5] += ivec[5]; + } else if (eflags[i] & TRIANGLE) { + inertiaatom = tbonus[tri[i]].inertia; + quatatom = tbonus[tri[i]].quat; + MathExtra::inertia_triangle(inertiaatom,quatatom,massone,ivec); + sum[ibody][0] += ivec[0]; + sum[ibody][1] += ivec[1]; + sum[ibody][2] += ivec[2]; + sum[ibody][3] += ivec[3]; + sum[ibody][4] += ivec[4]; + sum[ibody][5] += ivec[5]; } } } @@ -718,7 +769,8 @@ void FixRigid::init() tensor[0][1] = tensor[1][0] = all[ibody][5]; ierror = MathExtra::jacobi(tensor,inertia[ibody],evectors); - if (ierror) error->all("Insufficient Jacobi rotations for rigid body"); + if (ierror) error->all(FLERR, + "Insufficient Jacobi rotations for rigid body"); ex_space[ibody][0] = evectors[0][0]; ex_space[ibody][1] = evectors[1][0]; @@ -759,6 +811,7 @@ void FixRigid::init() double qc[4],delta[3]; double *quatatom; + double theta_body; for (i = 0; i < nlocal; i++) { if (body[i] < 0) { @@ -789,20 +842,34 @@ void FixRigid::init() ez_space[ibody],delta,displace[i]); if (extended) { - if (eflags[i] & ORIENT_DIPOLE) { + if (eflags[i] & ELLIPSOID) { + quatatom = ebonus[ellipsoid[i]].quat; + MathExtra::qconjugate(quat[ibody],qc); + MathExtra::quatquat(qc,quatatom,orient[i]); + MathExtra::qnormalize(orient[i]); + } else if (eflags[i] & LINE) { + if (quat[ibody][3] >= 0.0) theta_body = 2.0*acos(quat[ibody][0]); + else theta_body = -2.0*acos(quat[ibody][0]); + orient[i][0] = lbonus[line[i]].theta - theta_body; + while (orient[i][0] <= MINUSPI) orient[i][0] += TWOPI; + while (orient[i][0] > MY_PI) orient[i][0] -= TWOPI; + if (orientflag == 4) orient[i][1] = orient[i][2] = orient[i][3] = 0.0; + } else if (eflags[i] & TRIANGLE) { + quatatom = tbonus[tri[i]].quat; + MathExtra::qconjugate(quat[ibody],qc); + MathExtra::quatquat(qc,quatatom,orient[i]); + MathExtra::qnormalize(orient[i]); + } else if (orientflag == 4) { + orient[i][0] = orient[i][1] = orient[i][2] = orient[i][3] = 0.0; + } else if (orientflag == 1) + orient[i][0] = 0.0; + + if (eflags[i] & DIPOLE) { MathExtra::transpose_matvec(ex_space[ibody],ey_space[ibody], ez_space[ibody],mu[i],dorient[i]); MathExtra::snormalize3(mu[i][3],dorient[i],dorient[i]); } else if (dorientflag) dorient[i][0] = dorient[i][1] = dorient[i][2] = 0.0; - - if (eflags[i] & ORIENT_QUAT) { - quatatom = ebonus[ellipsoid[i]].quat; - MathExtra::qconjugate(quat[ibody],qc); - MathExtra::quatquat(qc,quatatom,qorient[i]); - MathExtra::qnormalize(qorient[i]); - } else if (qorientflag) - qorient[i][0] = qorient[i][1] = qorient[i][2] = qorient[i][3] = 0.0; } } @@ -834,20 +901,39 @@ void FixRigid::init() if (extended) { double ivec[6]; - double *shape; + double *shape,*inertiaatom; + double length; for (i = 0; i < nlocal; i++) { if (body[i] < 0) continue; ibody = body[i]; massone = rmass[i]; - if (eflags[i] & INERTIA_SPHERE) { - sum[ibody][0] += 0.4 * massone * radius[i]*radius[i]; - sum[ibody][1] += 0.4 * massone * radius[i]*radius[i]; - sum[ibody][2] += 0.4 * massone * radius[i]*radius[i]; - } else if (eflags[i] & INERTIA_ELLIPSOID) { + if (eflags[i] & SPHERE) { + sum[ibody][0] += SINERTIA*massone * radius[i]*radius[i]; + sum[ibody][1] += SINERTIA*massone * radius[i]*radius[i]; + sum[ibody][2] += SINERTIA*massone * radius[i]*radius[i]; + } else if (eflags[i] & ELLIPSOID) { shape = ebonus[ellipsoid[i]].shape; - MathExtra::inertia_ellipsoid(shape,qorient[i],massone,ivec); + MathExtra::inertia_ellipsoid(shape,orient[i],massone,ivec); + sum[ibody][0] += ivec[0]; + sum[ibody][1] += ivec[1]; + sum[ibody][2] += ivec[2]; + sum[ibody][3] += ivec[3]; + sum[ibody][4] += ivec[4]; + sum[ibody][5] += ivec[5]; + } else if (eflags[i] & LINE) { + length = lbonus[line[i]].length; + MathExtra::inertia_line(length,orient[i][0],massone,ivec); + sum[ibody][0] += ivec[0]; + sum[ibody][1] += ivec[1]; + sum[ibody][2] += ivec[2]; + sum[ibody][3] += ivec[3]; + sum[ibody][4] += ivec[4]; + sum[ibody][5] += ivec[5]; + } else if (eflags[i] & TRIANGLE) { + inertiaatom = tbonus[tri[i]].inertia; + MathExtra::inertia_triangle(inertiaatom,orient[i],massone,ivec); sum[ibody][0] += ivec[0]; sum[ibody][1] += ivec[1]; sum[ibody][2] += ivec[2]; @@ -864,30 +950,30 @@ void FixRigid::init() for (ibody = 0; ibody < nbody; ibody++) { if (inertia[ibody][0] == 0.0) { if (fabs(all[ibody][0]) > TOLERANCE) - error->all("Fix rigid: Bad principal moments"); + error->all(FLERR,"Fix rigid: Bad principal moments"); } else { if (fabs((all[ibody][0]-inertia[ibody][0])/inertia[ibody][0]) > - TOLERANCE) error->all("Fix rigid: Bad principal moments"); + TOLERANCE) error->all(FLERR,"Fix rigid: Bad principal moments"); } if (inertia[ibody][1] == 0.0) { if (fabs(all[ibody][1]) > TOLERANCE) - error->all("Fix rigid: Bad principal moments"); + error->all(FLERR,"Fix rigid: Bad principal moments"); } else { if (fabs((all[ibody][1]-inertia[ibody][1])/inertia[ibody][1]) > - TOLERANCE) error->all("Fix rigid: Bad principal moments"); + TOLERANCE) error->all(FLERR,"Fix rigid: Bad principal moments"); } if (inertia[ibody][2] == 0.0) { if (fabs(all[ibody][2]) > TOLERANCE) - error->all("Fix rigid: Bad principal moments"); + error->all(FLERR,"Fix rigid: Bad principal moments"); } else { if (fabs((all[ibody][2]-inertia[ibody][2])/inertia[ibody][2]) > - TOLERANCE) error->all("Fix rigid: Bad principal moments"); + TOLERANCE) error->all(FLERR,"Fix rigid: Bad principal moments"); } norm = (inertia[ibody][0] + inertia[ibody][1] + inertia[ibody][2]) / 3.0; if (fabs(all[ibody][3]/norm) > TOLERANCE || fabs(all[ibody][4]/norm) > TOLERANCE || fabs(all[ibody][5]/norm) > TOLERANCE) - error->all("Fix rigid: Bad principal moments"); + error->all(FLERR,"Fix rigid: Bad principal moments"); } // temperature scale factor @@ -897,7 +983,8 @@ void FixRigid::init() ndof += fflag[ibody][0] + fflag[ibody][1] + fflag[ibody][2]; ndof += tflag[ibody][0] + tflag[ibody][1] + tflag[ibody][2]; } - tfactor = force->mvv2e / (ndof * force->boltz); + if (ndof > 0.0) tfactor = force->mvv2e / (ndof * force->boltz); + else tfactor = 0.0; } /* ---------------------------------------------------------------------- */ @@ -999,24 +1086,29 @@ void FixRigid::setup(int vflag) // extended particles add their rotation/torque to angmom/torque of body if (extended) { + AtomVecLine::Bonus *lbonus; + if (avec_line) lbonus = avec_line->bonus; double **omega_one = atom->omega; double **angmom_one = atom->angmom; double **torque_one = atom->torque; double *radius = atom->radius; + int *line = atom->line; for (i = 0; i < nlocal; i++) { if (body[i] < 0) continue; ibody = body[i]; if (eflags[i] & OMEGA) { - if (rmass) massone = rmass[i]; - else massone = mass[type[i]]; - radone = radius[i]; - sum[ibody][0] += 0.4 * massone * radone*radone * omega_one[i][0]; - sum[ibody][1] += 0.4 * massone * radone*radone * omega_one[i][1]; - sum[ibody][2] += 0.4 * massone * radone*radone * omega_one[i][2]; + if (eflags[i] & SPHERE) { + radone = radius[i]; + sum[ibody][0] += SINERTIA*rmass[i] * radone*radone * omega_one[i][0]; + sum[ibody][1] += SINERTIA*rmass[i] * radone*radone * omega_one[i][1]; + sum[ibody][2] += SINERTIA*rmass[i] * radone*radone * omega_one[i][2]; + } else if (eflags[i] & LINE) { + radone = lbonus[line[i]].length; + sum[ibody][2] += LINERTIA*rmass[i] * radone*radone * omega_one[i][2]; + } } - if (eflags[i] & ANGMOM) { sum[ibody][0] += angmom_one[i][0]; sum[ibody][1] += angmom_one[i][1]; @@ -1459,7 +1551,7 @@ int FixRigid::dof(int igroup) nall[ibody]+mall[ibody] != nrigid[ibody]) flag = 1; } if (flag && me == 0) - error->warning("Computing temperature of portions of rigid bodies"); + error->warning(FLERR,"Computing temperature of portions of rigid bodies"); // remove appropriate DOFs for each rigid body wholly in temperature group // N = # of point particles in body @@ -1519,7 +1611,7 @@ void FixRigid::deform(int flag) void FixRigid::set_xv() { - int ibody; + int ibody,itype; int xbox,ybox,zbox; double x0,x1,x2,v0,v1,v2,fc0,fc1,fc2,massone; double xy,xz,yz; @@ -1625,43 +1717,64 @@ void FixRigid::set_xv() // set orientation, omega, angmom of each extended particle if (extended) { - double *shape,*quatatom; + double theta_body,theta; + double *shape,*quatatom,*inertiaatom; AtomVecEllipsoid::Bonus *ebonus; if (avec_ellipsoid) ebonus = avec_ellipsoid->bonus; + AtomVecLine::Bonus *lbonus; + if (avec_line) lbonus = avec_line->bonus; + AtomVecTri::Bonus *tbonus; + if (avec_tri) tbonus = avec_tri->bonus; double **omega_one = atom->omega; double **angmom_one = atom->angmom; double **mu = atom->mu; int *ellipsoid = atom->ellipsoid; + int *line = atom->line; + int *tri = atom->tri; for (int i = 0; i < nlocal; i++) { if (body[i] < 0) continue; ibody = body[i]; - - if (eflags[i] & ORIENT_DIPOLE) { - MathExtra::quat_to_mat(quat[ibody],p); - MathExtra::matvec(p,dorient[i],mu[i]); - MathExtra::snormalize3(mu[i][3],mu[i],mu[i]); - } - if (eflags[i] & ORIENT_QUAT) { - quatatom = ebonus[ellipsoid[i]].quat; - MathExtra::quatquat(quat[ibody],qorient[i],quatatom); - MathExtra::qnormalize(quatatom); - } - if (eflags[i] & OMEGA) { + + if (eflags[i] & SPHERE) { omega_one[i][0] = omega[ibody][0]; omega_one[i][1] = omega[ibody][1]; omega_one[i][2] = omega[ibody][2]; - } - if (eflags[i] & ANGMOM) { + } else if (eflags[i] & ELLIPSOID) { shape = ebonus[ellipsoid[i]].shape; quatatom = ebonus[ellipsoid[i]].quat; - ione[0] = 0.2*rmass[i] * (shape[1]*shape[1] + shape[2]*shape[2]); - ione[1] = 0.2*rmass[i] * (shape[0]*shape[0] + shape[2]*shape[2]); - ione[2] = 0.2*rmass[i] * (shape[0]*shape[0] + shape[1]*shape[1]); + MathExtra::quatquat(quat[ibody],orient[i],quatatom); + MathExtra::qnormalize(quatatom); + ione[0] = EINERTIA*rmass[i] * (shape[1]*shape[1] + shape[2]*shape[2]); + ione[1] = EINERTIA*rmass[i] * (shape[0]*shape[0] + shape[2]*shape[2]); + ione[2] = EINERTIA*rmass[i] * (shape[0]*shape[0] + shape[1]*shape[1]); MathExtra::q_to_exyz(quatatom,exone,eyone,ezone); MathExtra::omega_to_angmom(omega[ibody],exone,eyone,ezone,ione, angmom_one[i]); + } else if (eflags[i] & LINE) { + if (quat[ibody][3] >= 0.0) theta_body = 2.0*acos(quat[ibody][0]); + else theta_body = -2.0*acos(quat[ibody][0]); + theta = orient[i][0] + theta_body; + while (theta <= MINUSPI) theta += TWOPI; + while (theta > MY_PI) theta -= TWOPI; + lbonus[line[i]].theta = theta; + omega_one[i][0] = omega[ibody][0]; + omega_one[i][1] = omega[ibody][1]; + omega_one[i][2] = omega[ibody][2]; + } else if (eflags[i] & TRIANGLE) { + inertiaatom = tbonus[tri[i]].inertia; + quatatom = tbonus[tri[i]].quat; + MathExtra::quatquat(quat[ibody],orient[i],quatatom); + MathExtra::qnormalize(quatatom); + MathExtra::q_to_exyz(quatatom,exone,eyone,ezone); + MathExtra::omega_to_angmom(omega[ibody],exone,eyone,ezone, + inertiaatom,angmom_one[i]); + } + if (eflags[i] & DIPOLE) { + MathExtra::quat_to_mat(quat[ibody],p); + MathExtra::matvec(p,dorient[i],mu[i]); + MathExtra::snormalize3(mu[i][3],mu[i],mu[i]); } } } @@ -1675,8 +1788,9 @@ void FixRigid::set_xv() void FixRigid::set_v() { - int ibody; + int ibody,itype; int xbox,ybox,zbox; + double dx,dy,dz; double x0,x1,x2,v0,v1,v2,fc0,fc1,fc2,massone; double xy,xz,yz; double ione[3],exone[3],eyone[3],ezone[3],delta[3],vr[6]; @@ -1764,32 +1878,44 @@ void FixRigid::set_v() // set omega, angmom of each extended particle if (extended) { - double *shape,*quatatom; + double *shape,*quatatom,*inertiaatom; AtomVecEllipsoid::Bonus *ebonus; if (avec_ellipsoid) ebonus = avec_ellipsoid->bonus; + AtomVecTri::Bonus *tbonus; + if (avec_tri) tbonus = avec_tri->bonus; double **omega_one = atom->omega; double **angmom_one = atom->angmom; int *ellipsoid = atom->ellipsoid; + int *tri = atom->tri; for (int i = 0; i < nlocal; i++) { if (body[i] < 0) continue; ibody = body[i]; - if (eflags[i] & OMEGA) { + if (eflags[i] & SPHERE) { omega_one[i][0] = omega[ibody][0]; omega_one[i][1] = omega[ibody][1]; omega_one[i][2] = omega[ibody][2]; - } - if (eflags[i] & ANGMOM) { + } else if (eflags[i] & ELLIPSOID) { shape = ebonus[ellipsoid[i]].shape; quatatom = ebonus[ellipsoid[i]].quat; - ione[0] = 0.2*rmass[i] * (shape[1]*shape[1] + shape[2]*shape[2]); - ione[1] = 0.2*rmass[i] * (shape[0]*shape[0] + shape[2]*shape[2]); - ione[2] = 0.2*rmass[i] * (shape[0]*shape[0] + shape[1]*shape[1]); + ione[0] = EINERTIA*rmass[i] * (shape[1]*shape[1] + shape[2]*shape[2]); + ione[1] = EINERTIA*rmass[i] * (shape[0]*shape[0] + shape[2]*shape[2]); + ione[2] = EINERTIA*rmass[i] * (shape[0]*shape[0] + shape[1]*shape[1]); MathExtra::q_to_exyz(quatatom,exone,eyone,ezone); MathExtra::omega_to_angmom(omega[ibody],exone,eyone,ezone,ione, angmom_one[i]); + } else if (eflags[i] & LINE) { + omega_one[i][0] = omega[ibody][0]; + omega_one[i][1] = omega[ibody][1]; + omega_one[i][2] = omega[ibody][2]; + } else if (eflags[i] & TRIANGLE) { + inertiaatom = tbonus[tri[i]].inertia; + quatatom = tbonus[tri[i]].quat; + MathExtra::q_to_exyz(quatatom,exone,eyone,ezone); + MathExtra::omega_to_angmom(omega[ibody],exone,eyone,ezone, + inertiaatom,angmom_one[i]); } } } @@ -1807,8 +1933,8 @@ double FixRigid::memory_usage() bytes += maxvatom*6 * sizeof(double); if (extended) { bytes += nmax * sizeof(int); + if (orientflag) bytes = nmax*orientflag * sizeof(double); if (dorientflag) bytes = nmax*3 * sizeof(double); - if (qorientflag) bytes = nmax*4 * sizeof(double); } return bytes; } @@ -1823,8 +1949,8 @@ void FixRigid::grow_arrays(int nmax) memory->grow(displace,nmax,3,"rigid:displace"); if (extended) { memory->grow(eflags,nmax,"rigid:eflags"); + if (orientflag) memory->grow(orient,nmax,orientflag,"rigid:orient"); if (dorientflag) memory->grow(dorient,nmax,3,"rigid:dorient"); - if (qorientflag) memory->grow(qorient,nmax,4,"rigid:qorient"); } } @@ -1840,17 +1966,13 @@ void FixRigid::copy_arrays(int i, int j) displace[j][2] = displace[i][2]; if (extended) { eflags[j] = eflags[i]; + for (int k = 0; k < orientflag; k++) + orient[j][k] = orient[i][k]; if (dorientflag) { dorient[j][0] = dorient[i][0]; dorient[j][1] = dorient[i][1]; dorient[j][2] = dorient[i][2]; } - if (qorientflag) { - qorient[j][0] = qorient[i][0]; - qorient[j][1] = qorient[i][1]; - qorient[j][2] = qorient[i][2]; - qorient[j][3] = qorient[i][3]; - } } } @@ -1880,17 +2002,13 @@ int FixRigid::pack_exchange(int i, double *buf) int m = 4; buf[m++] = eflags[i]; + for (int j = 0; j < orientflag; j++) + buf[m++] = orient[i][j]; if (dorientflag) { buf[m++] = dorient[i][0]; buf[m++] = dorient[i][1]; buf[m++] = dorient[i][2]; } - if (qorientflag) { - buf[m++] = qorient[i][0]; - buf[m++] = qorient[i][1]; - buf[m++] = qorient[i][2]; - buf[m++] = qorient[i][3]; - } return m; } @@ -1908,16 +2026,12 @@ int FixRigid::unpack_exchange(int nlocal, double *buf) int m = 4; eflags[nlocal] = static_cast (buf[m++]); + for (int j = 0; j < orientflag; j++) + orient[nlocal][j] = buf[m++]; if (dorientflag) { dorient[nlocal][0] = buf[m++]; - dorient[nlocal][0] = buf[m++]; - dorient[nlocal][0] = buf[m++]; - } - if (qorientflag) { - qorient[nlocal][0] = buf[m++]; - qorient[nlocal][0] = buf[m++]; - qorient[nlocal][0] = buf[m++]; - qorient[nlocal][0] = buf[m++]; + dorient[nlocal][1] = buf[m++]; + dorient[nlocal][2] = buf[m++]; } return m; } diff --git a/src/fix_rigid.h b/src/fix_rigid.h index 06121ad47a..fa803df5f7 100644 --- a/src/fix_rigid.h +++ b/src/fix_rigid.h @@ -56,6 +56,7 @@ class FixRigid : public Fix { double dtv,dtf,dtq; double *step_respa; int triclinic; + double MINUSPI,TWOPI; int nbody; // # of rigid bodies int *nrigid; // # of atoms in each rigid body @@ -82,11 +83,11 @@ class FixRigid : public Fix { int **remapflag; // PBC remap flags for each rigid body int extended; // 1 if any particles have extended attributes + int orientflag; // 1 if particles store spatial orientation int dorientflag; // 1 if particles store dipole orientation - int qorientflag; // 1 if particles store quat orientation int *eflags; // flags for extended particles - double **qorient; // rotation state of ext particle wrt rigid body + double **orient; // orientation vector of particle wrt rigid body double **dorient; // orientation of dipole mu wrt rigid body double tfactor; // scale factor on temperature of rigid bodies @@ -104,10 +105,10 @@ class FixRigid : public Fix { class RanMars *random; class AtomVecEllipsoid *avec_ellipsoid; + class AtomVecLine *avec_line; + class AtomVecTri *avec_tri; - // bitmasks for eflags - int INERTIA_POINT,INERTIA_SPHERE,INERTIA_ELLIPSOID; - int ORIENT_DIPOLE,ORIENT_QUAT; + int POINT,SPHERE,ELLIPSOID,LINE,TRIANGLE,DIPOLE; // bitmasks for eflags int OMEGA,ANGMOM,TORQUE; void no_squish_rotate(int, double *, double *, double *, double); diff --git a/src/fix_rigid_nvt.cpp b/src/fix_rigid_nvt.cpp index bad5e961df..824f8b4bbf 100644 --- a/src/fix_rigid_nvt.cpp +++ b/src/fix_rigid_nvt.cpp @@ -51,16 +51,16 @@ FixRigidNVT::FixRigidNVT(LAMMPS *lmp, int narg, char **arg) : // convert input period to frequency if (tempflag == 0) - error->all("Did not set temp for fix rigid/nvt"); + error->all(FLERR,"Did not set temp for fix rigid/nvt"); if (t_start < 0.0 || t_stop <= 0.0) - error->all("Target temperature for fix rigid/nvt cannot be 0.0"); - if (t_period <= 0.0) error->all("Fix rigid/nvt period must be > 0.0"); + error->all(FLERR,"Target temperature for fix rigid/nvt cannot be 0.0"); + if (t_period <= 0.0) error->all(FLERR,"Fix rigid/nvt period must be > 0.0"); t_freq = 1.0 / t_period; - if (t_chain < 1) error->all("Illegal fix_modify command"); - if (t_iter < 1) error->all("Illegal fix_modify command"); + if (t_chain < 1) error->all(FLERR,"Illegal fix_modify command"); + if (t_iter < 1) error->all(FLERR,"Illegal fix_modify command"); if (t_order != 3 && t_order != 5) - error->all("Fix_modify order must be 3 or 5"); + error->all(FLERR,"Fix_modify order must be 3 or 5"); allocate_chain(); allocate_order(); @@ -647,7 +647,7 @@ void FixRigidNVT::restart(char *buf) int t_chain_prev = static_cast (list[n++]); if (t_chain_prev != t_chain) - error->all("Cannot restart fix rigid/nvt with different # of chains"); + error->all(FLERR,"Cannot restart fix rigid/nvt with different # of chains"); for (int i = 0; i < t_chain; i++) { eta_t[i] = list[n++]; diff --git a/src/fix_setforce.cpp b/src/fix_setforce.cpp index 897aad56a9..c7dba74f59 100644 --- a/src/fix_setforce.cpp +++ b/src/fix_setforce.cpp @@ -34,7 +34,7 @@ enum{NONE,CONSTANT,EQUAL,ATOM}; FixSetForce::FixSetForce(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 6) error->all("Illegal fix setforce command"); + if (narg < 6) error->all(FLERR,"Illegal fix setforce command"); vector_flag = 1; size_vector = 3; @@ -82,15 +82,15 @@ FixSetForce::FixSetForce(LAMMPS *lmp, int narg, char **arg) : int iarg = 6; while (iarg < narg) { if (strcmp(arg[iarg],"region") == 0) { - if (iarg+2 > narg) error->all("Illegal fix setforce command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix setforce command"); iregion = domain->find_region(arg[iarg+1]); if (iregion == -1) - error->all("Region ID for fix setforce does not exist"); + error->all(FLERR,"Region ID for fix setforce does not exist"); int n = strlen(arg[iarg+1]) + 1; idregion = new char[n]; strcpy(idregion,arg[iarg+1]); iarg += 2; - } else error->all("Illegal fix setforce command"); + } else error->all(FLERR,"Illegal fix setforce command"); } force_flag = 0; @@ -130,31 +130,31 @@ void FixSetForce::init() if (xstr) { xvar = input->variable->find(xstr); - if (xvar < 0) error->all("Variable name for fix setforce does not exist"); + if (xvar < 0) error->all(FLERR,"Variable name for fix setforce does not exist"); if (input->variable->equalstyle(xvar)) xstyle = EQUAL; else if (input->variable->atomstyle(xvar)) xstyle = ATOM; - else error->all("Variable for fix setforce is invalid style"); + else error->all(FLERR,"Variable for fix setforce is invalid style"); } if (ystr) { yvar = input->variable->find(ystr); - if (yvar < 0) error->all("Variable name for fix setforce does not exist"); + if (yvar < 0) error->all(FLERR,"Variable name for fix setforce does not exist"); if (input->variable->equalstyle(yvar)) ystyle = EQUAL; else if (input->variable->atomstyle(yvar)) ystyle = ATOM; - else error->all("Variable for fix setforce is invalid style"); + else error->all(FLERR,"Variable for fix setforce is invalid style"); } if (zstr) { zvar = input->variable->find(zstr); - if (zvar < 0) error->all("Variable name for fix setforce does not exist"); + if (zvar < 0) error->all(FLERR,"Variable name for fix setforce does not exist"); if (input->variable->equalstyle(zvar)) zstyle = EQUAL; else if (input->variable->atomstyle(zvar)) zstyle = ATOM; - else error->all("Variable for fix setforce is invalid style"); + else error->all(FLERR,"Variable for fix setforce is invalid style"); } // set index and check validity of region if (iregion >= 0) { iregion = domain->find_region(idregion); - if (iregion == -1) error->all("Region ID for fix setforce does not exist"); + if (iregion == -1) error->all(FLERR,"Region ID for fix setforce does not exist"); } if (xstyle == ATOM || ystyle == ATOM || zstyle == ATOM) @@ -179,7 +179,7 @@ void FixSetForce::init() if (zstyle == CONSTANT && zvalue != 0.0) flag = 1; } if (flag) - error->all("Cannot use non-zero forces in an energy minimization"); + error->all(FLERR,"Cannot use non-zero forces in an energy minimization"); } /* ---------------------------------------------------------------------- */ diff --git a/src/fix_shake.cpp b/src/fix_shake.cpp index fca15216f3..5cdce3ad25 100644 --- a/src/fix_shake.cpp +++ b/src/fix_shake.cpp @@ -30,15 +30,15 @@ #include "comm.h" #include "group.h" #include "fix_respa.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; #define BIG 1.0e20 #define MASSDELTA 0.1 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) /* ---------------------------------------------------------------------- */ @@ -48,15 +48,13 @@ FixShake::FixShake(LAMMPS *lmp, int narg, char **arg) : MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); - PI = 4.0*atan(1.0); - virial_flag = 1; create_attribute = 1; // error check if (atom->molecular == 0) - error->all("Cannot use fix shake with non-molecular system"); + error->all(FLERR,"Cannot use fix shake with non-molecular system"); // perform initial allocation of atom-based arrays // register with Atom class @@ -74,7 +72,7 @@ FixShake::FixShake(LAMMPS *lmp, int narg, char **arg) : // parse SHAKE args - if (narg < 8) error->all("Illegal fix shake command"); + if (narg < 8) error->all(FLERR,"Illegal fix shake command"); tolerance = atof(arg[3]); max_iter = atoi(arg[4]); @@ -109,28 +107,28 @@ FixShake::FixShake(LAMMPS *lmp, int narg, char **arg) : } else if (mode == 'b') { int i = atoi(arg[next]); if (i < 1 || i > atom->nbondtypes) - error->all("Invalid bond type index for fix shake"); + error->all(FLERR,"Invalid bond type index for fix shake"); bond_flag[i] = 1; } else if (mode == 'a') { int i = atoi(arg[next]); if (i < 1 || i > atom->nangletypes) - error->all("Invalid angle type index for fix shake"); + error->all(FLERR,"Invalid angle type index for fix shake"); angle_flag[i] = 1; } else if (mode == 't') { int i = atoi(arg[next]); if (i < 1 || i > atom->ntypes) - error->all("Invalid atom type index for fix shake"); + error->all(FLERR,"Invalid atom type index for fix shake"); type_flag[i] = 1; } else if (mode == 'm') { double massone = atof(arg[next]); - if (massone == 0.0) error->all("Invalid atom mass for fix shake"); - if (nmass == atom->ntypes) error->all("Too many masses for fix shake"); + if (massone == 0.0) error->all(FLERR,"Invalid atom mass for fix shake"); + if (nmass == atom->ntypes) error->all(FLERR,"Too many masses for fix shake"); mass_list[nmass++] = massone; - } else error->all("Illegal fix shake command"); + } else error->all(FLERR,"Illegal fix shake command"); next++; } @@ -280,13 +278,13 @@ void FixShake::init() int count = 0; for (i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"shake") == 0) count++; - if (count > 1) error->all("More than one fix shake"); + if (count > 1) error->all(FLERR,"More than one fix shake"); // cannot use with minimization since SHAKE turns off bonds // that should contribute to potential energy if (update->whichflag == 2) - error->all("Fix shake cannot be used with minimization"); + error->all(FLERR,"Fix shake cannot be used with minimization"); // error if npt,nph fix comes before shake fix @@ -297,7 +295,7 @@ void FixShake::init() if (i < modify->nfix) { for (int j = i; j < modify->nfix; j++) if (strcmp(modify->fix[j]->style,"shake") == 0) - error->all("Shake fix must come before NPT/NPH fix"); + error->all(FLERR,"Shake fix must come before NPT/NPH fix"); } // if rRESPA, find associated fix that must exist @@ -315,7 +313,7 @@ void FixShake::init() // set equilibrium bond distances if (force->bond == NULL) - error->all("Bond potential must be defined for SHAKE"); + error->all(FLERR,"Bond potential must be defined for SHAKE"); for (i = 1; i <= atom->nbondtypes; i++) bond_distance[i] = force->bond->equilibrium_distance(i); @@ -326,7 +324,7 @@ void FixShake::init() for (i = 1; i <= atom->nangletypes; i++) { if (angle_flag[i] == 0) continue; if (force->angle == NULL) - error->all("Angle potential must be defined for SHAKE"); + error->all(FLERR,"Angle potential must be defined for SHAKE"); // scan all atoms for a SHAKE angle cluster // extract bond types for the 2 bonds in the cluster @@ -353,7 +351,7 @@ void FixShake::init() // error check for any bond types that are not the same MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_MAX,world); - if (flag_all) error->all("Shake angles have different bond types"); + if (flag_all) error->all(FLERR,"Shake angles have different bond types"); // insure all procs have bond types @@ -458,7 +456,7 @@ void FixShake::pre_neighbor() sprintf(str, "Shake atoms %d %d missing on proc %d at step " BIGINT_FORMAT, shake_atom[i][0],shake_atom[i][1],me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (i <= atom1 && i <= atom2) list[nlist++] = i; } else if (shake_flag[i] % 2 == 1) { @@ -472,7 +470,7 @@ void FixShake::pre_neighbor() BIGINT_FORMAT, shake_atom[i][0],shake_atom[i][1],shake_atom[i][2], me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (i <= atom1 && i <= atom2 && i <= atom3) list[nlist++] = i; } else { @@ -488,7 +486,7 @@ void FixShake::pre_neighbor() shake_atom[i][0],shake_atom[i][1], shake_atom[i][2],shake_atom[i][3], me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (i <= atom1 && i <= atom2 && i <= atom3 && i <= atom4) list[nlist++] = i; @@ -813,7 +811,7 @@ void FixShake::find_clusters() } MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); - if (flag_all) error->all("Did not find fix shake partner info"); + if (flag_all) error->all(FLERR,"Did not find fix shake partner info"); // ----------------------------------------------------- // identify SHAKEable bonds @@ -947,7 +945,7 @@ void FixShake::find_clusters() flag = 0; for (i = 0; i < nlocal; i++) if (nshake[i] > 3) flag = 1; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); - if (flag_all) error->all("Shake cluster of more than 4 atoms"); + if (flag_all) error->all(FLERR,"Shake cluster of more than 4 atoms"); flag = 0; for (i = 0; i < nlocal; i++) { @@ -956,7 +954,7 @@ void FixShake::find_clusters() if (partner_shake[i][j] && partner_nshake[i][j] > 1) flag = 1; } MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); - if (flag_all) error->all("Shake clusters are connected"); + if (flag_all) error->all(FLERR,"Shake clusters are connected"); // ----------------------------------------------------- // set SHAKE arrays that are stored with atoms & add angle constraints @@ -1349,7 +1347,7 @@ void FixShake::shake2(int m) double determ = b*b - 4.0*a*c; if (determ < 0.0) { - error->warning("Shake determinant < 0.0",0); + error->warning(FLERR,"Shake determinant < 0.0",0); determ = 0.0; } @@ -1469,7 +1467,7 @@ void FixShake::shake3(int m) // inverse of matrix double determ = a11*a22 - a12*a21; - if (determ == 0.0) error->one("Shake determinant = 0.0"); + if (determ == 0.0) error->one(FLERR,"Shake determinant = 0.0"); double determinv = 1.0/determ; double a11inv = a22*determinv; @@ -1663,7 +1661,7 @@ void FixShake::shake4(int m) double determ = a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - a11*a23*a32 - a12*a21*a33 - a13*a22*a31; - if (determ == 0.0) error->one("Shake determinant = 0.0"); + if (determ == 0.0) error->one(FLERR,"Shake determinant = 0.0"); double determinv = 1.0/determ; double a11inv = determinv * (a22*a33 - a23*a32); @@ -1903,7 +1901,7 @@ void FixShake::shake3angle(int m) double determ = a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - a11*a23*a32 - a12*a21*a33 - a13*a22*a31; - if (determ == 0.0) error->one("Shake determinant = 0.0"); + if (determ == 0.0) error->one(FLERR,"Shake determinant = 0.0"); double determinv = 1.0/determ; double a11inv = determinv * (a22*a33 - a23*a32); @@ -2116,7 +2114,7 @@ void FixShake::stats() r3 = sqrt(delx*delx + dely*dely + delz*delz); angle = acos((r1*r1 + r2*r2 - r3*r3) / (2.0*r1*r2)); - angle *= 180.0/PI; + angle *= 180.0/MY_PI; m = shake_type[i][2]; a_count[m]++; a_ave[m] += angle; diff --git a/src/fix_shake.h b/src/fix_shake.h index eaf39837cb..b0aa5c63d2 100644 --- a/src/fix_shake.h +++ b/src/fix_shake.h @@ -49,7 +49,6 @@ class FixShake : public Fix { private: int me,nprocs; - double PI; double tolerance; // SHAKE tolerance int max_iter; // max # of SHAKE iterations int output_every; // SHAKE stat output every so often diff --git a/src/fix_shear_history.cpp b/src/fix_shear_history.cpp index 0740a2f257..4e284c7f65 100644 --- a/src/fix_shear_history.cpp +++ b/src/fix_shear_history.cpp @@ -86,7 +86,7 @@ int FixShearHistory::setmask() void FixShearHistory::init() { if (atom->tag_enable == 0) - error->all("Pair style granular with history requires atoms have IDs"); + error->all(FLERR,"Pair style granular with history requires atoms have IDs"); } /* ---------------------------------------------------------------------- */ @@ -166,7 +166,7 @@ void FixShearHistory::pre_exchange() if (npartner[i] >= MAXTOUCH) flag = 1; int flag_all; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); - if (flag_all) error->all("Too many touching neighbors - boost MAXTOUCH"); + if (flag_all) error->all(FLERR,"Too many touching neighbors - boost MAXTOUCH"); } /* ---------------------------------------------------------------------- diff --git a/src/fix_shear_history.h b/src/fix_shear_history.h index 8bb3a9814f..cdf4f2cea4 100644 --- a/src/fix_shear_history.h +++ b/src/fix_shear_history.h @@ -35,7 +35,7 @@ class FixShearHistory : public Fix { int setmask(); void init(); void setup_pre_exchange(); - void pre_exchange(); + virtual void pre_exchange(); double memory_usage(); void grow_arrays(int); @@ -48,7 +48,7 @@ class FixShearHistory : public Fix { int size_restart(int); int maxsize_restart(); - private: + protected: int *npartner; // # of touching partners of each atom int **partner; // tags for the partners double ***shearpartner; // 3 shear values with the partner diff --git a/src/fix_spring.cpp b/src/fix_spring.cpp index d6666f2b47..f3ac3e378b 100644 --- a/src/fix_spring.cpp +++ b/src/fix_spring.cpp @@ -30,9 +30,6 @@ using namespace LAMMPS_NS; #define SMALL 1.0e-10 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - enum{TETHER,COUPLE}; /* ---------------------------------------------------------------------- */ @@ -40,7 +37,7 @@ enum{TETHER,COUPLE}; FixSpring::FixSpring(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 9) error->all("Illegal fix spring command"); + if (narg < 9) error->all(FLERR,"Illegal fix spring command"); scalar_flag = 1; vector_flag = 1; @@ -52,7 +49,7 @@ FixSpring::FixSpring(LAMMPS *lmp, int narg, char **arg) : group2 = NULL; if (strcmp(arg[3],"tether") == 0) { - if (narg != 9) error->all("Illegal fix spring command"); + if (narg != 9) error->all(FLERR,"Illegal fix spring command"); styleflag = TETHER; k_spring = atof(arg[4]); xflag = yflag = zflag = 1; @@ -63,10 +60,10 @@ FixSpring::FixSpring(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[7],"NULL") == 0) zflag = 0; else zc = atof(arg[7]); r0 = atof(arg[8]); - if (r0 < 0) error->all("R0 < 0 for fix spring command"); + if (r0 < 0) error->all(FLERR,"R0 < 0 for fix spring command"); } else if (strcmp(arg[3],"couple") == 0) { - if (narg != 10) error->all("Illegal fix spring command"); + if (narg != 10) error->all(FLERR,"Illegal fix spring command"); styleflag = COUPLE; int n = strlen(arg[4]) + 1; @@ -74,9 +71,9 @@ FixSpring::FixSpring(LAMMPS *lmp, int narg, char **arg) : strcpy(group2,arg[4]); igroup2 = group->find(arg[4]); if (igroup2 == -1) - error->all("Fix spring couple group ID does not exist"); + error->all(FLERR,"Fix spring couple group ID does not exist"); if (igroup2 == igroup) - error->all("Two groups cannot be the same in fix spring couple"); + error->all(FLERR,"Two groups cannot be the same in fix spring couple"); group2bit = group->bitmask[igroup2]; k_spring = atof(arg[5]); @@ -88,9 +85,9 @@ FixSpring::FixSpring(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[8],"NULL") == 0) zflag = 0; else zc = atof(arg[8]); r0 = atof(arg[9]); - if (r0 < 0) error->all("R0 < 0 for fix spring command"); + if (r0 < 0) error->all(FLERR,"R0 < 0 for fix spring command"); - } else error->all("Illegal fix spring command"); + } else error->all(FLERR,"Illegal fix spring command"); ftotal[0] = ftotal[1] = ftotal[2] = ftotal[3] = 0.0; } @@ -123,7 +120,7 @@ void FixSpring::init() if (group2) { igroup2 = group->find(group2); if (igroup2 == -1) - error->all("Fix spring couple group ID does not exist"); + error->all(FLERR,"Fix spring couple group ID does not exist"); group2bit = group->bitmask[igroup2]; } diff --git a/src/fix_spring_rg.cpp b/src/fix_spring_rg.cpp index e4d55eba2d..4723c8fdb9 100644 --- a/src/fix_spring_rg.cpp +++ b/src/fix_spring_rg.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; FixSpringRG::FixSpringRG(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 5) error->all("Illegal fix spring/rg command"); + if (narg != 5) error->all(FLERR,"Illegal fix spring/rg command"); k = atof(arg[3]); rg0_flag = 0; diff --git a/src/fix_spring_self.cpp b/src/fix_spring_self.cpp index 849d7c4787..6fb3472fb6 100644 --- a/src/fix_spring_self.cpp +++ b/src/fix_spring_self.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; FixSpringSelf::FixSpringSelf(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 4) error->all("Illegal fix spring/self command"); + if (narg != 4) error->all(FLERR,"Illegal fix spring/self command"); restart_peratom = 1; scalar_flag = 1; @@ -40,7 +40,7 @@ FixSpringSelf::FixSpringSelf(LAMMPS *lmp, int narg, char **arg) : extscalar = 1; k = atof(arg[3]); - if (k <= 0.0) error->all("Illegal fix spring/self command"); + if (k <= 0.0) error->all(FLERR,"Illegal fix spring/self command"); // perform initial allocation of atom-based array // register with Atom class diff --git a/src/fix_store_force.cpp b/src/fix_store_force.cpp index 5d1e52b64d..98c5f918f8 100644 --- a/src/fix_store_force.cpp +++ b/src/fix_store_force.cpp @@ -27,7 +27,7 @@ using namespace LAMMPS_NS; FixStoreForce::FixStoreForce(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 3) error->all("Illegal fix store/coord command"); + if (narg < 3) error->all(FLERR,"Illegal fix store/coord command"); peratom_flag = 1; size_peratom_cols = 3; diff --git a/src/fix_store_state.cpp b/src/fix_store_state.cpp index 7f49140d57..8a90365e0f 100644 --- a/src/fix_store_state.cpp +++ b/src/fix_store_state.cpp @@ -37,13 +37,13 @@ enum{KEYWORD,COMPUTE,FIX,VARIABLE}; FixStoreState::FixStoreState(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 5) error->all("Illegal fix store/state command"); + if (narg < 5) error->all(FLERR,"Illegal fix store/state command"); restart_peratom = 1; peratom_freq = 1; nevery = atoi(arg[3]); - if (nevery < 0) error->all("Illegal fix store/state command"); + if (nevery < 0) error->all(FLERR,"Illegal fix store/state command"); // parse values until one isn't recognized // customize a new keyword by adding to if statement @@ -65,7 +65,7 @@ FixStoreState::FixStoreState(LAMMPS *lmp, int narg, char **arg) : pack_choice[nvalues++] = &FixStoreState::pack_id; } else if (strcmp(arg[iarg],"mol") == 0) { if (!atom->molecule_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_molecule; } else if (strcmp(arg[iarg],"type") == 0) { pack_choice[nvalues++] = &FixStoreState::pack_type; @@ -124,60 +124,60 @@ FixStoreState::FixStoreState(LAMMPS *lmp, int narg, char **arg) : } else if (strcmp(arg[iarg],"q") == 0) { if (!atom->q_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_q; } else if (strcmp(arg[iarg],"mux") == 0) { if (!atom->mu_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_mux; } else if (strcmp(arg[iarg],"muy") == 0) { if (!atom->mu_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_muy; } else if (strcmp(arg[iarg],"muz") == 0) { if (!atom->mu_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_muz; } else if (strcmp(arg[iarg],"radius") == 0) { if (!atom->radius_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_radius; } else if (strcmp(arg[iarg],"omegax") == 0) { if (!atom->omega_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_omegax; } else if (strcmp(arg[iarg],"omegay") == 0) { if (!atom->omega_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_omegay; } else if (strcmp(arg[iarg],"omegaz") == 0) { if (!atom->omega_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_omegaz; } else if (strcmp(arg[iarg],"angmomx") == 0) { if (!atom->angmom_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_angmomx; } else if (strcmp(arg[iarg],"angmomy") == 0) { if (!atom->angmom_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_angmomy; } else if (strcmp(arg[iarg],"angmomz") == 0) { if (!atom->angmom_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_angmomz; } else if (strcmp(arg[iarg],"tqx") == 0) { if (!atom->torque_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_tqx; } else if (strcmp(arg[iarg],"tqy") == 0) { if (!atom->torque_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_tqy; } else if (strcmp(arg[iarg],"tqz") == 0) { if (!atom->torque_flag) - error->all("Fix store/state for atom property that isn't allocated"); + error->all(FLERR,"Fix store/state for atom property that isn't allocated"); pack_choice[nvalues++] = &FixStoreState::pack_tqz; } else if (strncmp(arg[iarg],"c_",2) == 0 || @@ -195,7 +195,7 @@ FixStoreState::FixStoreState(LAMMPS *lmp, int narg, char **arg) : char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') - error->all("Illegal fix store/state command"); + error->all(FLERR,"Illegal fix store/state command"); argindex[nvalues] = atoi(ptr+1); *ptr = '\0'; } else argindex[nvalues] = 0; @@ -217,12 +217,12 @@ FixStoreState::FixStoreState(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"com") == 0) { - if (iarg+2 > narg) error->all("Illegal fix store/state command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix store/state command"); if (strcmp(arg[iarg+1],"no") == 0) comflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) comflag = 1; - else error->all("Illegal fix store/state command"); + else error->all(FLERR,"Illegal fix store/state command"); iarg += 2; - } else error->all("Illegal fix store/state command"); + } else error->all(FLERR,"Illegal fix store/state command"); } // error check @@ -231,42 +231,42 @@ FixStoreState::FixStoreState(LAMMPS *lmp, int narg, char **arg) : if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) - error->all("Compute ID for fix store/state does not exist"); + error->all(FLERR,"Compute ID for fix store/state does not exist"); if (modify->compute[icompute]->peratom_flag == 0) - error->all("Fix store/state compute " + error->all(FLERR,"Fix store/state compute " "does not calculate per-atom values"); if (argindex[i] == 0 && modify->compute[icompute]->size_peratom_cols != 0) - error->all("Fix store/state compute does not " + error->all(FLERR,"Fix store/state compute does not " "calculate a per-atom vector"); if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) - error->all("Fix store/state compute does not " + error->all(FLERR,"Fix store/state compute does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) - error->all("Fix store/state compute array is accessed out-of-range"); + error->all(FLERR,"Fix store/state compute array is accessed out-of-range"); } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) - error->all("Fix ID for fix store/state does not exist"); + error->all(FLERR,"Fix ID for fix store/state does not exist"); if (modify->fix[ifix]->peratom_flag == 0) - error->all("Fix store/state fix does not calculate per-atom values"); + error->all(FLERR,"Fix store/state fix does not calculate per-atom values"); if (argindex[i] == 0 && modify->fix[ifix]->size_peratom_cols != 0) - error->all("Fix store/state fix does not calculate a per-atom vector"); + error->all(FLERR,"Fix store/state fix does not calculate a per-atom vector"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) - error->all("Fix store/state fix does not calculate a per-atom array"); + error->all(FLERR,"Fix store/state fix does not calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) - error->all("Fix store/state fix array is accessed out-of-range"); + error->all(FLERR,"Fix store/state fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->peratom_freq) - error->all("Fix for fix store/state not computed at compatible time"); + error->all(FLERR,"Fix for fix store/state not computed at compatible time"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) - error->all("Variable name for fix store/state does not exist"); + error->all(FLERR,"Variable name for fix store/state does not exist"); if (input->variable->atomstyle(ivariable) == 0) - error->all("Fix store/state variable is not atom-style variable"); + error->all(FLERR,"Fix store/state variable is not atom-style variable"); } } @@ -338,19 +338,19 @@ void FixStoreState::init() if (which[m] == COMPUTE) { int icompute = modify->find_compute(ids[m]); if (icompute < 0) - error->all("Compute ID for fix store/state does not exist"); + error->all(FLERR,"Compute ID for fix store/state does not exist"); value2index[m] = icompute; } else if (which[m] == FIX) { int ifix = modify->find_fix(ids[m]); if (ifix < 0) - error->all("Fix ID for fix store/state does not exist"); + error->all(FLERR,"Fix ID for fix store/state does not exist"); value2index[m] = ifix; } else if (which[m] == VARIABLE) { int ivariable = input->variable->find(ids[m]); if (ivariable < 0) - error->all("Variable name for fix store/state does not exist"); + error->all(FLERR,"Variable name for fix store/state does not exist"); value2index[m] = ivariable; } } diff --git a/src/fix_temp_berendsen.cpp b/src/fix_temp_berendsen.cpp index a74de7d36d..bed8d8bb68 100644 --- a/src/fix_temp_berendsen.cpp +++ b/src/fix_temp_berendsen.cpp @@ -33,7 +33,7 @@ enum{NOBIAS,BIAS}; FixTempBerendsen::FixTempBerendsen(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 6) error->all("Illegal fix temp/berendsen command"); + if (narg != 6) error->all(FLERR,"Illegal fix temp/berendsen command"); // Berendsen thermostat should be applied every step @@ -48,7 +48,7 @@ FixTempBerendsen::FixTempBerendsen(LAMMPS *lmp, int narg, char **arg) : // error checks - if (t_period <= 0.0) error->all("Fix temp/berendsen period must be > 0.0"); + if (t_period <= 0.0) error->all(FLERR,"Fix temp/berendsen period must be > 0.0"); // create a new compute temp style // id = fix-ID + temp, compute group = fix group @@ -95,7 +95,7 @@ void FixTempBerendsen::init() { int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix temp/berendsen does not exist"); + error->all(FLERR,"Temperature ID for fix temp/berendsen does not exist"); temperature = modify->compute[icompute]; if (temperature->tempbias) which = BIAS; @@ -108,7 +108,7 @@ void FixTempBerendsen::end_of_step() { double t_current = temperature->compute_scalar(); if (t_current == 0.0) - error->all("Computed temperature for fix temp/berendsen cannot be 0.0"); + error->all(FLERR,"Computed temperature for fix temp/berendsen cannot be 0.0"); double delta = update->ntimestep - update->beginstep; delta /= update->endstep - update->beginstep; @@ -153,7 +153,7 @@ void FixTempBerendsen::end_of_step() int FixTempBerendsen::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -164,13 +164,13 @@ int FixTempBerendsen::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != igroup && comm->me == 0) - error->warning("Group for fix_modify temp != fix group"); + error->warning(FLERR,"Group for fix_modify temp != fix group"); return 2; } return 0; diff --git a/src/fix_temp_rescale.cpp b/src/fix_temp_rescale.cpp index 1b4c8f3f04..d0d67368bc 100644 --- a/src/fix_temp_rescale.cpp +++ b/src/fix_temp_rescale.cpp @@ -35,10 +35,10 @@ enum{NOBIAS,BIAS}; FixTempRescale::FixTempRescale(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 8) error->all("Illegal fix temp/rescale command"); + if (narg < 8) error->all(FLERR,"Illegal fix temp/rescale command"); nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix temp/rescale command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix temp/rescale command"); scalar_flag = 1; global_freq = nevery; @@ -94,7 +94,7 @@ void FixTempRescale::init() { int icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all("Temperature ID for fix temp/rescale does not exist"); + error->all(FLERR,"Temperature ID for fix temp/rescale does not exist"); temperature = modify->compute[icompute]; if (temperature->tempbias) which = BIAS; @@ -107,7 +107,7 @@ void FixTempRescale::end_of_step() { double t_current = temperature->compute_scalar(); if (t_current == 0.0) - error->all("Computed temperature for fix temp/rescale cannot be 0.0"); + error->all(FLERR,"Computed temperature for fix temp/rescale cannot be 0.0"); double delta = update->ntimestep - update->beginstep; delta /= update->endstep - update->beginstep; @@ -157,7 +157,7 @@ void FixTempRescale::end_of_step() int FixTempRescale::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; @@ -168,13 +168,13 @@ int FixTempRescale::modify_param(int narg, char **arg) strcpy(id_temp,arg[1]); int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all("Could not find fix_modify temperature ID"); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Fix_modify temperature ID does not compute temperature"); + error->all(FLERR,"Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != igroup && comm->me == 0) - error->warning("Group for fix_modify temp != fix group"); + error->warning(FLERR,"Group for fix_modify temp != fix group"); return 2; } return 0; diff --git a/src/fix_thermal_conductivity.cpp b/src/fix_thermal_conductivity.cpp index b53c3626a6..b339bbd82c 100644 --- a/src/fix_thermal_conductivity.cpp +++ b/src/fix_thermal_conductivity.cpp @@ -31,21 +31,18 @@ using namespace LAMMPS_NS; #define BIG 1.0e10 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixThermalConductivity::FixThermalConductivity(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 6) error->all("Illegal fix thermal/conductivity command"); + if (narg < 6) error->all(FLERR,"Illegal fix thermal/conductivity command"); MPI_Comm_rank(world,&me); nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix thermal/conductivity command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix thermal/conductivity command"); scalar_flag = 1; global_freq = nevery; @@ -54,11 +51,11 @@ FixThermalConductivity::FixThermalConductivity(LAMMPS *lmp, if (strcmp(arg[4],"x") == 0) edim = 0; else if (strcmp(arg[4],"y") == 0) edim = 1; else if (strcmp(arg[4],"z") == 0) edim = 2; - else error->all("Illegal fix thermal/conductivity command"); + else error->all(FLERR,"Illegal fix thermal/conductivity command"); nbin = atoi(arg[5]); if (nbin % 2 || nbin <= 2) - error->all("Illegal fix thermal/conductivity command"); + error->all(FLERR,"Illegal fix thermal/conductivity command"); // optional keywords @@ -68,12 +65,12 @@ FixThermalConductivity::FixThermalConductivity(LAMMPS *lmp, while (iarg < narg) { if (strcmp(arg[iarg],"swap") == 0) { if (iarg+2 > narg) - error->all("Illegal fix thermal/conductivity command"); + error->all(FLERR,"Illegal fix thermal/conductivity command"); nswap = atoi(arg[iarg+1]); if (nswap <= 0) - error->all("Fix thermal/conductivity swap value must be positive"); + error->all(FLERR,"Fix thermal/conductivity swap value must be positive"); iarg += 2; - } else error->all("Illegal fix thermal/conductivity command"); + } else error->all(FLERR,"Illegal fix thermal/conductivity command"); } // initialize array sizes to nswap+1 so have space to shift values down @@ -116,7 +113,7 @@ void FixThermalConductivity::init() for (int i = 0; i < modify->nfix; i++) { if (modify->fix[i] == this) foundme = 1; if (foundme && strcmp(modify->fix[i]->style,"ave/spatial") == 0 && me == 0) - error->warning("Fix thermal/conductivity comes before fix ave/spatial"); + error->warning(FLERR,"Fix thermal/conductivity comes before fix ave/spatial"); } // set bounds of 2 slabs in edim diff --git a/src/fix_tmd.cpp b/src/fix_tmd.cpp index 50865b200a..b73b04c5be 100644 --- a/src/fix_tmd.cpp +++ b/src/fix_tmd.cpp @@ -42,12 +42,12 @@ using namespace LAMMPS_NS; FixTMD::FixTMD(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 6) error->all("Illegal fix tmd command"); + if (narg < 6) error->all(FLERR,"Illegal fix tmd command"); rho_stop = atof(arg[3]); nfileevery = atoi(arg[5]); - if (rho_stop < 0 || nfileevery < 0) error->all("Illegal fix tmd command"); - if (nfileevery && narg != 7) error->all("Illegal fix tmd command"); + if (rho_stop < 0 || nfileevery < 0) error->all(FLERR,"Illegal fix tmd command"); + if (nfileevery && narg != 7) error->all(FLERR,"Illegal fix tmd command"); MPI_Comm_rank(world,&me); @@ -62,7 +62,7 @@ FixTMD::FixTMD(LAMMPS *lmp, int narg, char **arg) : // make sure an atom map exists before reading in target coordinates if (atom->map_style == 0) - error->all("Cannot use fix TMD unless atom map exists"); + error->all(FLERR,"Cannot use fix TMD unless atom map exists"); // read from arg[4] and store coordinates of final target in xf @@ -71,13 +71,13 @@ FixTMD::FixTMD(LAMMPS *lmp, int narg, char **arg) : // open arg[6] statistics file and write header if (nfileevery) { - if (narg != 7) error->all("Illegal fix tmd command"); + if (narg != 7) error->all(FLERR,"Illegal fix tmd command"); if (me == 0) { fp = fopen(arg[6],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix tmd file %s",arg[6]); - error->one(str); + error->one(FLERR,str); } fprintf(fp,"%s %s\n","# Step rho_target rho_old gamma_back", "gamma_forward lambda work_lambda work_analytical"); @@ -169,7 +169,7 @@ void FixTMD::init() if (flag && strcmp(modify->fix[i]->style,"npt") == 0) flag = 2; if (flag && strcmp(modify->fix[i]->style,"nph") == 0) flag = 2; } - if (flag == 2) error->all("Fix tmd must come after integration fixes"); + if (flag == 2) error->all(FLERR,"Fix tmd must come after integration fixes"); // timesteps @@ -465,15 +465,15 @@ void FixTMD::readfile(char *file) continue; } else if (atom->count_words(bufptr) == 4) { if (xprd >= 0.0 || yprd >= 0.0 || zprd >= 0.0) - error->all("Incorrect format in TMD target file"); + error->all(FLERR,"Incorrect format in TMD target file"); imageflag = 0; firstline = 0; } else if (atom->count_words(bufptr) == 7) { if (xprd < 0.0 || yprd < 0.0 || zprd < 0.0) - error->all("Incorrect format in TMD target file"); + error->all(FLERR,"Incorrect format in TMD target file"); imageflag = 1; firstline = 0; - } else error->all("Incorrect format in TMD target file"); + } else error->all(FLERR,"Incorrect format in TMD target file"); } if (imageflag) @@ -521,7 +521,7 @@ void FixTMD::readfile(char *file) int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); - if (flagall) error->all("TMD target file did not list all group atoms"); + if (flagall) error->all(FLERR,"TMD target file did not list all group atoms"); } /* ---------------------------------------------------------------------- @@ -541,14 +541,14 @@ void FixTMD::open(char *file) sprintf(gunzip,"gunzip -c %s",file); fp = popen(gunzip,"r"); #else - error->one("Cannot open gzipped file"); + error->one(FLERR,"Cannot open gzipped file"); #endif } if (fp == NULL) { char str[128]; sprintf(str,"Cannot open file %s",file); - error->one(str); + error->one(FLERR,str); } } diff --git a/src/fix_ttm.cpp b/src/fix_ttm.cpp index ff037a7804..4bc35c5097 100644 --- a/src/fix_ttm.cpp +++ b/src/fix_ttm.cpp @@ -35,9 +35,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define MAXLINE 1024 /* ---------------------------------------------------------------------- */ @@ -45,7 +42,7 @@ using namespace LAMMPS_NS; FixTTM::FixTTM(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 15) error->all("Illegal fix ttm command"); + if (narg < 15) error->all(FLERR,"Illegal fix ttm command"); vector_flag = 1; size_vector = 2; @@ -70,38 +67,38 @@ FixTTM::FixTTM(LAMMPS *lmp, int narg, char **arg) : if (fpr == NULL) { char str[128]; sprintf(str,"Cannot open file %s",arg[13]); - error->one(str); + error->one(FLERR,str); } nfileevery = atoi(arg[14]); if (nfileevery) { - if (narg != 16) error->all("Illegal fix ttm command"); + if (narg != 16) error->all(FLERR,"Illegal fix ttm command"); MPI_Comm_rank(world,&me); if (me == 0) { fp = fopen(arg[15],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix ttm file %s",arg[15]); - error->one(str); + error->one(FLERR,str); } } } // error check - if (seed <= 0) error->all("Invalid random number seed in fix ttm command"); + if (seed <= 0) error->all(FLERR,"Invalid random number seed in fix ttm command"); if (electronic_specific_heat <= 0.0) - error->all("Fix ttm electronic_specific_heat must be > 0.0"); + error->all(FLERR,"Fix ttm electronic_specific_heat must be > 0.0"); if (electronic_density <= 0.0) - error->all("Fix ttm electronic_density must be > 0.0"); + error->all(FLERR,"Fix ttm electronic_density must be > 0.0"); if (electronic_thermal_conductivity < 0.0) - error->all("Fix ttm electronic_thermal_conductivity must be >= 0.0"); - if (gamma_p <= 0.0) error->all("Fix ttm gamma_p must be > 0.0"); - if (gamma_s < 0.0) error->all("Fix ttm gamma_s must be >= 0.0"); - if (v_0 < 0.0) error->all("Fix ttm v_0 must be >= 0.0"); + error->all(FLERR,"Fix ttm electronic_thermal_conductivity must be >= 0.0"); + if (gamma_p <= 0.0) error->all(FLERR,"Fix ttm gamma_p must be > 0.0"); + if (gamma_s < 0.0) error->all(FLERR,"Fix ttm gamma_s must be >= 0.0"); + if (v_0 < 0.0) error->all(FLERR,"Fix ttm v_0 must be >= 0.0"); if (nxnodes <= 0 || nynodes <= 0 || nznodes <= 0) - error->all("Fix ttm number of nodes must be > 0"); + error->all(FLERR,"Fix ttm number of nodes must be > 0"); v_0_sq = v_0*v_0; @@ -194,11 +191,11 @@ int FixTTM::setmask() void FixTTM::init() { if (domain->dimension == 2) - error->all("Cannot use fix ttm with 2d simulation"); + error->all(FLERR,"Cannot use fix ttm with 2d simulation"); if (domain->nonperiodic != 0) - error->all("Cannot use nonperiodic boundares with fix ttm"); + error->all(FLERR,"Cannot use nonperiodic boundares with fix ttm"); if (domain->triclinic) - error->all("Cannot use fix ttm with triclinic box"); + error->all(FLERR,"Cannot use fix ttm with triclinic box"); // set force prefactors @@ -262,7 +259,7 @@ void FixTTM::post_force(int vflag) while (iznode < 0) iznode += nznodes; if (T_electron[ixnode][iynode][iznode] < 0) - error->all("Electronic temperature dropped below zero"); + error->all(FLERR,"Electronic temperature dropped below zero"); double tsqrt = sqrt(T_electron[ixnode][iynode][iznode]); @@ -345,7 +342,7 @@ void FixTTM::read_initial_electron_temperatures() while (1) { if (fgets(line,MAXLINE,fpr) == NULL) break; sscanf(line,"%d %d %d %lg",&ixnode,&iynode,&iznode,&T_tmp); - if (T_tmp < 0.0) error->one("Fix ttm electron temperatures must be > 0.0"); + if (T_tmp < 0.0) error->one(FLERR,"Fix ttm electron temperatures must be > 0.0"); T_electron[ixnode][iynode][iznode] = T_tmp; T_initial_set[ixnode][iynode][iznode] = 1; } @@ -354,7 +351,7 @@ void FixTTM::read_initial_electron_temperatures() for (int iynode = 0; iynode < nynodes; iynode++) for (int iznode = 0; iznode < nznodes; iznode++) if (T_initial_set[ixnode][iynode][iznode] == 0) - error->one("Initial temperatures not all set in fix ttm"); + error->one(FLERR,"Initial temperatures not all set in fix ttm"); // close file @@ -420,7 +417,7 @@ void FixTTM::end_of_step() num_inner_timesteps = static_cast(update->dt/inner_dt) + 1; inner_dt = update->dt/double(num_inner_timesteps); if (num_inner_timesteps > 1000000) - error->warning("Too many inner timesteps in fix ttm",0); + error->warning(FLERR,"Too many inner timesteps in fix ttm",0); } for (int ith_inner_timestep = 0; ith_inner_timestep < num_inner_timesteps; diff --git a/src/fix_viscosity.cpp b/src/fix_viscosity.cpp index 8191e6d97c..04bcd3394c 100644 --- a/src/fix_viscosity.cpp +++ b/src/fix_viscosity.cpp @@ -32,20 +32,17 @@ using namespace LAMMPS_NS; #define BIG 1.0e10 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ FixViscosity::FixViscosity(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 7) error->all("Illegal fix viscosity command"); + if (narg < 7) error->all(FLERR,"Illegal fix viscosity command"); MPI_Comm_rank(world,&me); nevery = atoi(arg[3]); - if (nevery <= 0) error->all("Illegal fix viscosity command"); + if (nevery <= 0) error->all(FLERR,"Illegal fix viscosity command"); scalar_flag = 1; global_freq = nevery; @@ -54,15 +51,15 @@ FixViscosity::FixViscosity(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[4],"x") == 0) vdim = 0; else if (strcmp(arg[4],"y") == 0) vdim = 1; else if (strcmp(arg[4],"z") == 0) vdim = 2; - else error->all("Illegal fix viscosity command"); + else error->all(FLERR,"Illegal fix viscosity command"); if (strcmp(arg[5],"x") == 0) pdim = 0; else if (strcmp(arg[5],"y") == 0) pdim = 1; else if (strcmp(arg[5],"z") == 0) pdim = 2; - else error->all("Illegal fix viscosity command"); + else error->all(FLERR,"Illegal fix viscosity command"); nbin = atoi(arg[6]); - if (nbin % 2 || nbin <= 2) error->all("Illegal fix viscosity command"); + if (nbin % 2 || nbin <= 2) error->all(FLERR,"Illegal fix viscosity command"); // optional keywords @@ -72,18 +69,18 @@ FixViscosity::FixViscosity(LAMMPS *lmp, int narg, char **arg) : int iarg = 7; while (iarg < narg) { if (strcmp(arg[iarg],"swap") == 0) { - if (iarg+2 > narg) error->all("Illegal fix viscosity command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix viscosity command"); nswap = atoi(arg[iarg+1]); - if (nswap <= 0) error->all("Fix viscosity swap value must be positive"); + if (nswap <= 0) error->all(FLERR,"Fix viscosity swap value must be positive"); iarg += 2; } else if (strcmp(arg[iarg],"vtarget") == 0) { - if (iarg+2 > narg) error->all("Illegal fix viscosity command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix viscosity command"); if (strcmp(arg[iarg+1],"INF") == 0) vtarget = BIG; else vtarget = atof(arg[iarg+1]); if (vtarget <= 0.0) - error->all("Fix viscosity vtarget value must be positive"); + error->all(FLERR,"Fix viscosity vtarget value must be positive"); iarg += 2; - } else error->all("Illegal fix viscosity command"); + } else error->all(FLERR,"Illegal fix viscosity command"); } // initialize array sizes to nswap+1 so have space to shift values down @@ -126,7 +123,7 @@ void FixViscosity::init() for (int i = 0; i < modify->nfix; i++) { if (modify->fix[i] == this) foundme = 1; if (foundme && strcmp(modify->fix[i]->style,"ave/spatial") == 0 && me == 0) - error->warning("Fix viscosity comes before fix ave/spatial"); + error->warning(FLERR,"Fix viscosity comes before fix ave/spatial"); } // set bounds of 2 slabs in pdim diff --git a/src/fix_viscous.cpp b/src/fix_viscous.cpp index 770eee5593..5345268bb4 100644 --- a/src/fix_viscous.cpp +++ b/src/fix_viscous.cpp @@ -27,7 +27,7 @@ using namespace LAMMPS_NS; FixViscous::FixViscous(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 4) error->all("Illegal fix viscous command"); + if (narg < 4) error->all(FLERR,"Illegal fix viscous command"); double gamma_one = atof(arg[3]); gamma = new double[atom->ntypes+1]; @@ -38,14 +38,14 @@ FixViscous::FixViscous(LAMMPS *lmp, int narg, char **arg) : int iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"scale") == 0) { - if (iarg+3 > narg) error->all("Illegal fix viscous command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal fix viscous command"); int itype = atoi(arg[iarg+1]); double scale = atof(arg[iarg+2]); if (itype <= 0 || itype > atom->ntypes) - error->all("Illegal fix viscous command"); + error->all(FLERR,"Illegal fix viscous command"); gamma[itype] = gamma_one * scale; iarg += 3; - } else error->all("Illegal fix viscous command"); + } else error->all(FLERR,"Illegal fix viscous command"); } } diff --git a/src/fix_wall.cpp b/src/fix_wall.cpp index fdff4a11fb..2be0651690 100644 --- a/src/fix_wall.cpp +++ b/src/fix_wall.cpp @@ -45,13 +45,14 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) : nwall = 0; int scaleflag = 1; + fldflag = 0; int iarg = 3; while (iarg < narg) { if ((strcmp(arg[iarg],"xlo") == 0) || (strcmp(arg[iarg],"xhi") == 0) || (strcmp(arg[iarg],"ylo") == 0) || (strcmp(arg[iarg],"yhi") == 0) || (strcmp(arg[iarg],"zlo") == 0) || (strcmp(arg[iarg],"zhi") == 0)) { - if (iarg+5 > narg) error->all("Illegal fix wall command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal fix wall command"); int newwall; if (strcmp(arg[iarg],"xlo") == 0) newwall = XLO; @@ -63,7 +64,7 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) : for (int m = 0; m < nwall; m++) if (newwall == wallwhich[m]) - error->all("Wall defined twice in fix wall command"); + error->all(FLERR,"Wall defined twice in fix wall command"); wallwhich[nwall] = newwall; if (strcmp(arg[iarg+1],"EDGE") == 0) { @@ -89,35 +90,41 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) : iarg += 5; } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal fix wall command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix wall command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal fix wall command"); + else error->all(FLERR,"Illegal fix wall command"); iarg += 2; - } else error->all("Illegal fix wall command"); + } else if (strcmp(arg[iarg],"fld") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix wall command"); + if (strcmp(arg[iarg+1],"no") == 0) fldflag = 0; + else if (strcmp(arg[iarg+1],"yes") == 0) fldflag = 1; + else error->all(FLERR,"Illegal fix wall command"); + iarg += 2; + } else error->all(FLERR,"Illegal fix wall command"); } size_vector = nwall; // error check - if (nwall == 0) error->all("Illegal fix wall command"); + if (nwall == 0) error->all(FLERR,"Illegal fix wall command"); for (int m = 0; m < nwall; m++) if (cutoff[m] <= 0.0) - error->all("Fix wall cutoff <= 0.0"); + error->all(FLERR,"Fix wall cutoff <= 0.0"); for (int m = 0; m < nwall; m++) { if ((wallwhich[m] == XLO || wallwhich[m] == XHI) && domain->xperiodic) - error->all("Cannot use fix wall in periodic dimension"); + error->all(FLERR,"Cannot use fix wall in periodic dimension"); if ((wallwhich[m] == YLO || wallwhich[m] == YHI) && domain->yperiodic) - error->all("Cannot use fix wall in periodic dimension"); + error->all(FLERR,"Cannot use fix wall in periodic dimension"); if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->zperiodic) - error->all("Cannot use fix wall in periodic dimension"); + error->all(FLERR,"Cannot use fix wall in periodic dimension"); } for (int m = 0; m < nwall; m++) if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->dimension == 2) - error->all("Cannot use fix wall zlo/zhi for a 2d simulation"); + error->all(FLERR,"Cannot use fix wall zlo/zhi for a 2d simulation"); // scale coord for CONSTANT walls @@ -127,7 +134,7 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) : if (flag) { if (scaleflag && domain->lattice == NULL) - error->all("Use of fix wall with undefined lattice"); + error->all(FLERR,"Use of fix wall with undefined lattice"); double xscale,yscale,zscale; if (scaleflag) { @@ -169,7 +176,12 @@ FixWall::~FixWall() int FixWall::setmask() { int mask = 0; - mask |= POST_FORCE; + + // FLD implicit needs to invoke wall forces before pair style + + if (fldflag) mask != PRE_FORCE; + else mask |= POST_FORCE; + mask |= THERMO_ENERGY; mask |= POST_FORCE_RESPA; mask |= MIN_POST_FORCE; @@ -186,9 +198,9 @@ void FixWall::init() if (wallstyle[m] != VARIABLE) continue; varindex[m] = input->variable->find(varstr[m]); if (varindex[m] < 0) - error->all("Variable name for fix wall does not exist"); + error->all(FLERR,"Variable name for fix wall does not exist"); if (!input->variable->equalstyle(varindex[m])) - error->all("Variable for fix wall is invalid style"); + error->all(FLERR,"Variable for fix wall is invalid style"); } // setup coefficients @@ -204,7 +216,7 @@ void FixWall::init() void FixWall::setup(int vflag) { if (strstr(update->integrate_style,"verlet")) - post_force(vflag); + if (!fldflag) post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); post_force_respa(vflag,nlevels_respa-1,0); @@ -219,6 +231,15 @@ void FixWall::min_setup(int vflag) post_force(vflag); } +/* ---------------------------------------------------------------------- + only called if fldflag set, in place of post_force +------------------------------------------------------------------------- */ + +void FixWall::pre_force(int vflag) +{ + post_force(vflag); +} + /* ---------------------------------------------------------------------- */ void FixWall::post_force(int vflag) diff --git a/src/fix_wall.h b/src/fix_wall.h index 8c0c39d024..62ee69bc54 100644 --- a/src/fix_wall.h +++ b/src/fix_wall.h @@ -26,6 +26,7 @@ class FixWall : public Fix { virtual void init(); void setup(int); void min_setup(int); + void pre_force(int); void post_force(int); void post_force_respa(int, int, int); void min_post_force(int); @@ -45,6 +46,7 @@ class FixWall : public Fix { double ewall[7],ewall_all[7]; int nlevels_respa; double dt; + int fldflag; }; } diff --git a/src/fix_wall_harmonic.cpp b/src/fix_wall_harmonic.cpp index 4d0660a0f4..e7eb85b54c 100644 --- a/src/fix_wall_harmonic.cpp +++ b/src/fix_wall_harmonic.cpp @@ -61,5 +61,5 @@ void FixWallHarmonic::wall_particle(int m, int which, double coord) ewall[m+1] += fwall; } - if (onflag) error->one("Particle on or inside fix wall surface"); + if (onflag) error->one(FLERR,"Particle on or inside fix wall surface"); } diff --git a/src/fix_wall_lj126.cpp b/src/fix_wall_lj126.cpp index 132cea9c0b..47b0eba6f3 100644 --- a/src/fix_wall_lj126.cpp +++ b/src/fix_wall_lj126.cpp @@ -77,5 +77,5 @@ void FixWallLJ126::wall_particle(int m, int which, double coord) ewall[m+1] += fwall; } - if (onflag) error->one("Particle on or inside fix wall surface"); + if (onflag) error->one(FLERR,"Particle on or inside fix wall surface"); } diff --git a/src/fix_wall_lj93.cpp b/src/fix_wall_lj93.cpp index e106ec5e6a..0f8f9dff19 100644 --- a/src/fix_wall_lj93.cpp +++ b/src/fix_wall_lj93.cpp @@ -80,5 +80,5 @@ void FixWallLJ93::wall_particle(int m, int which, double coord) ewall[m+1] += fwall; } - if (onflag) error->one("Particle on or inside fix wall surface"); + if (onflag) error->one(FLERR,"Particle on or inside fix wall surface"); } diff --git a/src/fix_wall_reflect.cpp b/src/fix_wall_reflect.cpp index fa74faf48a..2251fd2662 100644 --- a/src/fix_wall_reflect.cpp +++ b/src/fix_wall_reflect.cpp @@ -34,7 +34,7 @@ enum{NONE,EDGE,CONSTANT,VARIABLE}; FixWallReflect::FixWallReflect(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 4) error->all("Illegal fix wall/reflect command"); + if (narg < 4) error->all(FLERR,"Illegal fix wall/reflect command"); // parse args @@ -46,7 +46,7 @@ FixWallReflect::FixWallReflect(LAMMPS *lmp, int narg, char **arg) : if ((strcmp(arg[iarg],"xlo") == 0) || (strcmp(arg[iarg],"xhi") == 0) || (strcmp(arg[iarg],"ylo") == 0) || (strcmp(arg[iarg],"yhi") == 0) || (strcmp(arg[iarg],"zlo") == 0) || (strcmp(arg[iarg],"zhi") == 0)) { - if (iarg+2 > narg) error->all("Illegal fix wall/reflect command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix wall/reflect command"); int newwall; if (strcmp(arg[iarg],"xlo") == 0) newwall = XLO; @@ -58,7 +58,7 @@ FixWallReflect::FixWallReflect(LAMMPS *lmp, int narg, char **arg) : for (int m = 0; m < nwall; m++) if (newwall == wallwhich[m]) - error->all("Wall defined twice in fix wall/reflect command"); + error->all(FLERR,"Wall defined twice in fix wall/reflect command"); wallwhich[nwall] = newwall; if (strcmp(arg[iarg+1],"EDGE") == 0) { @@ -81,30 +81,30 @@ FixWallReflect::FixWallReflect(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal wall/reflect command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal wall/reflect command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal fix wall/reflect command"); + else error->all(FLERR,"Illegal fix wall/reflect command"); iarg += 2; - } else error->all("Illegal fix wall/reflect command"); + } else error->all(FLERR,"Illegal fix wall/reflect command"); } // error check - if (nwall == 0) error->all("Illegal fix wall command"); + if (nwall == 0) error->all(FLERR,"Illegal fix wall command"); for (int m = 0; m < nwall; m++) { if ((wallwhich[m] == XLO || wallwhich[m] == XHI) && domain->xperiodic) - error->all("Cannot use fix wall/reflect in periodic dimension"); + error->all(FLERR,"Cannot use fix wall/reflect in periodic dimension"); if ((wallwhich[m] == YLO || wallwhich[m] == YHI) && domain->yperiodic) - error->all("Cannot use fix wall/reflect in periodic dimension"); + error->all(FLERR,"Cannot use fix wall/reflect in periodic dimension"); if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->zperiodic) - error->all("Cannot use fix wall/reflect in periodic dimension"); + error->all(FLERR,"Cannot use fix wall/reflect in periodic dimension"); } for (int m = 0; m < nwall; m++) if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->dimension == 2) - error->all("Cannot use fix wall/reflect zlo/zhi for a 2d simulation"); + error->all(FLERR,"Cannot use fix wall/reflect zlo/zhi for a 2d simulation"); // scale coord for CONSTANT walls @@ -114,7 +114,7 @@ FixWallReflect::FixWallReflect(LAMMPS *lmp, int narg, char **arg) : if (flag) { if (scaleflag && domain->lattice == NULL) - error->all("Use of fix wall with undefined lattice"); + error->all(FLERR,"Use of fix wall with undefined lattice"); double xscale,yscale,zscale; if (scaleflag) { @@ -166,9 +166,9 @@ void FixWallReflect::init() if (wallstyle[m] != VARIABLE) continue; varindex[m] = input->variable->find(varstr[m]); if (varindex[m] < 0) - error->all("Variable name for fix wall/reflect does not exist"); + error->all(FLERR,"Variable name for fix wall/reflect does not exist"); if (!input->variable->equalstyle(varindex[m])) - error->all("Variable for fix wall/reflect is invalid style"); + error->all(FLERR,"Variable for fix wall/reflect is invalid style"); } int nrigid = 0; @@ -176,7 +176,7 @@ void FixWallReflect::init() if (modify->fix[i]->rigid_flag) nrigid++; if (nrigid && comm->me == 0) - error->warning("Should not allow rigid bodies to bounce off " + error->warning(FLERR,"Should not allow rigid bodies to bounce off " "relecting walls"); } diff --git a/src/fix_wall_region.cpp b/src/fix_wall_region.cpp index c3e77cb5fe..151e20259d 100644 --- a/src/fix_wall_region.cpp +++ b/src/fix_wall_region.cpp @@ -34,7 +34,7 @@ enum{LJ93,LJ126,COLLOID,HARMONIC}; FixWallRegion::FixWallRegion(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 8) error->all("Illegal fix wall/region command"); + if (narg != 8) error->all(FLERR,"Illegal fix wall/region command"); scalar_flag = 1; vector_flag = 1; @@ -47,7 +47,7 @@ FixWallRegion::FixWallRegion(LAMMPS *lmp, int narg, char **arg) : iregion = domain->find_region(arg[3]); if (iregion == -1) - error->all("Region ID for fix wall/region does not exist"); + error->all(FLERR,"Region ID for fix wall/region does not exist"); int n = strlen(arg[3]) + 1; idregion = new char[n]; strcpy(idregion,arg[3]); @@ -56,13 +56,13 @@ FixWallRegion::FixWallRegion(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[4],"lj126") == 0) style = LJ126; else if (strcmp(arg[4],"colloid") == 0) style = COLLOID; else if (strcmp(arg[4],"harmonic") == 0) style = HARMONIC; - else error->all("Illegal fix wall/region command"); + else error->all(FLERR,"Illegal fix wall/region command"); epsilon = atof(arg[5]); sigma = atof(arg[6]); cutoff = atof(arg[7]); - if (cutoff <= 0.0) error->all("Fix wall/region cutoff <= 0.0"); + if (cutoff <= 0.0) error->all(FLERR,"Fix wall/region cutoff <= 0.0"); eflag = 0; ewall[0] = ewall[1] = ewall[2] = ewall[3] = 0.0; @@ -95,14 +95,14 @@ void FixWallRegion::init() iregion = domain->find_region(idregion); if (iregion == -1) - error->all("Region ID for fix wall/region does not exist"); + error->all(FLERR,"Region ID for fix wall/region does not exist"); // error checks for style COLLOID // insure all particles in group are extended particles if (style == COLLOID) { if (!atom->sphere_flag) - error->all("Fix wall/region colloid requires atom style sphere"); + error->all(FLERR,"Fix wall/region colloid requires atom style sphere"); double *radius = atom->radius; int *mask = atom->mask; @@ -116,7 +116,7 @@ void FixWallRegion::init() int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); if (flagall) - error->all("Fix wall/region colloid requires extended particles"); + error->all(FLERR,"Fix wall/region colloid requires extended particles"); } // setup coefficients for each style @@ -231,7 +231,7 @@ void FixWallRegion::post_force(int vflag) } } - if (onflag) error->one("Particle on or inside surface of region " + if (onflag) error->one(FLERR,"Particle on or inside surface of region " "used in fix wall/region"); } diff --git a/src/force.cpp b/src/force.cpp index 2282b9a676..2600b7dbf7 100644 --- a/src/force.cpp +++ b/src/force.cpp @@ -38,9 +38,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ Force::Force(LAMMPS *lmp) : Pointers(lmp) @@ -115,7 +112,7 @@ void Force::init() create a pair style, called from input script or restart file ------------------------------------------------------------------------- */ -void Force::create_pair(const char *style, char *suffix) +void Force::create_pair(const char *style, const char *suffix) { delete [] pair_style; if (pair) delete pair; @@ -140,7 +137,7 @@ void Force::create_pair(const char *style, char *suffix) generate a pair class, first with suffix appended ------------------------------------------------------------------------- */ -Pair *Force::new_pair(const char *style, char *suffix, int &sflag) +Pair *Force::new_pair(const char *style, const char *suffix, int &sflag) { if (suffix && lmp->suffix_enable) { sflag = 1; @@ -168,8 +165,7 @@ Pair *Force::new_pair(const char *style, char *suffix, int &sflag) #include "style_pair.h" #undef PAIR_CLASS - else error->all("Invalid pair style"); - + else error->all(FLERR,"Invalid pair style"); return NULL; } @@ -188,20 +184,7 @@ Pair *Force::pair_match(const char *word, int exact) if (exact && strcmp(pair_style,word) == 0) return pair; else if (!exact && strstr(pair_style,word)) return pair; - else if (strcmp(pair_style,"hybrid") == 0) { - PairHybrid *hybrid = (PairHybrid *) pair; - count = 0; - for (int i = 0; i < hybrid->nstyles; i++) { - if (exact && strcmp(hybrid->keywords[i],word) == 0) - return hybrid->styles[i]; - if (!exact && strstr(hybrid->keywords[i],word)) { - iwhich = i; - count++; - } - } - if (!exact && count == 1) return hybrid->styles[iwhich]; - - } else if (strcmp(pair_style,"hybrid/overlay") == 0) { + else if (strstr(pair_style,"hybrid/overlay")) { PairHybridOverlay *hybrid = (PairHybridOverlay *) pair; count = 0; for (int i = 0; i < hybrid->nstyles; i++) { @@ -213,6 +196,19 @@ Pair *Force::pair_match(const char *word, int exact) } } if (!exact && count == 1) return hybrid->styles[iwhich]; + + } else if (strstr(pair_style,"hybrid")) { + PairHybrid *hybrid = (PairHybrid *) pair; + count = 0; + for (int i = 0; i < hybrid->nstyles; i++) { + if (exact && strcmp(hybrid->keywords[i],word) == 0) + return hybrid->styles[i]; + if (!exact && strstr(hybrid->keywords[i],word)) { + iwhich = i; + count++; + } + } + if (!exact && count == 1) return hybrid->styles[iwhich]; } return NULL; @@ -222,23 +218,50 @@ Pair *Force::pair_match(const char *word, int exact) create a bond style, called from input script or restart file ------------------------------------------------------------------------- */ -void Force::create_bond(const char *style) +void Force::create_bond(const char *style, const char *suffix) { delete [] bond_style; if (bond) delete bond; - bond = new_bond(style); - int n = strlen(style) + 1; - bond_style = new char[n]; - strcpy(bond_style,style); + int sflag; + bond = new_bond(style,suffix,sflag); + + if (sflag) { + char estyle[256]; + sprintf(estyle,"%s/%s",style,suffix); + int n = strlen(estyle) + 1; + bond_style = new char[n]; + strcpy(bond_style,estyle); + } else { + int n = strlen(style) + 1; + bond_style = new char[n]; + strcpy(bond_style,style); + } } /* ---------------------------------------------------------------------- - generate a bond class + generate a bond class, fist with suffix appended ------------------------------------------------------------------------- */ -Bond *Force::new_bond(const char *style) +Bond *Force::new_bond(const char *style, const char *suffix, int &sflag) { + if (suffix && lmp->suffix_enable) { + sflag = 1; + char estyle[256]; + sprintf(estyle,"%s/%s",style,suffix); + + if (0) return NULL; + +#define BOND_CLASS +#define BondStyle(key,Class) \ + else if (strcmp(estyle,#key) == 0) return new Class(lmp); +#include "style_bond.h" +#undef BondStyle +#undef BOND_CLASS + } + + sflag = 0; + if (strcmp(style,"none") == 0) return NULL; #define BOND_CLASS @@ -247,7 +270,7 @@ Bond *Force::new_bond(const char *style) #include "style_bond.h" #undef BOND_CLASS - else error->all("Invalid bond style"); + else error->all(FLERR,"Invalid bond style"); return NULL; } @@ -270,23 +293,51 @@ Bond *Force::bond_match(const char *style) create an angle style, called from input script or restart file ------------------------------------------------------------------------- */ -void Force::create_angle(const char *style) +void Force::create_angle(const char *style, const char *suffix) { delete [] angle_style; if (angle) delete angle; - angle = new_angle(style); - int n = strlen(style) + 1; - angle_style = new char[n]; - strcpy(angle_style,style); + int sflag; + angle = new_angle(style,suffix,sflag); + + if (sflag) { + char estyle[256]; + sprintf(estyle,"%s/%s",style,suffix); + int n = strlen(estyle) + 1; + angle_style = new char[n]; + strcpy(angle_style,estyle); + } else { + int n = strlen(style) + 1; + angle_style = new char[n]; + strcpy(angle_style,style); + } } /* ---------------------------------------------------------------------- generate an angle class ------------------------------------------------------------------------- */ -Angle *Force::new_angle(const char *style) +Angle *Force::new_angle(const char *style, const char *suffix, int &sflag) { + if (suffix && lmp->suffix_enable) { + sflag = 1; + char estyle[256]; + sprintf(estyle,"%s/%s",style,suffix); + + if (0) return NULL; + +#define ANGLE_CLASS +#define AngleStyle(key,Class) \ + else if (strcmp(estyle,#key) == 0) return new Class(lmp); +#include "style_angle.h" +#undef AngleStyle +#undef ANGLE_CLASS + + } + + sflag = 0; + if (strcmp(style,"none") == 0) return NULL; #define ANGLE_CLASS @@ -295,7 +346,7 @@ Angle *Force::new_angle(const char *style) #include "style_angle.h" #undef ANGLE_CLASS - else error->all("Invalid angle style"); + else error->all(FLERR,"Invalid angle style"); return NULL; } @@ -303,32 +354,61 @@ Angle *Force::new_angle(const char *style) create a dihedral style, called from input script or restart file ------------------------------------------------------------------------- */ -void Force::create_dihedral(const char *style) +void Force::create_dihedral(const char *style, const char *suffix) { delete [] dihedral_style; if (dihedral) delete dihedral; - dihedral = new_dihedral(style); - int n = strlen(style) + 1; - dihedral_style = new char[n]; - strcpy(dihedral_style,style); + int sflag; + dihedral = new_dihedral(style,suffix,sflag); + + if (sflag) { + char estyle[256]; + sprintf(estyle,"%s/%s",style,suffix); + int n = strlen(estyle) + 1; + dihedral_style = new char[n]; + strcpy(dihedral_style,estyle); + } else { + int n = strlen(style) + 1; + dihedral_style = new char[n]; + strcpy(dihedral_style,style); + } } /* ---------------------------------------------------------------------- generate a dihedral class ------------------------------------------------------------------------- */ -Dihedral *Force::new_dihedral(const char *style) +Dihedral *Force::new_dihedral(const char *style, const char *suffix, int &sflag) { + if (suffix && lmp->suffix_enable) { + sflag = 1; + char estyle[256]; + sprintf(estyle,"%s/%s",style,suffix); + + if (0) return NULL; + +#define DIHEDRAL_CLASS +#define DihedralStyle(key,Class) \ + else if (strcmp(estyle,#key) == 0) return new Class(lmp); +#include "style_dihedral.h" +#undef DihedralStyle +#undef DIHEDRAL_CLASS + + } + + sflag = 0; + if (strcmp(style,"none") == 0) return NULL; #define DIHEDRAL_CLASS #define DihedralStyle(key,Class) \ else if (strcmp(style,#key) == 0) return new Class(lmp); #include "style_dihedral.h" +#undef DihedralStyle #undef DIHEDRAL_CLASS - else error->all("Invalid dihedral style"); + else error->all(FLERR,"Invalid dihedral style"); return NULL; } @@ -336,23 +416,51 @@ Dihedral *Force::new_dihedral(const char *style) create an improper style, called from input script or restart file ------------------------------------------------------------------------- */ -void Force::create_improper(const char *style) +void Force::create_improper(const char *style, const char *suffix) { delete [] improper_style; if (improper) delete improper; - improper = new_improper(style); - int n = strlen(style) + 1; - improper_style = new char[n]; - strcpy(improper_style,style); + int sflag; + improper = new_improper(style,suffix,sflag); + + if (sflag) { + char estyle[256]; + sprintf(estyle,"%s/%s",style,suffix); + int n = strlen(estyle) + 1; + improper_style = new char[n]; + strcpy(improper_style,estyle); + } else { + int n = strlen(style) + 1; + improper_style = new char[n]; + strcpy(improper_style,style); + } } /* ---------------------------------------------------------------------- generate a improper class ------------------------------------------------------------------------- */ -Improper *Force::new_improper(const char *style) +Improper *Force::new_improper(const char *style, const char *suffix, int &sflag) { + if (suffix && lmp->suffix_enable) { + sflag = 1; + char estyle[256]; + sprintf(estyle,"%s/%s",style,suffix); + + if (0) return NULL; + +#define IMPROPER_CLASS +#define ImproperStyle(key,Class) \ + else if (strcmp(estyle,#key) == 0) return new Class(lmp); +#include "style_improper.h" +#undef ImproperStyle +#undef IMPROPER_CLASS + + } + + sflag = 0; + if (strcmp(style,"none") == 0) return NULL; #define IMPROPER_CLASS @@ -361,7 +469,7 @@ Improper *Force::new_improper(const char *style) #include "style_improper.h" #undef IMPROPER_CLASS - else error->all("Invalid improper style"); + else error->all(FLERR,"Invalid improper style"); return NULL; } @@ -369,24 +477,61 @@ Improper *Force::new_improper(const char *style) new kspace style ------------------------------------------------------------------------- */ -void Force::create_kspace(int narg, char **arg) +void Force::create_kspace(int narg, char **arg, const char *suffix) { delete [] kspace_style; if (kspace) delete kspace; - if (strcmp(arg[0],"none") == 0) kspace = NULL; + int sflag; + kspace = new_kspace(narg,arg,suffix,sflag); + + if (sflag) { + char estyle[256]; + sprintf(estyle,"%s/%s",arg[0],suffix); + int n = strlen(estyle) + 1; + kspace_style = new char[n]; + strcpy(kspace_style,estyle); + } else { + int n = strlen(arg[0]) + 1; + kspace_style = new char[n]; + strcpy(kspace_style,arg[0]); + } +} + +/* ---------------------------------------------------------------------- + generate a kspace class +------------------------------------------------------------------------- */ + +KSpace *Force::new_kspace(int narg, char **arg, const char *suffix, int &sflag) +{ + if (suffix && lmp->suffix_enable) { + sflag = 1; + char estyle[256]; + sprintf(estyle,"%s/%s",arg[0],suffix); + + if (0) return NULL; #define KSPACE_CLASS #define KSpaceStyle(key,Class) \ - else if (strcmp(arg[0],#key) == 0) kspace = new Class(lmp,narg-1,&arg[1]); + else if (strcmp(estyle,#key) == 0) return new Class(lmp,narg-1,&arg[1]); +#include "style_kspace.h" +#undef KSpaceStyle +#undef KSPACE_CLASS + + } + + sflag = 0; + + if (strcmp(arg[0],"none") == 0) return NULL; + +#define KSPACE_CLASS +#define KSpaceStyle(key,Class) \ + else if (strcmp(arg[0],#key) == 0) return new Class(lmp,narg-1,&arg[1]); #include "style_kspace.h" #undef KSPACE_CLASS - else error->all("Invalid kspace style"); - - int n = strlen(arg[0]) + 1; - kspace_style = new char[n]; - strcpy(kspace_style,arg[0]); + else error->all(FLERR,"Invalid kspace style"); + return NULL; } /* ---------------------------------------------------------------------- @@ -395,12 +540,12 @@ void Force::create_kspace(int narg, char **arg) void Force::set_special(int narg, char **arg) { - if (narg == 0) error->all("Illegal special_bonds command"); + if (narg == 0) error->all(FLERR,"Illegal special_bonds command"); int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"amber") == 0) { - if (iarg+1 > narg) error->all("Illegal special_bonds command"); + if (iarg+1 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = 0.0; special_lj[2] = 0.0; special_lj[3] = 0.5; @@ -409,7 +554,7 @@ void Force::set_special(int narg, char **arg) special_coul[3] = 5.0/6.0; iarg += 1; } else if (strcmp(arg[iarg],"charmm") == 0) { - if (iarg+1 > narg) error->all("Illegal special_bonds command"); + if (iarg+1 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = 0.0; special_lj[2] = 0.0; special_lj[3] = 0.0; @@ -418,7 +563,7 @@ void Force::set_special(int narg, char **arg) special_coul[3] = 0.0; iarg += 1; } else if (strcmp(arg[iarg],"dreiding") == 0) { - if (iarg+1 > narg) error->all("Illegal special_bonds command"); + if (iarg+1 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = 0.0; special_lj[2] = 0.0; special_lj[3] = 1.0; @@ -427,7 +572,7 @@ void Force::set_special(int narg, char **arg) special_coul[3] = 1.0; iarg += 1; } else if (strcmp(arg[iarg],"fene") == 0) { - if (iarg+1 > narg) error->all("Illegal special_bonds command"); + if (iarg+1 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = 0.0; special_lj[2] = 1.0; special_lj[3] = 1.0; @@ -436,48 +581,48 @@ void Force::set_special(int narg, char **arg) special_coul[3] = 1.0; iarg += 1; } else if (strcmp(arg[iarg],"lj/coul") == 0) { - if (iarg+4 > narg) error->all("Illegal special_bonds command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = special_coul[1] = atof(arg[iarg+1]); special_lj[2] = special_coul[2] = atof(arg[iarg+2]); special_lj[3] = special_coul[3] = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"lj") == 0) { - if (iarg+4 > narg) error->all("Illegal special_bonds command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = atof(arg[iarg+1]); special_lj[2] = atof(arg[iarg+2]); special_lj[3] = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"coul") == 0) { - if (iarg+4 > narg) error->all("Illegal special_bonds command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal special_bonds command"); special_coul[1] = atof(arg[iarg+1]); special_coul[2] = atof(arg[iarg+2]); special_coul[3] = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"angle") == 0) { - if (iarg+2 > narg) error->all("Illegal special_bonds command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal special_bonds command"); if (strcmp(arg[iarg+1],"no") == 0) special_angle = 0; else if (strcmp(arg[iarg+1],"yes") == 0) special_angle = 1; - else error->all("Illegal special_bonds command"); + else error->all(FLERR,"Illegal special_bonds command"); iarg += 2; } else if (strcmp(arg[iarg],"dihedral") == 0) { - if (iarg+2 > narg) error->all("Illegal special_bonds command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal special_bonds command"); if (strcmp(arg[iarg+1],"no") == 0) special_dihedral = 0; else if (strcmp(arg[iarg+1],"yes") == 0) special_dihedral = 1; - else error->all("Illegal special_bonds command"); + else error->all(FLERR,"Illegal special_bonds command"); iarg += 2; } else if (strcmp(arg[iarg],"extra") == 0) { - if (iarg+2 > narg) error->all("Illegal special_bonds command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal special_bonds command"); special_extra = atoi(arg[iarg+1]); iarg += 2; - } else error->all("Illegal special_bonds command"); + } else error->all(FLERR,"Illegal special_bonds command"); } for (int i = 1; i <= 3; i++) if (special_lj[i] < 0.0 || special_lj[i] > 1.0 || special_coul[i] < 0.0 || special_coul[i] > 1.0) - error->all("Illegal special_bonds command"); + error->all(FLERR,"Illegal special_bonds command"); - if (special_extra < 0) error->all("Illegal special_bonds command"); + if (special_extra < 0) error->all(FLERR,"Illegal special_bonds command"); } /* ---------------------------------------------------------------------- @@ -524,7 +669,7 @@ double Force::numeric(char *str) if (isdigit(str[i])) continue; if (str[i] == '-' || str[i] == '+' || str[i] == '.') continue; if (str[i] == 'e' || str[i] == 'E') continue; - error->all("Expected floating point parameter in " + error->all(FLERR,"Expected floating point parameter in " "input script or data file"); } @@ -542,7 +687,7 @@ int Force::inumeric(char *str) int n = strlen(str); for (int i = 0; i < n; i++) { if (isdigit(str[i]) || str[i] == '-' || str[i] == '+') continue; - error->all("Expected integer parameter in input script or data file"); + error->all(FLERR,"Expected integer parameter in input script or data file"); } return atoi(str); diff --git a/src/force.h b/src/force.h index df214c974f..a7089070d2 100644 --- a/src/force.h +++ b/src/force.h @@ -21,6 +21,7 @@ namespace LAMMPS_NS { class Force : protected Pointers { public: double boltz; // Boltzmann constant (eng/degree-K) + double hplanck; // Planck's constant (energy-time) double mvv2e; // conversion of mv^2 to energy double ftm2v; // conversion of ft/m to velocity double mv2d; // conversion of mass/volume to density @@ -68,24 +69,25 @@ class Force : protected Pointers { ~Force(); void init(); - void create_pair(const char *, char *suffix = NULL); - class Pair *new_pair(const char *, char *, int &); + void create_pair(const char *, const char *suffix = NULL); + class Pair *new_pair(const char *, const char *, int &); class Pair *pair_match(const char *, int); - void create_bond(const char *); - class Bond *new_bond(const char *); + void create_bond(const char *, const char *suffix = NULL); + class Bond *new_bond(const char *, const char *, int &); class Bond *bond_match(const char *); - void create_angle(const char *); - class Angle *new_angle(const char *); + void create_angle(const char *, const char *suffix = NULL); + class Angle *new_angle(const char *, const char *, int &); - void create_dihedral(const char *); - class Dihedral *new_dihedral(const char *); + void create_dihedral(const char *, const char *suffix = NULL); + class Dihedral *new_dihedral(const char *, const char *, int &); - void create_improper(const char *); - class Improper *new_improper(const char *); + void create_improper(const char *, const char *suffix = NULL); + class Improper *new_improper(const char *, const char *, int &); - void create_kspace(int, char **); + void create_kspace(int, char **, const char *suffix = NULL); + class KSpace *new_kspace(int, char **, const char *, int &); void set_special(int, char **); void bounds(char *, int, int &, int &); diff --git a/src/group.cpp b/src/group.cpp index 7ab12b35f3..5d6073bae0 100644 --- a/src/group.cpp +++ b/src/group.cpp @@ -38,9 +38,6 @@ enum{LT,LE,GT,GE,EQ,NEQ,BETWEEN}; #define BIG 1.0e20 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- initialize group memory ------------------------------------------------------------------------- */ @@ -87,27 +84,27 @@ void Group::assign(int narg, char **arg) int i; if (domain->box_exist == 0) - error->all("Group command before simulation box is defined"); - if (narg < 2) error->all("Illegal group command"); + error->all(FLERR,"Group command before simulation box is defined"); + if (narg < 2) error->all(FLERR,"Illegal group command"); // delete the group if not being used elsewhere // clear mask of each atom assigned to this group if (strcmp(arg[1],"delete") == 0) { int igroup = find(arg[0]); - if (igroup == -1) error->all("Could not find group delete group ID"); - if (igroup == 0) error->all("Cannot delete group all"); + if (igroup == -1) error->all(FLERR,"Could not find group delete group ID"); + if (igroup == 0) error->all(FLERR,"Cannot delete group all"); for (i = 0; i < modify->nfix; i++) if (modify->fix[i]->igroup == igroup) - error->all("Cannot delete group currently used by a fix"); + error->all(FLERR,"Cannot delete group currently used by a fix"); for (i = 0; i < modify->ncompute; i++) if (modify->compute[i]->igroup == igroup) - error->all("Cannot delete group currently used by a compute"); + error->all(FLERR,"Cannot delete group currently used by a compute"); for (i = 0; i < output->ndump; i++) if (output->dump[i]->igroup == igroup) - error->all("Cannot delete group currently used by a dump"); + error->all(FLERR,"Cannot delete group currently used by a dump"); if (atom->firstgroupname && strcmp(arg[0],atom->firstgroupname) == 0) - error->all("Cannot delete group currently used by atom_modify first"); + error->all(FLERR,"Cannot delete group currently used by atom_modify first"); int *mask = atom->mask; int nlocal = atom->nlocal; @@ -127,7 +124,7 @@ void Group::assign(int narg, char **arg) int igroup = find(arg[0]); if (igroup == -1) { - if (ngroup == MAX_GROUP) error->all("Too many groups"); + if (ngroup == MAX_GROUP) error->all(FLERR,"Too many groups"); igroup = find_unused(); int n = strlen(arg[0]) + 1; names[igroup] = new char[n]; @@ -146,10 +143,10 @@ void Group::assign(int narg, char **arg) if (strcmp(arg[1],"region") == 0) { - if (narg != 3) error->all("Illegal group command"); + if (narg != 3) error->all(FLERR,"Illegal group command"); int iregion = domain->find_region(arg[2]); - if (iregion == -1) error->all("Group region ID does not exist"); + if (iregion == -1) error->all(FLERR,"Group region ID does not exist"); domain->init(); for (i = 0; i < nlocal; i++) @@ -163,13 +160,13 @@ void Group::assign(int narg, char **arg) strcmp(arg[2],"<=") == 0 || strcmp(arg[2],">=") == 0 || strcmp(arg[2],"<>") == 0)) { - if (narg < 4 || narg > 5) error->all("Illegal group command"); + if (narg < 4 || narg > 5) error->all(FLERR,"Illegal group command"); int category,condition,bound1,bound2; if (strcmp(arg[1],"type") == 0) category = TYPE; else if (strcmp(arg[1],"molecule") == 0) category = MOLECULE; else if (strcmp(arg[1],"id") == 0) category = ID; - else error->all("Illegal group command"); + else error->all(FLERR,"Illegal group command"); if (strcmp(arg[2],"<") == 0) condition = LT; else if (strcmp(arg[2],"<=") == 0) condition = LE; @@ -178,13 +175,13 @@ void Group::assign(int narg, char **arg) else if (strcmp(arg[2],"==") == 0) condition = EQ; else if (strcmp(arg[2],"!=") == 0) condition = NEQ; else if (strcmp(arg[2],"<>") == 0) condition = BETWEEN; - else error->all("Illegal group command"); + else error->all(FLERR,"Illegal group command"); bound1 = atoi(arg[3]); bound2 = -1; if (condition == BETWEEN) { - if (narg != 5) error->all("Illegal group command"); + if (narg != 5) error->all(FLERR,"Illegal group command"); bound2 = atoi(arg[4]); } @@ -217,7 +214,7 @@ void Group::assign(int narg, char **arg) } else if (strcmp(arg[1],"type") == 0 || strcmp(arg[1],"molecule") == 0 || strcmp(arg[1],"id") == 0) { - if (narg < 3) error->all("Illegal group command"); + if (narg < 3) error->all(FLERR,"Illegal group command"); int length = narg-2; int *list = new int[length]; @@ -226,7 +223,7 @@ void Group::assign(int narg, char **arg) if (strcmp(arg[1],"type") == 0) category = TYPE; else if (strcmp(arg[1],"molecule") == 0) category = MOLECULE; else if (strcmp(arg[1],"id") == 0) category = ID; - else error->all("Illegal group command"); + else error->all(FLERR,"Illegal group command"); length = narg - 2; for (int iarg = 2; iarg < narg; iarg++) list[iarg-2] = atoi(arg[iarg]); @@ -248,7 +245,7 @@ void Group::assign(int narg, char **arg) } else if (strcmp(arg[1],"subtract") == 0) { - if (narg < 4) error->all("Illegal group command"); + if (narg < 4) error->all(FLERR,"Illegal group command"); int length = narg-2; int *list = new int[length]; @@ -256,7 +253,7 @@ void Group::assign(int narg, char **arg) int jgroup; for (int iarg = 2; iarg < narg; iarg++) { jgroup = find(arg[iarg]); - if (jgroup == -1) error->all("Group ID does not exist"); + if (jgroup == -1) error->all(FLERR,"Group ID does not exist"); list[iarg-2] = jgroup; } @@ -284,7 +281,7 @@ void Group::assign(int narg, char **arg) } else if (strcmp(arg[1],"union") == 0) { - if (narg < 3) error->all("Illegal group command"); + if (narg < 3) error->all(FLERR,"Illegal group command"); int length = narg-2; int *list = new int[length]; @@ -292,7 +289,7 @@ void Group::assign(int narg, char **arg) int jgroup; for (int iarg = 2; iarg < narg; iarg++) { jgroup = find(arg[iarg]); - if (jgroup == -1) error->all("Group ID does not exist"); + if (jgroup == -1) error->all(FLERR,"Group ID does not exist"); list[iarg-2] = jgroup; } @@ -312,7 +309,7 @@ void Group::assign(int narg, char **arg) } else if (strcmp(arg[1],"intersect") == 0) { - if (narg < 4) error->all("Illegal group command"); + if (narg < 4) error->all(FLERR,"Illegal group command"); int length = narg-2; int *list = new int[length]; @@ -320,7 +317,7 @@ void Group::assign(int narg, char **arg) int jgroup; for (int iarg = 2; iarg < narg; iarg++) { jgroup = find(arg[iarg]); - if (jgroup == -1) error->all("Group ID does not exist"); + if (jgroup == -1) error->all(FLERR,"Group ID does not exist"); list[iarg-2] = jgroup; } @@ -341,7 +338,7 @@ void Group::assign(int narg, char **arg) // not a valid group style - } else error->all("Illegal group command"); + } else error->all(FLERR,"Illegal group command"); // print stats for changed group @@ -374,7 +371,7 @@ void Group::create(char *name, int *flag) int igroup = find(name); if (igroup == -1) { - if (ngroup == MAX_GROUP) error->all("Too many groups"); + if (ngroup == MAX_GROUP) error->all(FLERR,"Too many groups"); igroup = find_unused(); int n = strlen(name) + 1; names[igroup] = new char[n]; diff --git a/src/improper.cpp b/src/improper.cpp index 7b82590d0a..9a1f47e5ce 100644 --- a/src/improper.cpp +++ b/src/improper.cpp @@ -14,6 +14,7 @@ #include "math.h" #include "improper.h" #include "atom.h" +#include "comm.h" #include "force.h" #include "memory.h" #include "error.h" @@ -27,7 +28,6 @@ Improper::Improper(LAMMPS *lmp) : Pointers(lmp) energy = 0.0; allocated = 0; - PI = 4.0*atan(1.0); maxeatom = maxvatom = 0; eatom = NULL; @@ -48,9 +48,9 @@ Improper::~Improper() void Improper::init() { - if (!allocated) error->all("Improper coeffs are not set"); + if (!allocated) error->all(FLERR,"Improper coeffs are not set"); for (int i = 1; i <= atom->nimpropertypes; i++) - if (setflag[i] == 0) error->all("All improper coeffs are not set"); + if (setflag[i] == 0) error->all(FLERR,"All improper coeffs are not set"); } /* ---------------------------------------------------------------------- @@ -77,12 +77,12 @@ void Improper::ev_setup(int eflag, int vflag) if (eflag_atom && atom->nmax > maxeatom) { maxeatom = atom->nmax; memory->destroy(eatom); - memory->create(eatom,maxeatom,"bond:eatom"); + memory->create(eatom,comm->nthreads*maxeatom,"bond:eatom"); } if (vflag_atom && atom->nmax > maxvatom) { maxvatom = atom->nmax; memory->destroy(vatom); - memory->create(vatom,maxvatom,6,"bond:vatom"); + memory->create(vatom,comm->nthreads*maxvatom,6,"bond:vatom"); } // zero accumulators @@ -237,7 +237,7 @@ void Improper::ev_tally(int i1, int i2, int i3, int i4, double Improper::memory_usage() { - double bytes = maxeatom * sizeof(double); - bytes += maxvatom*6 * sizeof(double); + double bytes = comm->nthreads*maxeatom * sizeof(double); + bytes += comm->nthreads*maxvatom*6 * sizeof(double); return bytes; } diff --git a/src/improper.h b/src/improper.h index 711f124c20..d766015e34 100644 --- a/src/improper.h +++ b/src/improper.h @@ -20,6 +20,7 @@ namespace LAMMPS_NS { class Improper : protected Pointers { + friend class ThrOMP; public: int allocated; int *setflag; @@ -38,8 +39,6 @@ class Improper : protected Pointers { virtual double memory_usage(); protected: - double PI; - int evflag; int eflag_either,eflag_global,eflag_atom; int vflag_either,vflag_global,vflag_atom; diff --git a/src/input.cpp b/src/input.cpp index fa10ea0064..457faf4ac8 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -46,7 +46,7 @@ #include "error.h" #include "memory.h" -#ifdef LMP_OPENMP +#ifdef _OPENMP #include "omp.h" #endif @@ -89,7 +89,7 @@ Input::Input(LAMMPS *lmp, int argc, char **argv) : Pointers(lmp) int iarg = 0; while (iarg < argc) { if (strcmp(argv[iarg],"-var") == 0 || strcmp(argv[iarg],"-v") == 0) { - int jarg = iarg+2; + int jarg = iarg+3; while (jarg < argc && argv[jarg][0] != '-') jarg++; variable->set(argv[iarg+1],jarg-iarg-2,&argv[iarg+2]); iarg = jarg; @@ -157,7 +157,7 @@ void Input::file() MPI_Bcast(&n,1,MPI_INT,0,world); if (n == 0) { - if (label_active) error->all("Label wasn't found in input script"); + if (label_active) error->all(FLERR,"Label wasn't found in input script"); if (me == 0) { if (infile != stdin) fclose(infile); nfile--; @@ -175,7 +175,7 @@ void Input::file() if (n == MAXLINE) { char str[MAXLINE+32]; sprintf(str,"Input line too long: %s",line); - error->all(str); + error->all(FLERR,str); } // echo the command unless scanning for label @@ -200,7 +200,7 @@ void Input::file() if (execute_command()) { char str[MAXLINE]; sprintf(str,"Unknown command: %s",line); - error->all(str); + error->all(FLERR,str); } } } @@ -217,13 +217,13 @@ void Input::file(const char *filename) if (me == 0) { if (nfile > 1) - error->one("Another input script is already being processed"); + error->one(FLERR,"Another input script is already being processed"); if (infile != stdin) fclose(infile); infile = fopen(filename,"r"); if (infile == NULL) { char str[128]; sprintf(str,"Cannot open input script %s",filename); - error->one(str); + error->one(FLERR,str); } infiles[0] = infile; } else infile = NULL; @@ -262,7 +262,7 @@ char *Input::one(const char *single) if (execute_command()) { char str[MAXLINE]; sprintf(str,"Unknown command: %s",line); - error->all(str); + error->all(FLERR,str); } return command; @@ -339,7 +339,7 @@ void Input::parse() narg++; } - if (quote) error->all("Unbalanced quotes in input line"); + if (quote) error->all(FLERR,"Unbalanced quotes in input line"); } /* ---------------------------------------------------------------------- @@ -367,7 +367,7 @@ void Input::substitute(char *str, int flag) var = ptr+2; int i = 0; while (var[i] != '\0' && var[i] != '}') i++; - if (var[i] == '\0') error->one("Invalid variable name"); + if (var[i] == '\0') error->one(FLERR,"Invalid variable name"); var[i] = '\0'; beyond = ptr + strlen(var) + 3; } else { @@ -377,15 +377,15 @@ void Input::substitute(char *str, int flag) beyond = ptr + strlen(var) + 1; } value = variable->retrieve(var); - if (value == NULL) error->one("Substitution for illegal variable"); + if (value == NULL) error->one(FLERR,"Substitution for illegal variable"); *ptr = '\0'; strcpy(work,str); if (strlen(work)+strlen(value) >= MAXLINE) - error->one("Input line too long after variable substitution"); + error->one(FLERR,"Input line too long after variable substitution"); strcat(work,value); if (strlen(work)+strlen(beyond) >= MAXLINE) - error->one("Input line too long after variable substitution"); + error->one(FLERR,"Input line too long after variable substitution"); strcat(work,beyond); strcpy(str,work); ptr += strlen(value); @@ -506,7 +506,7 @@ int Input::execute_command() void Input::clear() { - if (narg > 0) error->all("Illegal clear command"); + if (narg > 0) error->all(FLERR,"Illegal clear command"); lmp->destroy(); lmp->create(); } @@ -515,7 +515,7 @@ void Input::clear() void Input::echo() { - if (narg != 1) error->all("Illegal echo command"); + if (narg != 1) error->all(FLERR,"Illegal echo command"); if (strcmp(arg[0],"none") == 0) { echo_screen = 0; @@ -529,14 +529,14 @@ void Input::echo() } else if (strcmp(arg[0],"both") == 0) { echo_screen = 1; echo_log = 1; - } else error->all("Illegal echo command"); + } else error->all(FLERR,"Illegal echo command"); } /* ---------------------------------------------------------------------- */ void Input::ifthenelse() { - if (narg < 3) error->all("Illegal if command"); + if (narg < 3) error->all(FLERR,"Illegal if command"); // substitute for variables in Boolean expression for "if" // in case expression was enclosed in quotes @@ -552,7 +552,7 @@ void Input::ifthenelse() // bound "then" commands - if (strcmp(arg[1],"then") != 0) error->all("Illegal if command"); + if (strcmp(arg[1],"then") != 0) error->all(FLERR,"Illegal if command"); int first = 2; int iarg = first; @@ -567,13 +567,13 @@ void Input::ifthenelse() if (btest != 0.0) { int ncommands = last-first + 1; - if (ncommands <= 0) error->all("Illegal if command"); + if (ncommands <= 0) error->all(FLERR,"Illegal if command"); char **commands = new char*[ncommands]; ncommands = 0; for (int i = first; i <= last; i++) { int n = strlen(arg[i]) + 1; - if (n == 1) error->all("Illegal if command"); + if (n == 1) error->all(FLERR,"Illegal if command"); commands[ncommands] = new char[n]; strcpy(commands[ncommands],arg[i]); ncommands++; @@ -601,7 +601,7 @@ void Input::ifthenelse() // bound and execute "elif" or "else" commands while (1) { - if (iarg+2 > narg) error->all("Illegal if command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal if command"); if (strcmp(arg[iarg],"elif") == 0) { strcpy(scopy,arg[iarg+1]); substitute(scopy,0); @@ -621,13 +621,13 @@ void Input::ifthenelse() if (btest == 0.0) continue; int ncommands = last-first + 1; - if (ncommands <= 0) error->all("Illegal if command"); + if (ncommands <= 0) error->all(FLERR,"Illegal if command"); char **commands = new char*[ncommands]; ncommands = 0; for (int i = first; i <= last; i++) { int n = strlen(arg[i]) + 1; - if (n == 1) error->all("Illegal if command"); + if (n == 1) error->all(FLERR,"Illegal if command"); commands[ncommands] = new char[n]; strcpy(commands[ncommands],arg[i]); ncommands++; @@ -651,7 +651,7 @@ void Input::ifthenelse() void Input::include() { - if (narg != 1) error->all("Illegal include command"); + if (narg != 1) error->all(FLERR,"Illegal include command"); if (me == 0) { if (nfile == maxfile) { @@ -663,7 +663,7 @@ void Input::include() if (infile == NULL) { char str[128]; sprintf(str,"Cannot open input script %s",arg[0]); - error->one(str); + error->one(FLERR,str); } infiles[nfile++] = infile; } @@ -673,7 +673,7 @@ void Input::include() void Input::jump() { - if (narg < 1 || narg > 2) error->all("Illegal jump command"); + if (narg < 1 || narg > 2) error->all(FLERR,"Illegal jump command"); if (jump_skip) { jump_skip = 0; @@ -688,7 +688,7 @@ void Input::jump() if (infile == NULL) { char str[128]; sprintf(str,"Cannot open input script %s",arg[0]); - error->one(str); + error->one(FLERR,str); } infiles[nfile-1] = infile; } @@ -707,7 +707,7 @@ void Input::jump() void Input::label() { - if (narg != 1) error->all("Illegal label command"); + if (narg != 1) error->all(FLERR,"Illegal label command"); if (label_active && strcmp(labelstr,arg[0]) == 0) label_active = 0; } @@ -715,7 +715,7 @@ void Input::label() void Input::log() { - if (narg != 1) error->all("Illegal log command"); + if (narg != 1) error->all(FLERR,"Illegal log command"); if (me == 0) { if (logfile) fclose(logfile); @@ -725,7 +725,7 @@ void Input::log() if (logfile == NULL) { char str[128]; sprintf(str,"Cannot open logfile %s",arg[0]); - error->one(str); + error->one(FLERR,str); } } if (universe->nworlds == 1) universe->ulogfile = logfile; @@ -743,7 +743,7 @@ void Input::next_command() void Input::print() { - if (narg != 1) error->all("Illegal print command"); + if (narg != 1) error->all(FLERR,"Illegal print command"); // substitute for $ variables (no printing) and print arg @@ -758,14 +758,14 @@ void Input::print() void Input::shell() { - if (narg < 1) error->all("Illegal shell command"); + if (narg < 1) error->all(FLERR,"Illegal shell command"); if (strcmp(arg[0],"cd") == 0) { - if (narg != 2) error->all("Illegal shell command"); + if (narg != 2) error->all(FLERR,"Illegal shell command"); chdir(arg[1]); } else if (strcmp(arg[0],"mkdir") == 0) { - if (narg < 2) error->all("Illegal shell command"); + if (narg < 2) error->all(FLERR,"Illegal shell command"); #if !defined(WINDOWS) && !defined(__MINGW32_VERSION) if (me == 0) for (int i = 1; i < narg; i++) @@ -773,16 +773,16 @@ void Input::shell() #endif } else if (strcmp(arg[0],"mv") == 0) { - if (narg != 3) error->all("Illegal shell command"); + if (narg != 3) error->all(FLERR,"Illegal shell command"); if (me == 0) rename(arg[1],arg[2]); } else if (strcmp(arg[0],"rm") == 0) { - if (narg < 2) error->all("Illegal shell command"); + if (narg < 2) error->all(FLERR,"Illegal shell command"); if (me == 0) for (int i = 1; i < narg; i++) unlink(arg[i]); } else if (strcmp(arg[0],"rmdir") == 0) { - if (narg < 2) error->all("Illegal shell command"); + if (narg < 2) error->all(FLERR,"Illegal shell command"); if (me == 0) for (int i = 1; i < narg; i++) rmdir(arg[i]); @@ -819,11 +819,11 @@ void Input::variable_command() void Input::angle_coeff() { if (domain->box_exist == 0) - error->all("Angle_coeff command before simulation box is defined"); + error->all(FLERR,"Angle_coeff command before simulation box is defined"); if (force->angle == NULL) - error->all("Angle_coeff command before angle_style is defined"); + error->all(FLERR,"Angle_coeff command before angle_style is defined"); if (atom->avec->angles_allow == 0) - error->all("Angle_coeff command when no angles allowed"); + error->all(FLERR,"Angle_coeff command when no angles allowed"); force->angle->coeff(narg,arg); } @@ -831,10 +831,10 @@ void Input::angle_coeff() void Input::angle_style() { - if (narg < 1) error->all("Illegal angle_style command"); + if (narg < 1) error->all(FLERR,"Illegal angle_style command"); if (atom->avec->angles_allow == 0) - error->all("Angle_style command when no angles allowed"); - force->create_angle(arg[0]); + error->all(FLERR,"Angle_style command when no angles allowed"); + force->create_angle(arg[0],lmp->suffix); if (force->angle) force->angle->settings(narg-1,&arg[1]); } @@ -849,9 +849,9 @@ void Input::atom_modify() void Input::atom_style() { - if (narg < 1) error->all("Illegal atom_style command"); + if (narg < 1) error->all(FLERR,"Illegal atom_style command"); if (domain->box_exist) - error->all("Atom_style command after simulation box is defined"); + error->all(FLERR,"Atom_style command after simulation box is defined"); atom->create_avec(arg[0],narg-1,&arg[1],lmp->suffix); } @@ -860,11 +860,11 @@ void Input::atom_style() void Input::bond_coeff() { if (domain->box_exist == 0) - error->all("Bond_coeff command before simulation box is defined"); + error->all(FLERR,"Bond_coeff command before simulation box is defined"); if (force->bond == NULL) - error->all("Bond_coeff command before bond_style is defined"); + error->all(FLERR,"Bond_coeff command before bond_style is defined"); if (atom->avec->bonds_allow == 0) - error->all("Bond_coeff command when no bonds allowed"); + error->all(FLERR,"Bond_coeff command when no bonds allowed"); force->bond->coeff(narg,arg); } @@ -872,10 +872,10 @@ void Input::bond_coeff() void Input::bond_style() { - if (narg < 1) error->all("Illegal bond_style command"); + if (narg < 1) error->all(FLERR,"Illegal bond_style command"); if (atom->avec->bonds_allow == 0) - error->all("Bond_style command when no bonds allowed"); - force->create_bond(arg[0]); + error->all(FLERR,"Bond_style command when no bonds allowed"); + force->create_bond(arg[0],lmp->suffix); if (force->bond) force->bond->settings(narg-1,&arg[1]); } @@ -884,7 +884,7 @@ void Input::bond_style() void Input::boundary() { if (domain->box_exist) - error->all("Boundary command after simulation box is defined"); + error->all(FLERR,"Boundary command after simulation box is defined"); domain->set_boundary(narg,arg); } @@ -913,7 +913,7 @@ void Input::compute_modify() void Input::dielectric() { - if (narg != 1) error->all("Illegal dielectric command"); + if (narg != 1) error->all(FLERR,"Illegal dielectric command"); force->dielectric = atof(arg[0]); } @@ -922,11 +922,11 @@ void Input::dielectric() void Input::dihedral_coeff() { if (domain->box_exist == 0) - error->all("Dihedral_coeff command before simulation box is defined"); + error->all(FLERR,"Dihedral_coeff command before simulation box is defined"); if (force->dihedral == NULL) - error->all("Dihedral_coeff command before dihedral_style is defined"); + error->all(FLERR,"Dihedral_coeff command before dihedral_style is defined"); if (atom->avec->dihedrals_allow == 0) - error->all("Dihedral_coeff command when no dihedrals allowed"); + error->all(FLERR,"Dihedral_coeff command when no dihedrals allowed"); force->dihedral->coeff(narg,arg); } @@ -934,10 +934,10 @@ void Input::dihedral_coeff() void Input::dihedral_style() { - if (narg < 1) error->all("Illegal dihedral_style command"); + if (narg < 1) error->all(FLERR,"Illegal dihedral_style command"); if (atom->avec->dihedrals_allow == 0) - error->all("Dihedral_style command when no dihedrals allowed"); - force->create_dihedral(arg[0]); + error->all(FLERR,"Dihedral_style command when no dihedrals allowed"); + force->create_dihedral(arg[0],lmp->suffix); if (force->dihedral) force->dihedral->settings(narg-1,&arg[1]); } @@ -945,12 +945,12 @@ void Input::dihedral_style() void Input::dimension() { - if (narg != 1) error->all("Illegal dimension command"); + if (narg != 1) error->all(FLERR,"Illegal dimension command"); if (domain->box_exist) - error->all("Dimension command after simulation box is defined"); + error->all(FLERR,"Dimension command after simulation box is defined"); domain->dimension = atoi(arg[0]); if (domain->dimension != 2 && domain->dimension != 3) - error->all("Illegal dimension command"); + error->all(FLERR,"Illegal dimension command"); // must reset default extra_dof of all computes // since some were created before dimension command is encountered @@ -999,11 +999,11 @@ void Input::group_command() void Input::improper_coeff() { if (domain->box_exist == 0) - error->all("Improper_coeff command before simulation box is defined"); + error->all(FLERR,"Improper_coeff command before simulation box is defined"); if (force->improper == NULL) - error->all("Improper_coeff command before improper_style is defined"); + error->all(FLERR,"Improper_coeff command before improper_style is defined"); if (atom->avec->impropers_allow == 0) - error->all("Improper_coeff command when no impropers allowed"); + error->all(FLERR,"Improper_coeff command when no impropers allowed"); force->improper->coeff(narg,arg); } @@ -1011,10 +1011,10 @@ void Input::improper_coeff() void Input::improper_style() { - if (narg < 1) error->all("Illegal improper_style command"); + if (narg < 1) error->all(FLERR,"Illegal improper_style command"); if (atom->avec->impropers_allow == 0) - error->all("Improper_style command when no impropers allowed"); - force->create_improper(arg[0]); + error->all(FLERR,"Improper_style command when no impropers allowed"); + force->create_improper(arg[0],lmp->suffix); if (force->improper) force->improper->settings(narg-1,&arg[1]); } @@ -1022,7 +1022,8 @@ void Input::improper_style() void Input::kspace_modify() { - if (force->kspace == NULL) error->all("KSpace style has not yet been set"); + if (force->kspace == NULL) + error->all(FLERR,"KSpace style has not yet been set"); force->kspace->modify_params(narg,arg); } @@ -1030,7 +1031,7 @@ void Input::kspace_modify() void Input::kspace_style() { - force->create_kspace(narg,arg); + force->create_kspace(narg,arg,lmp->suffix); } /* ---------------------------------------------------------------------- */ @@ -1044,9 +1045,9 @@ void Input::lattice() void Input::mass() { - if (narg != 2) error->all("Illegal mass command"); + if (narg != 2) error->all(FLERR,"Illegal mass command"); if (domain->box_exist == 0) - error->all("Mass command before simulation box is defined"); + error->all(FLERR,"Mass command before simulation box is defined"); atom->set_mass(narg,arg); } @@ -1062,7 +1063,7 @@ void Input::min_modify() void Input::min_style() { if (domain->box_exist == 0) - error->all("Min_style command before simulation box is defined"); + error->all(FLERR,"Min_style command before simulation box is defined"); update->create_minimize(narg,arg); } @@ -1089,25 +1090,25 @@ void Input::newton() if (narg == 1) { if (strcmp(arg[0],"off") == 0) newton_pair = newton_bond = 0; else if (strcmp(arg[0],"on") == 0) newton_pair = newton_bond = 1; - else error->all("Illegal newton command"); + else error->all(FLERR,"Illegal newton command"); } else if (narg == 2) { if (strcmp(arg[0],"off") == 0) newton_pair = 0; else if (strcmp(arg[0],"on") == 0) newton_pair= 1; - else error->all("Illegal newton command"); + else error->all(FLERR,"Illegal newton command"); if (strcmp(arg[1],"off") == 0) newton_bond = 0; else if (strcmp(arg[1],"on") == 0) newton_bond = 1; - else error->all("Illegal newton command"); - } else error->all("Illegal newton command"); + else error->all(FLERR,"Illegal newton command"); + } else error->all(FLERR,"Illegal newton command"); force->newton_pair = newton_pair; if (newton_bond == 0) { if (domain->box_exist && force->newton_bond == 1) - error->all("Newton bond change after simulation box is defined"); + error->all(FLERR,"Newton bond change after simulation box is defined"); force->newton_bond = 0; } else { if (domain->box_exist && force->newton_bond == 0) - error->all("Newton bond change after simulation box is defined"); + error->all(FLERR,"Newton bond change after simulation box is defined"); force->newton_bond = 1; } @@ -1120,12 +1121,12 @@ void Input::newton() void Input::package() { if (domain->box_exist) - error->all("Package command after simulation box is defined"); - if (narg < 1) error->all("Illegal package command"); + error->all(FLERR,"Package command after simulation box is defined"); + if (narg < 1) error->all(FLERR,"Illegal package command"); if (strcmp(arg[0],"cuda") == 0) { if (!lmp->cuda) - error->all("Package cuda command without USER-CUDA installed"); + error->all(FLERR,"Package cuda command without USER-CUDA installed"); lmp->cuda->accelerator(narg-1,&arg[1]); } else if (strcmp(arg[0],"gpu") == 0) { @@ -1141,12 +1142,12 @@ void Input::package() } else if (strcmp(arg[0],"omp") == 0) { -#ifdef LMP_OPENMP - if (narg != 2) error->all("Illegal package command"); +#ifdef _OPENMP + if (narg != 2) error->all(FLERR,"Illegal package command"); comm->nthreads = atoi(arg[1]); - if (comm->nthreads < 1) error->all("Illegal package command"); + if (comm->nthreads < 1) error->all(FLERR,"Illegal package command"); - omp_set_num_threads(nthr); + omp_set_num_threads(comm->nthreads); if (me == 0) { if (screen) fprintf(screen," reset %d OpenMP thread(s) per MPI task\n", @@ -1156,10 +1157,10 @@ void Input::package() comm->nthreads); } #else - error->all("Cannot use package omp command with no OpenMP support"); + error->all(FLERR,"Cannot use package omp command with no OpenMP support"); #endif - } else error->all("Illegal package command"); + } else error->all(FLERR,"Illegal package command"); } /* ---------------------------------------------------------------------- */ @@ -1167,9 +1168,9 @@ void Input::package() void Input::pair_coeff() { if (domain->box_exist == 0) - error->all("Pair_coeff command before simulation box is defined"); + error->all(FLERR,"Pair_coeff command before simulation box is defined"); if (force->pair == NULL) - error->all("Pair_coeff command before pair_style is defined"); + error->all(FLERR,"Pair_coeff command before pair_style is defined"); force->pair->coeff(narg,arg); } @@ -1178,7 +1179,7 @@ void Input::pair_coeff() void Input::pair_modify() { if (force->pair == NULL) - error->all("Pair_modify command before pair_style is defined"); + error->all(FLERR,"Pair_modify command before pair_style is defined"); force->pair->modify_params(narg,arg); } @@ -1189,7 +1190,7 @@ void Input::pair_modify() void Input::pair_style() { - if (narg < 1) error->all("Illegal pair_style command"); + if (narg < 1) error->all(FLERR,"Illegal pair_style command"); if (force->pair && strcmp(arg[0],force->pair_style) == 0) { force->pair->settings(narg-1,&arg[1]); return; @@ -1203,7 +1204,7 @@ void Input::pair_style() void Input::pair_write() { if (force->pair == NULL) - error->all("Pair_write command before pair_style is defined"); + error->all(FLERR,"Pair_write command before pair_style is defined"); force->pair->write_file(narg,arg); } @@ -1211,9 +1212,9 @@ void Input::pair_write() void Input::processors() { - if (narg != 3) error->all("Illegal processors command"); + if (narg != 3) error->all(FLERR,"Illegal processors command"); if (domain->box_exist) - error->all("Processors command after simulation box is defined"); + error->all(FLERR,"Processors command after simulation box is defined"); if (strcmp(arg[0],"*") == 0) comm->user_procgrid[0] = 0; else comm->user_procgrid[0] = atoi(arg[0]); @@ -1223,7 +1224,7 @@ void Input::processors() else comm->user_procgrid[2] = atoi(arg[2]); if (comm->user_procgrid[0] < 0 || comm->user_procgrid[1] < 0 || - comm->user_procgrid[2] < 0) error->all("Illegal processors command"); + comm->user_procgrid[2] < 0) error->all(FLERR,"Illegal processors command"); } /* ---------------------------------------------------------------------- */ @@ -1252,7 +1253,7 @@ void Input::restart() void Input::run_style() { if (domain->box_exist == 0) - error->all("Run_style command before simulation box is defined"); + error->all(FLERR,"Run_style command before simulation box is defined"); update->create_integrate(narg,arg,lmp->suffix); } @@ -1291,7 +1292,7 @@ void Input::special_bonds() void Input::suffix() { - if (narg != 1) error->all("Illegal suffix command"); + if (narg != 1) error->all(FLERR,"Illegal suffix command"); if (strcmp(arg[0],"off") == 0) lmp->suffix_enable = 0; else if (strcmp(arg[0],"on") == 0) lmp->suffix_enable = 1; @@ -1308,7 +1309,7 @@ void Input::suffix() void Input::thermo() { - if (narg != 1) error->all("Illegal thermo command"); + if (narg != 1) error->all(FLERR,"Illegal thermo command"); output->thermo_every = atoi(arg[0]); } @@ -1330,7 +1331,7 @@ void Input::thermo_style() void Input::timestep() { - if (narg != 1) error->all("Illegal timestep command"); + if (narg != 1) error->all(FLERR,"Illegal timestep command"); update->dt = atof(arg[0]); } @@ -1338,7 +1339,7 @@ void Input::timestep() void Input::uncompute() { - if (narg != 1) error->all("Illegal uncompute command"); + if (narg != 1) error->all(FLERR,"Illegal uncompute command"); modify->delete_compute(arg[0]); } @@ -1346,7 +1347,7 @@ void Input::uncompute() void Input::undump() { - if (narg != 1) error->all("Illegal undump command"); + if (narg != 1) error->all(FLERR,"Illegal undump command"); output->delete_dump(arg[0]); } @@ -1354,7 +1355,7 @@ void Input::undump() void Input::unfix() { - if (narg != 1) error->all("Illegal unfix command"); + if (narg != 1) error->all(FLERR,"Illegal unfix command"); modify->delete_fix(arg[0]); } @@ -1362,8 +1363,8 @@ void Input::unfix() void Input::units() { - if (narg != 1) error->all("Illegal units command"); + if (narg != 1) error->all(FLERR,"Illegal units command"); if (domain->box_exist) - error->all("Units command after simulation box is defined"); + error->all(FLERR,"Units command after simulation box is defined"); update->set_units(arg[0]); } diff --git a/src/integrate.cpp b/src/integrate.cpp index 80bf89f676..6de4df26c3 100644 --- a/src/integrate.cpp +++ b/src/integrate.cpp @@ -26,6 +26,7 @@ Integrate::Integrate(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) { elist_global = elist_atom = NULL; vlist_global = vlist_atom = NULL; + external_force_clear = 0; } /* ---------------------------------------------------------------------- */ diff --git a/src/integrate.h b/src/integrate.h index 8f8942c80c..3c75176a10 100644 --- a/src/integrate.h +++ b/src/integrate.h @@ -33,6 +33,7 @@ class Integrate : protected Pointers { protected: int eflag,vflag; // flags for energy/virial computation int virial_style; // compute virial explicitly or implicitly + int external_force_clear; // clear forces locally or externally int nelist_global,nelist_atom; // # of PE,virial computes to check int nvlist_global,nvlist_atom; diff --git a/src/irregular.cpp b/src/irregular.cpp index d9abe11b88..fe801ae45e 100644 --- a/src/irregular.cpp +++ b/src/irregular.cpp @@ -28,9 +28,6 @@ using namespace LAMMPS_NS; #define BUFMIN 1000 #define BUFEXTRA 1000 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ Irregular::Irregular(LAMMPS *lmp) : Pointers(lmp) diff --git a/src/kspace.cpp b/src/kspace.cpp index c0613140d3..116535f8ee 100644 --- a/src/kspace.cpp +++ b/src/kspace.cpp @@ -40,7 +40,7 @@ void KSpace::modify_params(int narg, char **arg) int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"mesh") == 0) { - if (iarg+4 > narg) error->all("Illegal kspace_modify command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal kspace_modify command"); nx_pppm = atoi(arg[iarg+1]); ny_pppm = atoi(arg[iarg+2]); nz_pppm = atoi(arg[iarg+3]); @@ -48,26 +48,26 @@ void KSpace::modify_params(int narg, char **arg) else gridflag = 1; iarg += 4; } else if (strcmp(arg[iarg],"order") == 0) { - if (iarg+2 > narg) error->all("Illegal kspace_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal kspace_modify command"); order = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"gewald") == 0) { - if (iarg+2 > narg) error->all("Illegal kspace_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal kspace_modify command"); g_ewald = atof(arg[iarg+1]); if (g_ewald == 0.0) gewaldflag = 0; else gewaldflag = 1; iarg += 2; } else if (strcmp(arg[iarg],"slab") == 0) { - if (iarg+2 > narg) error->all("Illegal kspace_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal kspace_modify command"); slab_volfactor = atof(arg[iarg+1]); iarg += 2; if (slab_volfactor <= 1.0) - error->all("Bad kspace_modify slab parameter"); + error->all(FLERR,"Bad kspace_modify slab parameter"); if (slab_volfactor < 2.0 && comm->me == 0) - error->warning("Kspace_modify slab param < 2.0 may " + error->warning(FLERR,"Kspace_modify slab param < 2.0 may " "cause unphysical behavior"); slabflag = 1; - } else error->all("Illegal kspace_modify command"); + } else error->all(FLERR,"Illegal kspace_modify command"); } } diff --git a/src/kspace.h b/src/kspace.h index 3ad2193f11..f77bacfcdc 100644 --- a/src/kspace.h +++ b/src/kspace.h @@ -19,6 +19,7 @@ namespace LAMMPS_NS { class KSpace : protected Pointers { + friend class ThrOMP; public: double energy; double virial[6]; diff --git a/src/lammps.cpp b/src/lammps.cpp index 6f560b2d49..f316a03ad7 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -14,8 +14,20 @@ #include "mpi.h" #include "string.h" #include "lammps.h" -#include "memory.h" -#include "error.h" +#include "style_angle.h" +#include "style_atom.h" +#include "style_bond.h" +#include "style_command.h" +#include "style_compute.h" +#include "style_dihedral.h" +#include "style_dump.h" +#include "style_fix.h" +#include "style_improper.h" +#include "style_integrate.h" +#include "style_kspace.h" +#include "style_minimize.h" +#include "style_pair.h" +#include "style_region.h" #include "universe.h" #include "input.h" #include "atom.h" @@ -29,6 +41,8 @@ #include "output.h" #include "accelerator_cuda.h" #include "timer.h" +#include "memory.h" +#include "error.h" using namespace LAMMPS_NS; @@ -67,7 +81,8 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) if (strcmp(arg[iarg],"-partition") == 0 || strcmp(arg[iarg],"-p") == 0) { universe->existflag = 1; - if (iarg+2 > narg) error->universe_all("Invalid command-line argument"); + if (iarg+2 > narg) + error->universe_all(FLERR,"Invalid command-line argument"); iarg++; while (iarg < narg && arg[iarg][0] != '-') { universe->add_world(arg[iarg]); @@ -75,50 +90,57 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) } } else if (strcmp(arg[iarg],"-in") == 0 || strcmp(arg[iarg],"-i") == 0) { - if (iarg+2 > narg) error->universe_all("Invalid command-line argument"); + if (iarg+2 > narg) + error->universe_all(FLERR,"Invalid command-line argument"); inflag = iarg + 1; iarg += 2; } else if (strcmp(arg[iarg],"-screen") == 0 || strcmp(arg[iarg],"-sc") == 0) { - if (iarg+2 > narg) error->universe_all("Invalid command-line argument"); + if (iarg+2 > narg) + error->universe_all(FLERR,"Invalid command-line argument"); screenflag = iarg + 1; iarg += 2; } else if (strcmp(arg[iarg],"-log") == 0 || strcmp(arg[iarg],"-l") == 0) { - if (iarg+2 > narg) error->universe_all("Invalid command-line argument"); + if (iarg+2 > narg) + error->universe_all(FLERR,"Invalid command-line argument"); logflag = iarg + 1; iarg += 2; } else if (strcmp(arg[iarg],"-var") == 0 || strcmp(arg[iarg],"-v") == 0) { - if (iarg+3 > narg) error->universe_all("Invalid command-line argument"); - iarg += 2; + if (iarg+3 > narg) + error->universe_all(FLERR,"Invalid command-line argument"); + iarg += 3; while (iarg < narg && arg[iarg][0] != '-') iarg++; } else if (strcmp(arg[iarg],"-echo") == 0 || strcmp(arg[iarg],"-e") == 0) { - if (iarg+2 > narg) error->universe_all("Invalid command-line argument"); + if (iarg+2 > narg) + error->universe_all(FLERR,"Invalid command-line argument"); iarg += 2; } else if (strcmp(arg[iarg],"-pscreen") == 0 || strcmp(arg[iarg],"-ps") == 0) { if (iarg+2 > narg) - error->universe_all("Invalid command-line argument"); + error->universe_all(FLERR,"Invalid command-line argument"); partscreenflag = iarg + 1; iarg += 2; } else if (strcmp(arg[iarg],"-plog") == 0 || strcmp(arg[iarg],"-pl") == 0) { if (iarg+2 > narg) - error->universe_all("Invalid command-line argument"); + error->universe_all(FLERR,"Invalid command-line argument"); partlogflag = iarg + 1; iarg += 2; } else if (strcmp(arg[iarg],"-cuda") == 0 || strcmp(arg[iarg],"-c") == 0) { - if (iarg+2 > narg) error->universe_all("Invalid command-line argument"); + if (iarg+2 > narg) + error->universe_all(FLERR,"Invalid command-line argument"); if (strcmp(arg[iarg+1],"on") == 0) cudaflag = 1; else if (strcmp(arg[iarg+1],"off") == 0) cudaflag = 0; - else error->universe_all("Invalid command-line argument"); + else error->universe_all(FLERR,"Invalid command-line argument"); iarg += 2; } else if (strcmp(arg[iarg],"-suffix") == 0 || strcmp(arg[iarg],"-sf") == 0) { - if (iarg+2 > narg) error->universe_all("Invalid command-line argument"); + if (iarg+2 > narg) + error->universe_all(FLERR,"Invalid command-line argument"); delete [] suffix; int n = strlen(arg[iarg+1]) + 1; suffix = new char[n]; @@ -127,10 +149,11 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) iarg += 2; } else if (strcmp(arg[iarg],"-help") == 0 || strcmp(arg[iarg],"-h") == 0) { - if (iarg+1 > narg) error->universe_all("Invalid command-line argument"); + if (iarg+1 > narg) + error->universe_all(FLERR,"Invalid command-line argument"); helpflag = 1; iarg += 1; - } else error->universe_all("Invalid command-line argument"); + } else error->universe_all(FLERR,"Invalid command-line argument"); } // if no partition command-line switch, universe is one world w/ all procs @@ -140,22 +163,22 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) // sum of procs in all worlds must equal total # of procs if (!universe->consistent()) - error->universe_all("Processor partitions are inconsistent"); + error->universe_all(FLERR,"Processor partitions are inconsistent"); // universe cannot use stdin for input file if (universe->existflag && inflag == 0) - error->universe_all("Must use -in switch with multiple partitions"); + error->universe_all(FLERR,"Must use -in switch with multiple partitions"); // if no partition command-line switch, cannot use -pscreen option if (universe->existflag == 0 && partscreenflag) - error->universe_all("Can only use -pscreen with multiple partitions"); + error->universe_all(FLERR,"Can only use -pscreen with multiple partitions"); // if no partition command-line switch, cannot use -plog option if (universe->existflag == 0 && partlogflag) - error->universe_all("Can only use -plog with multiple partitions"); + error->universe_all(FLERR,"Can only use -plog with multiple partitions"); // set universe screen and logfile @@ -167,18 +190,18 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) else { universe->uscreen = fopen(arg[screenflag],"w"); if (universe->uscreen == NULL) - error->universe_one("Cannot open universe screen file"); + error->universe_one(FLERR,"Cannot open universe screen file"); } if (logflag == 0) { universe->ulogfile = fopen("log.lammps","w"); if (universe->ulogfile == NULL) - error->universe_one("Cannot open log.lammps"); + error->universe_one(FLERR,"Cannot open log.lammps"); } else if (strcmp(arg[logflag],"none") == 0) universe->ulogfile = NULL; else { universe->ulogfile = fopen(arg[logflag],"w"); if (universe->ulogfile == NULL) - error->universe_one("Cannot open universe log file"); + error->universe_one(FLERR,"Cannot open universe log file"); } } @@ -205,7 +228,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) if (infile == NULL) { char str[128]; sprintf(str,"Cannot open input script %s",arg[inflag]); - error->one(str); + error->one(FLERR,str); } } @@ -230,14 +253,14 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) char str[32]; sprintf(str,"screen.%d",universe->iworld); screen = fopen(str,"w"); - if (screen == NULL) error->one("Cannot open screen file"); + if (screen == NULL) error->one(FLERR,"Cannot open screen file"); } else if (strcmp(arg[screenflag],"none") == 0) screen = NULL; else { char str[128]; sprintf(str,"%s.%d",arg[screenflag],universe->iworld); screen = fopen(str,"w"); - if (screen == NULL) error->one("Cannot open screen file"); + if (screen == NULL) error->one(FLERR,"Cannot open screen file"); } else if (strcmp(arg[partscreenflag],"none") == 0) screen = NULL; @@ -245,7 +268,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) char str[128]; sprintf(str,"%s.%d",arg[partscreenflag],universe->iworld); screen = fopen(str,"w"); - if (screen == NULL) error->one("Cannot open screen file"); + if (screen == NULL) error->one(FLERR,"Cannot open screen file"); } else screen = NULL; if (me == 0) @@ -254,14 +277,14 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) char str[32]; sprintf(str,"log.lammps.%d",universe->iworld); logfile = fopen(str,"w"); - if (logfile == NULL) error->one("Cannot open logfile"); + if (logfile == NULL) error->one(FLERR,"Cannot open logfile"); } else if (strcmp(arg[logflag],"none") == 0) logfile = NULL; else { char str[128]; sprintf(str,"%s.%d",arg[logflag],universe->iworld); logfile = fopen(str,"w"); - if (logfile == NULL) error->one("Cannot open logfile"); + if (logfile == NULL) error->one(FLERR,"Cannot open logfile"); } else if (strcmp(arg[partlogflag],"none") == 0) logfile = NULL; @@ -269,7 +292,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) char str[128]; sprintf(str,"%s.%d",arg[partlogflag],universe->iworld); logfile = fopen(str,"w"); - if (logfile == NULL) error->one("Cannot open logfile"); + if (logfile == NULL) error->one(FLERR,"Cannot open logfile"); } else logfile = NULL; if (me == 0) { @@ -277,7 +300,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) if (infile == NULL) { char str[128]; sprintf(str,"Cannot open input script %s",arg[inflag]); - error->one(str); + error->one(FLERR,str); } } else infile = NULL; @@ -311,34 +334,37 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) // check datatype settings in lmptype.h if (sizeof(smallint) != sizeof(int)) - error->all("Smallint setting in lmptype.h is invalid"); + error->all(FLERR,"Smallint setting in lmptype.h is invalid"); if (sizeof(tagint) < sizeof(smallint)) - error->all("Tagint setting in lmptype.h is invalid"); + error->all(FLERR,"Tagint setting in lmptype.h is invalid"); if (sizeof(bigint) < sizeof(tagint)) - error->all("Bigint setting in lmptype.h is invalid"); + error->all(FLERR,"Bigint setting in lmptype.h is invalid"); int mpisize; MPI_Type_size(MPI_LMP_TAGINT,&mpisize); if (mpisize != sizeof(tagint)) - error->all("MPI_LMP_TAGINT and tagint in lmptype.h are not compatible"); + error->all(FLERR, + "MPI_LMP_TAGINT and tagint in lmptype.h are not compatible"); MPI_Type_size(MPI_LMP_BIGINT,&mpisize); if (mpisize != sizeof(bigint)) - error->all("MPI_LMP_BIGINT and bigint in lmptype.h are not compatible"); + error->all(FLERR, + "MPI_LMP_BIGINT and bigint in lmptype.h are not compatible"); #ifdef LAMMPS_SMALLBIG if (sizeof(smallint) != 4 || sizeof(tagint) != 4 || sizeof(bigint) != 8) - error->all("Small, tag, big integers are not sized correctly"); + error->all(FLERR,"Small, tag, big integers are not sized correctly"); #endif #ifdef LAMMPS_BIGBIG if (sizeof(smallint) != 4 || sizeof(tagint) != 8 || sizeof(bigint) != 8) - error->all("Small, tag, big integers are not sized correctly"); + error->all(FLERR,"Small, tag, big integers are not sized correctly"); #endif #ifdef LAMMPS_SMALLSMALL if (sizeof(smallint) != 4 || sizeof(tagint) != 4 || sizeof(bigint) != 4) - error->all("Small, tag, big integers are not sized correctly"); + error->all(FLERR,"Small, tag, big integers are not sized correctly"); #endif - if (sizeof(tagint) == 8) error->all("64-bit atom IDs are not yet supported"); + if (sizeof(tagint) == 8) + error->all(FLERR,"64-bit atom IDs are not yet supported"); // create CUDA class if USER-CUDA installed, unless explicitly switched off // instantiation creates dummy CUDA class if USER-CUDA is not installed @@ -348,7 +374,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) } else if (cudaflag == 1) { cuda = new Cuda(this); if (!cuda->cuda_exists) - error->all("Cannot use -cuda on without USER-CUDA installed"); + error->all(FLERR,"Cannot use -cuda on without USER-CUDA installed"); } else { cuda = new Cuda(this); if (!cuda->cuda_exists) { @@ -359,7 +385,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) int me; MPI_Comm_rank(world,&me); - if (cuda && me == 0) error->message("USER-CUDA mode is enabled"); + if (cuda && me == 0) error->message(FLERR,"USER-CUDA mode is enabled"); // allocate input class now that MPI is fully setup diff --git a/src/lattice.cpp b/src/lattice.cpp index 48e749834c..196074deb8 100644 --- a/src/lattice.cpp +++ b/src/lattice.cpp @@ -23,8 +23,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) #define BIG 1.0e30 enum{NONE,SC,BCC,FCC,HCP,DIAMOND,SQ,SQ2,HEX,CUSTOM}; @@ -38,7 +36,7 @@ Lattice::Lattice(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) // parse style arg - if (narg < 1) error->all("Illegal lattice command"); + if (narg < 1) error->all(FLERR,"Illegal lattice command"); if (strcmp(arg[0],"none") == 0) style = NONE; else if (strcmp(arg[0],"sc") == 0) style = SC; @@ -50,10 +48,10 @@ Lattice::Lattice(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) else if (strcmp(arg[0],"sq2") == 0) style = SQ2; else if (strcmp(arg[0],"hex") == 0) style = HEX; else if (strcmp(arg[0],"custom") == 0) style = CUSTOM; - else error->all("Illegal lattice command"); + else error->all(FLERR,"Illegal lattice command"); if (style == NONE) { - if (narg > 1) error->all("Illegal lattice command"); + if (narg > 1) error->all(FLERR,"Illegal lattice command"); return; } @@ -64,18 +62,18 @@ Lattice::Lattice(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) if (dimension == 2) { if (style == SC || style == BCC || style == FCC || style == HCP || style == DIAMOND) - error->all("Lattice style incompatible with simulation dimension"); + error->all(FLERR,"Lattice style incompatible with simulation dimension"); } if (dimension == 3) { if (style == SQ || style == SQ2 || style == HEX) - error->all("Lattice style incompatible with simulation dimension"); + error->all(FLERR,"Lattice style incompatible with simulation dimension"); } // scale = conversion factor between lattice and box units - if (narg < 2) error->all("Illegal lattice command"); + if (narg < 2) error->all(FLERR,"Illegal lattice command"); scale = atof(arg[1]); - if (scale <= 0.0) error->all("Illegal lattice command"); + if (scale <= 0.0) error->all(FLERR,"Illegal lattice command"); // set basis atoms for each style // x,y,z = fractional coords within unit cell @@ -140,23 +138,23 @@ Lattice::Lattice(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) int iarg = 2; while (iarg < narg) { if (strcmp(arg[iarg],"origin") == 0) { - if (iarg+4 > narg) error->all("Illegal lattice command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal lattice command"); origin[0] = atof(arg[iarg+1]); origin[1] = atof(arg[iarg+2]); origin[2] = atof(arg[iarg+3]); if (origin[0] < 0.0 || origin[0] >= 1.0 || origin[1] < 0.0 || origin[1] >= 1.0 || origin[2] < 0.0 || origin[2] >= 1.0) - error->all("Illegal lattice command"); + error->all(FLERR,"Illegal lattice command"); iarg += 4; } else if (strcmp(arg[iarg],"orient") == 0) { - if (iarg+5 > narg) error->all("Illegal lattice command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal lattice command"); int dim; if (strcmp(arg[iarg+1],"x") == 0) dim = 0; else if (strcmp(arg[iarg+1],"y") == 0) dim = 1; else if (strcmp(arg[iarg+1],"z") == 0) dim = 2; - else error->all("Illegal lattice command"); + else error->all(FLERR,"Illegal lattice command"); int *orient; if (dim == 0) orient = orientx; else if (dim == 1) orient = orienty; @@ -167,7 +165,7 @@ Lattice::Lattice(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) iarg += 5; } else if (strcmp(arg[iarg],"spacing") == 0) { - if (iarg+4 > narg) error->all("Illegal lattice command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal lattice command"); spaceflag = 1; xlattice = atof(arg[iarg+1]); ylattice = atof(arg[iarg+2]); @@ -175,67 +173,67 @@ Lattice::Lattice(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) iarg += 4; } else if (strcmp(arg[iarg],"a1") == 0) { - if (iarg+4 > narg) error->all("Illegal lattice command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal lattice command"); if (style != CUSTOM) - error->all("Invalid option in lattice command for non-custom style"); + error->all(FLERR,"Invalid option in lattice command for non-custom style"); a1[0] = atof(arg[iarg+1]); a1[1] = atof(arg[iarg+2]); a1[2] = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"a2") == 0) { - if (iarg+4 > narg) error->all("Illegal lattice command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal lattice command"); if (style != CUSTOM) - error->all("Invalid option in lattice command for non-custom style"); + error->all(FLERR,"Invalid option in lattice command for non-custom style"); a2[0] = atof(arg[iarg+1]); a2[1] = atof(arg[iarg+2]); a2[2] = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"a3") == 0) { - if (iarg+4 > narg) error->all("Illegal lattice command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal lattice command"); if (style != CUSTOM) - error->all("Invalid option in lattice command for non-custom style"); + error->all(FLERR,"Invalid option in lattice command for non-custom style"); a3[0] = atof(arg[iarg+1]); a3[1] = atof(arg[iarg+2]); a3[2] = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"basis") == 0) { - if (iarg+4 > narg) error->all("Illegal lattice command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal lattice command"); if (style != CUSTOM) - error->all("Invalid option in lattice command for non-custom style"); + error->all(FLERR,"Invalid option in lattice command for non-custom style"); double x = atof(arg[iarg+1]); double y = atof(arg[iarg+2]); double z = atof(arg[iarg+3]); if (x < 0.0 || x >= 1.0 || y < 0.0 || y >= 1.0 || z < 0.0 || z >= 1.0) - error->all("Illegal lattice command"); + error->all(FLERR,"Illegal lattice command"); add_basis(x,y,z); iarg += 4; - } else error->all("Illegal lattice command"); + } else error->all(FLERR,"Illegal lattice command"); } // check settings for errors - if (nbasis == 0) error->all("No basis atoms in lattice"); + if (nbasis == 0) error->all(FLERR,"No basis atoms in lattice"); if (!orthogonal()) - error->all("Lattice orient vectors are not orthogonal"); + error->all(FLERR,"Lattice orient vectors are not orthogonal"); if (!right_handed()) - error->all("Lattice orient vectors are not right-handed"); + error->all(FLERR,"Lattice orient vectors are not right-handed"); if (collinear()) - error->all("Lattice primitive vectors are collinear"); + error->all(FLERR,"Lattice primitive vectors are collinear"); if (dimension == 2) { if (origin[2] != 0.0) - error->all("Lattice settings are not compatible with 2d simulation"); + error->all(FLERR,"Lattice settings are not compatible with 2d simulation"); if (orientx[2] != 0 || orienty[2] != 0 || orientz[0] != 0 || orientz[1] != 0) - error->all("Lattice settings are not compatible with 2d simulation"); + error->all(FLERR,"Lattice settings are not compatible with 2d simulation"); if (a1[2] != 0.0 || a2[2] != 0.0 || a3[0] != 0.0 || a3[1] != 0.0) - error->all("Lattice settings are not compatible with 2d simulation"); + error->all(FLERR,"Lattice settings are not compatible with 2d simulation"); } if (spaceflag) { if (xlattice <= 0.0 || ylattice <= 0.0 || zlattice <= 0.0) - error->all("Lattice spacings are invalid"); + error->all(FLERR,"Lattice spacings are invalid"); } // reset scale for LJ units (input scale is rho*) @@ -376,7 +374,7 @@ void Lattice::setup_transform() primitive[0][1]*primitive[1][0]*primitive[2][2] - primitive[0][2]*primitive[1][1]*primitive[2][0]; - if (determinant == 0.0) error->all("Degenerate lattice primitive vectors"); + if (determinant == 0.0) error->all(FLERR,"Degenerate lattice primitive vectors"); priminv[0][0] = (primitive[1][1]*primitive[2][2] - primitive[1][2]*primitive[2][1]) / determinant; @@ -404,7 +402,7 @@ void Lattice::setup_transform() int lensq = orientx[0]*orientx[0] + orientx[1]*orientx[1] + orientx[2]*orientx[2]; length = sqrt((double) lensq); - if (length == 0.0) error->all("Zero-length lattice orient vector"); + if (length == 0.0) error->all(FLERR,"Zero-length lattice orient vector"); rotaterow[0][0] = orientx[0] / length; rotaterow[0][1] = orientx[1] / length; @@ -413,7 +411,7 @@ void Lattice::setup_transform() lensq = orienty[0]*orienty[0] + orienty[1]*orienty[1] + orienty[2]*orienty[2]; length = sqrt((double) lensq); - if (length == 0.0) error->all("Zero-length lattice orient vector"); + if (length == 0.0) error->all(FLERR,"Zero-length lattice orient vector"); rotaterow[1][0] = orienty[0] / length; rotaterow[1][1] = orienty[1] / length; @@ -422,7 +420,7 @@ void Lattice::setup_transform() lensq = orientz[0]*orientz[0] + orientz[1]*orientz[1] + orientz[2]*orientz[2]; length = sqrt((double) lensq); - if (length == 0.0) error->all("Zero-length lattice orient vector"); + if (length == 0.0) error->all(FLERR,"Zero-length lattice orient vector"); rotaterow[2][0] = orientz[0] / length; rotaterow[2][1] = orientz[1] / length; diff --git a/src/math_const.h b/src/math_const.h new file mode 100644 index 0000000000..5cbc2aee28 --- /dev/null +++ b/src/math_const.h @@ -0,0 +1,31 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +#ifndef LMP_MATH_CONST_H +#define LMP_MATH_CONST_H + +namespace LAMMPS_NS { + +namespace MathConst { + static const double THIRD = 1.0/3.0; + static const double MY_PI = 3.14159265358979323846; // pi + static const double MY_2PI = 6.28318530717958647692; // 2pi + static const double MY_3PI = 9.42477796076937971538; // 3pi + static const double MY_PI2 = 1.57079632679489661923; // pi/2 + static const double MY_PI4 = 0.78539816339744830962; // pi/4 + static const double MY_PIS = 1.77245385090551602729; // sqrt(pi) +} + +} + +#endif diff --git a/src/memory.cpp b/src/memory.cpp index 6af16e68e0..11e15f10e5 100644 --- a/src/memory.cpp +++ b/src/memory.cpp @@ -37,7 +37,7 @@ void *Memory::smalloc(bigint nbytes, const char *name) char str[128]; sprintf(str,"Failed to allocate " BIGINT_FORMAT " bytes for array %s", nbytes,name); - error->one(str); + error->one(FLERR,str); } return ptr; } @@ -58,7 +58,7 @@ void *Memory::srealloc(void *ptr, bigint nbytes, const char *name) char str[128]; sprintf(str,"Failed to reallocate " BIGINT_FORMAT " bytes for array %s", nbytes,name); - error->one(str); + error->one(FLERR,str); } return ptr; } @@ -81,5 +81,5 @@ void Memory::fail(const char *name) { char str[128]; sprintf(str,"Cannot create/grow a vector/array of pointers for %s",name); - error->one(str); + error->one(FLERR,str); } diff --git a/src/min.cpp b/src/min.cpp index d7a80e72fe..0df114edaf 100644 --- a/src/min.cpp +++ b/src/min.cpp @@ -47,9 +47,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ Min::Min(LAMMPS *lmp) : Pointers(lmp) @@ -137,12 +134,16 @@ void Min::init() ev_setup(); // set flags for what arrays to clear in force_clear() - // need to clear torques,erforce if arrays exists + // need to clear additionals arrays if they exist torqueflag = 0; if (atom->torque_flag) torqueflag = 1; erforceflag = 0; if (atom->erforce_flag) erforceflag = 1; + e_flag = 0; + if (atom->e_flag) e_flag = 1; + rho_flag = 0; + if (atom->rho_flag) rho_flag = 1; // orthogonal vs triclinic simulation box @@ -156,7 +157,8 @@ void Min::init() if (neigh_every != 1 || neigh_delay != 0 || neigh_dist_check != 1) { if (comm->me == 0) - error->warning("Resetting reneighboring criteria during minimization"); + error->warning(FLERR, + "Resetting reneighboring criteria during minimization"); } neighbor->every = 1; @@ -187,7 +189,7 @@ void Min::setup() // compute for potential energy int id = modify->find_compute("thermo_pe"); - if (id < 0) error->all("Minimization could not find thermo_pe compute"); + if (id < 0) error->all(FLERR,"Minimization could not find thermo_pe compute"); pe_compute = modify->compute[id]; // style-specific setup does two tasks @@ -226,9 +228,11 @@ void Min::setup() // remove these restriction eventually if (nextra_global && searchflag == 0) - error->all("Cannot use a damped dynamics min style with fix box/relax"); + error->all(FLERR, + "Cannot use a damped dynamics min style with fix box/relax"); if (nextra_atom && searchflag == 0) - error->all("Cannot use a damped dynamics min style with per-atom DOF"); + error->all(FLERR, + "Cannot use a damped dynamics min style with per-atom DOF"); // atoms may have migrated in comm->exchange() @@ -509,15 +513,18 @@ void Min::force_clear() { int i; + if (external_force_clear) return; + // clear global force array // nall includes ghosts only if either newton flag is set int nall; if (force->newton) nall = atom->nlocal + atom->nghost; else nall = atom->nlocal; + int ntot = nall * comm->nthreads; double **f = atom->f; - for (i = 0; i < nall; i++) { + for (i = 0; i < ntot; i++) { f[i][0] = 0.0; f[i][1] = 0.0; f[i][2] = 0.0; @@ -534,8 +541,17 @@ void Min::force_clear() if (erforceflag) { double *erforce = atom->erforce; - for (i = 0; i < nall; i++) - erforce[i] = 0.0; + for (i = 0; i < nall; i++) erforce[i] = 0.0; + } + + if (e_flag) { + double *de = atom->de; + for (i = 0; i < nall; i++) de[i] = 0.0; + } + + if (rho_flag) { + double *drho = atom->drho; + for (i = 0; i < nall; i++) drho[i] = 0.0; } } @@ -570,21 +586,21 @@ int Min::request(Pair *pair, int peratom, double maxvalue) void Min::modify_params(int narg, char **arg) { - if (narg == 0) error->all("Illegal min_modify command"); + if (narg == 0) error->all(FLERR,"Illegal min_modify command"); int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"dmax") == 0) { - if (iarg+2 > narg) error->all("Illegal min_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal min_modify command"); dmax = atof(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"line") == 0) { - if (iarg+2 > narg) error->all("Illegal min_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal min_modify command"); if (strcmp(arg[iarg+1],"backtrack") == 0) linestyle = 0; else if (strcmp(arg[iarg+1],"quadratic") == 0) linestyle = 1; - else error->all("Illegal min_modify command"); + else error->all(FLERR,"Illegal min_modify command"); iarg += 2; - } else error->all("Illegal min_modify command"); + } else error->all(FLERR,"Illegal min_modify command"); } } diff --git a/src/min.h b/src/min.h index db9590b1b2..47956059d8 100644 --- a/src/min.h +++ b/src/min.h @@ -49,6 +49,7 @@ class Min : protected Pointers { protected: int eflag,vflag; // flags for energy/virial computation int virial_style; // compute virial explicitly or implicitly + int external_force_clear; // clear forces locally or externally double dmax; // max dist to move any atom in one step int linestyle; // 0 = backtrack, 1 = quadratic @@ -60,9 +61,10 @@ class Min : protected Pointers { class Compute **vlist_global; class Compute **vlist_atom; + int triclinic; // 0 if domain is orthog, 1 if triclinic int pairflag; int torqueflag,erforceflag; - int triclinic; // 0 if domain is orthog, 1 if triclinic + int e_flag,rho_flag; int narray; // # of arrays stored by fix_minimize class FixMinimize *fix_minimize; // fix that stores auxiliary data diff --git a/src/min_cg.cpp b/src/min_cg.cpp index 9ef3c8c4a7..f2b1a666f5 100644 --- a/src/min_cg.cpp +++ b/src/min_cg.cpp @@ -31,9 +31,6 @@ using namespace LAMMPS_NS; enum{MAXITER,MAXEVAL,ETOL,FTOL,DOWNHILL,ZEROALPHA,ZEROFORCE,ZEROQUAD}; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ MinCG::MinCG(LAMMPS *lmp) : MinLineSearch(lmp) {} diff --git a/src/min_fire.cpp b/src/min_fire.cpp index 0c4e73dc26..18081f17b5 100644 --- a/src/min_fire.cpp +++ b/src/min_fire.cpp @@ -31,9 +31,6 @@ using namespace LAMMPS_NS; enum{MAXITER,MAXEVAL,ETOL,FTOL,DOWNHILL,ZEROALPHA,ZEROFORCE,ZEROQUAD}; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define DELAYSTEP 5 #define DT_GROW 1.1 #define DT_SHRINK 0.5 diff --git a/src/min_hftn.cpp b/src/min_hftn.cpp index 99c8cef3b6..da92ade46d 100644 --- a/src/min_hftn.cpp +++ b/src/min_hftn.cpp @@ -28,9 +28,6 @@ #include "update.h" #include "timer.h" -#define MIN(A,B) (((A) < (B)) ? (A) : (B)) -#define MAX(A,B) (((A) > (B)) ? (A) : (B)) - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- diff --git a/src/min_linesearch.cpp b/src/min_linesearch.cpp index f3ae5782a4..1736b066e2 100644 --- a/src/min_linesearch.cpp +++ b/src/min_linesearch.cpp @@ -53,9 +53,6 @@ using namespace LAMMPS_NS; enum{MAXITER,MAXEVAL,ETOL,FTOL,DOWNHILL,ZEROALPHA,ZEROFORCE,ZEROQUAD}; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ MinLineSearch::MinLineSearch(LAMMPS *lmp) : Min(lmp) diff --git a/src/min_quickmin.cpp b/src/min_quickmin.cpp index 5ed10f8634..fe9df160b5 100644 --- a/src/min_quickmin.cpp +++ b/src/min_quickmin.cpp @@ -33,9 +33,6 @@ using namespace LAMMPS_NS; enum{MAXITER,MAXEVAL,ETOL,FTOL,DOWNHILL,ZEROALPHA,ZEROFORCE,ZEROQUAD}; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define DELAYSTEP 5 /* ---------------------------------------------------------------------- */ diff --git a/src/minimize.cpp b/src/minimize.cpp index dcee996dc0..f93fbf5385 100644 --- a/src/minimize.cpp +++ b/src/minimize.cpp @@ -31,10 +31,10 @@ Minimize::Minimize(LAMMPS *lmp) : Pointers(lmp) {} void Minimize::command(int narg, char **arg) { - if (narg != 4) error->all("Illegal minimize command"); + if (narg != 4) error->all(FLERR,"Illegal minimize command"); if (domain->box_exist == 0) - error->all("Minimize command before simulation box is defined"); + error->all(FLERR,"Minimize command before simulation box is defined"); update->etol = atof(arg[0]); update->ftol = atof(arg[1]); @@ -42,13 +42,13 @@ void Minimize::command(int narg, char **arg) update->max_eval = atoi(arg[3]); if (update->etol < 0.0 || update->ftol < 0.0) - error->all("Illegal minimize command"); + error->all(FLERR,"Illegal minimize command"); update->whichflag = 2; update->beginstep = update->firststep = update->ntimestep; update->endstep = update->laststep = update->firststep + update->nsteps; if (update->laststep < 0 || update->laststep > MAXBIGINT) - error->all("Too many iterations"); + error->all(FLERR,"Too many iterations"); lmp->init(); update->minimize->setup(); diff --git a/src/modify.cpp b/src/modify.cpp index afad1579aa..c07416ac44 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -53,9 +53,6 @@ using namespace LAMMPS_NS; #define MIN_ENERGY 131072 #define POST_RUN 262144 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define BIG 1.0e20 /* ---------------------------------------------------------------------- */ @@ -240,7 +237,7 @@ void Modify::init() int checkall; MPI_Allreduce(&check,&checkall,1,MPI_INT,MPI_SUM,world); if (comm->me == 0 && checkall) - error->warning("One or more atoms are time integrated more than once"); + error->warning(FLERR,"One or more atoms are time integrated more than once"); } /* ---------------------------------------------------------------------- @@ -595,13 +592,13 @@ int Modify::min_reset_ref() void Modify::add_fix(int narg, char **arg, char *suffix) { if (domain->box_exist == 0 && allow_early_fix == 0) - error->all("Fix command before simulation box is defined"); - if (narg < 3) error->all("Illegal fix command"); + error->all(FLERR,"Fix command before simulation box is defined"); + if (narg < 3) error->all(FLERR,"Illegal fix command"); // check group ID int igroup = group->find(arg[1]); - if (igroup == -1) error->all("Could not find fix group ID"); + if (igroup == -1) error->all(FLERR,"Could not find fix group ID"); // if fix ID exists: // set newflag = 0 so create new fix in same location in fix list @@ -623,9 +620,9 @@ void Modify::add_fix(int narg, char **arg, char *suffix) if (ifix < nfix) { newflag = 0; if (strcmp(arg[2],fix[ifix]->style) != 0) - error->all("Replacing a fix, but new style != old style"); + error->all(FLERR,"Replacing a fix, but new style != old style"); if (fix[ifix]->igroup != igroup && comm->me == 0) - error->warning("Replacing a fix, but new group != old group"); + error->warning(FLERR,"Replacing a fix, but new group != old group"); delete fix[ifix]; fix[ifix] = NULL; } else { @@ -668,7 +665,7 @@ void Modify::add_fix(int narg, char **arg, char *suffix) #undef FixStyle #undef FIX_CLASS - else error->all("Invalid fix style"); + else error->all(FLERR,"Invalid fix style"); } // set fix mask values and increment nfix (if new) @@ -714,14 +711,14 @@ void Modify::add_fix(int narg, char **arg, char *suffix) void Modify::modify_fix(int narg, char **arg) { - if (narg < 2) error->all("Illegal fix_modify command"); + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); // lookup Fix ID int ifix; for (ifix = 0; ifix < nfix; ifix++) if (strcmp(arg[0],fix[ifix]->id) == 0) break; - if (ifix == nfix) error->all("Could not find fix_modify ID"); + if (ifix == nfix) error->all(FLERR,"Could not find fix_modify ID"); fix[ifix]->modify_params(narg-1,&arg[1]); } @@ -734,7 +731,7 @@ void Modify::modify_fix(int narg, char **arg) void Modify::delete_fix(const char *id) { int ifix = find_fix(id); - if (ifix < 0) error->all("Could not find fix ID to delete"); + if (ifix < 0) error->all(FLERR,"Could not find fix ID to delete"); delete fix[ifix]; atom->update_callback(ifix); @@ -765,13 +762,13 @@ int Modify::find_fix(const char *id) void Modify::add_compute(int narg, char **arg, char *suffix) { - if (narg < 3) error->all("Illegal compute command"); + if (narg < 3) error->all(FLERR,"Illegal compute command"); // error check for (int icompute = 0; icompute < ncompute; icompute++) if (strcmp(arg[0],compute[icompute]->id) == 0) - error->all("Reuse of compute ID"); + error->all(FLERR,"Reuse of compute ID"); // extend Compute list if necessary @@ -814,7 +811,7 @@ void Modify::add_compute(int narg, char **arg, char *suffix) #undef ComputeStyle #undef COMPUTE_CLASS - else error->all("Invalid compute style"); + else error->all(FLERR,"Invalid compute style"); } ncompute++; @@ -826,14 +823,14 @@ void Modify::add_compute(int narg, char **arg, char *suffix) void Modify::modify_compute(int narg, char **arg) { - if (narg < 2) error->all("Illegal compute_modify command"); + if (narg < 2) error->all(FLERR,"Illegal compute_modify command"); // lookup Compute ID int icompute; for (icompute = 0; icompute < ncompute; icompute++) if (strcmp(arg[0],compute[icompute]->id) == 0) break; - if (icompute == ncompute) error->all("Could not find compute_modify ID"); + if (icompute == ncompute) error->all(FLERR,"Could not find compute_modify ID"); compute[icompute]->modify_params(narg-1,&arg[1]); } @@ -845,7 +842,7 @@ void Modify::modify_compute(int narg, char **arg) void Modify::delete_compute(char *id) { int icompute = find_compute(id); - if (icompute < 0) error->all("Could not find compute ID to delete"); + if (icompute < 0) error->all(FLERR,"Could not find compute ID to delete"); delete compute[icompute]; // move other Computes down in list one slot diff --git a/src/neigh_bond.cpp b/src/neigh_bond.cpp index b16598011e..f9ff7f07e0 100644 --- a/src/neigh_bond.cpp +++ b/src/neigh_bond.cpp @@ -46,7 +46,7 @@ void Neighbor::bond_all() sprintf(str, "Bond atoms %d %d missing on proc %d at step " BIGINT_FORMAT, tag[i],bond_atom[i][m],me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (newton_bond || i < atom1) { if (nbondlist == maxbond) { @@ -85,7 +85,7 @@ void Neighbor::bond_partial() sprintf(str, "Bond atoms %d %d missing on proc %d at step " BIGINT_FORMAT, tag[i],bond_atom[i][m],me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (newton_bond || i < atom1) { if (nbondlist == maxbond) { @@ -128,7 +128,7 @@ void Neighbor::angle_all() BIGINT_FORMAT, angle_atom1[i][m],angle_atom2[i][m],angle_atom3[i][m], me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (newton_bond || (i <= atom1 && i <= atom2 && i <= atom3)) { if (nanglelist == maxangle) { @@ -173,7 +173,7 @@ void Neighbor::angle_partial() BIGINT_FORMAT, angle_atom1[i][m],angle_atom2[i][m],angle_atom3[i][m], me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (newton_bond || (i <= atom1 && i <= atom2 && i <= atom3)) { if (nanglelist == maxangle) { @@ -220,7 +220,7 @@ void Neighbor::dihedral_all() dihedral_atom1[i][m],dihedral_atom2[i][m], dihedral_atom3[i][m],dihedral_atom4[i][m], me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (newton_bond || (i <= atom1 && i <= atom2 && i <= atom3 && i <= atom4)) { @@ -270,7 +270,7 @@ void Neighbor::dihedral_partial() dihedral_atom1[i][m],dihedral_atom2[i][m], dihedral_atom3[i][m],dihedral_atom4[i][m], me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (newton_bond || (i <= atom1 && i <= atom2 && i <= atom3 && i <= atom4)) { @@ -319,7 +319,7 @@ void Neighbor::improper_all() improper_atom1[i][m],improper_atom2[i][m], improper_atom3[i][m],improper_atom4[i][m], me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (newton_bond || (i <= atom1 && i <= atom2 && i <= atom3 && i <= atom4)) { @@ -369,7 +369,7 @@ void Neighbor::improper_partial() improper_atom1[i][m],improper_atom2[i][m], improper_atom3[i][m],improper_atom4[i][m], me,update->ntimestep); - error->one(str); + error->one(FLERR,str); } if (newton_bond || (i <= atom1 && i <= atom2 && i <= atom3 && i <= atom4)) { diff --git a/src/neigh_derive.cpp b/src/neigh_derive.cpp index c3d3eb0245..21e7c0c6c1 100644 --- a/src/neigh_derive.cpp +++ b/src/neigh_derive.cpp @@ -73,7 +73,7 @@ void Neighbor::half_from_full_no_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -151,7 +151,7 @@ void Neighbor::half_from_full_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -224,7 +224,7 @@ void Neighbor::skip_from(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -326,7 +326,7 @@ void Neighbor::skip_from_granular(NeighList *list) firstshear[i] = shearptr; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -465,20 +465,20 @@ void Neighbor::skip_from_respa(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; npnt_inner += n_inner; if (npnt_inner >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); if (respamiddle) { firstneigh_middle[i] = neighptr_middle; numneigh_middle[i] = n_middle; npnt_middle += n_middle; if (npnt_middle >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } } diff --git a/src/neigh_full.cpp b/src/neigh_full.cpp index c667ab6160..f35acdb4e3 100644 --- a/src/neigh_full.cpp +++ b/src/neigh_full.cpp @@ -99,7 +99,7 @@ void Neighbor::full_nsq(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -108,7 +108,7 @@ void Neighbor::full_nsq(NeighList *list) /* ---------------------------------------------------------------------- N^2 search for all neighbors - include neighbors of ghost atoms + include neighbors of ghost atoms, but no "special neighbors" for ghosts every neighbor pair appears in list of both atoms i and j ------------------------------------------------------------------------- */ @@ -187,12 +187,9 @@ void Neighbor::full_nsq_ghost(NeighList *list) dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighghostsq[itype][jtype]) { - if (molecular) { - which = find_special(special[i],nspecial[i],tag[j]); - if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } + + if (rsq <= cutneighghostsq[itype][jtype]) + neighptr[n++] = j; } } @@ -201,7 +198,8 @@ void Neighbor::full_nsq_ghost(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR, + "Neighbor list overflow, boost neigh_modify one or page"); } list->inum = atom->nlocal; @@ -295,7 +293,8 @@ void Neighbor::full_bin(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR, + "Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -304,7 +303,7 @@ void Neighbor::full_bin(NeighList *list) /* ---------------------------------------------------------------------- binned neighbor list construction for all neighbors - include neighbors of ghost atoms + include neighbors of ghost atoms, but no "special neighbors" for ghosts every neighbor pair appears in list of both atoms i and j ------------------------------------------------------------------------- */ @@ -407,13 +406,9 @@ void Neighbor::full_bin_ghost(NeighList *list) dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighghostsq[itype][jtype]) { - if (molecular) { - which = find_special(special[i],nspecial[i],tag[j]); - if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } + + if (rsq <= cutneighghostsq[itype][jtype]) + neighptr[n++] = j; } } } @@ -423,7 +418,8 @@ void Neighbor::full_bin_ghost(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR, + "Neighbor list overflow, boost neigh_modify one or page"); } list->inum = atom->nlocal; @@ -525,7 +521,7 @@ void Neighbor::full_multi(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; diff --git a/src/neigh_gran.cpp b/src/neigh_gran.cpp index ce75b16afc..7e7c282f5c 100644 --- a/src/neigh_gran.cpp +++ b/src/neigh_gran.cpp @@ -157,7 +157,7 @@ void Neighbor::granular_nsq_no_newton(NeighList *list) } npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -255,7 +255,7 @@ void Neighbor::granular_nsq_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -409,7 +409,7 @@ void Neighbor::granular_bin_no_newton(NeighList *list) } npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -519,7 +519,7 @@ void Neighbor::granular_bin_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -617,7 +617,7 @@ void Neighbor::granular_bin_newton_tri(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; diff --git a/src/neigh_half_bin.cpp b/src/neigh_half_bin.cpp index e776b82030..e1487897f7 100644 --- a/src/neigh_half_bin.cpp +++ b/src/neigh_half_bin.cpp @@ -109,7 +109,7 @@ void Neighbor::half_bin_no_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -228,7 +228,7 @@ void Neighbor::half_bin_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -331,7 +331,7 @@ void Neighbor::half_bin_newton_tri(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; diff --git a/src/neigh_half_multi.cpp b/src/neigh_half_multi.cpp index d0a8efcd2b..04e25931be 100644 --- a/src/neigh_half_multi.cpp +++ b/src/neigh_half_multi.cpp @@ -117,7 +117,7 @@ void Neighbor::half_multi_no_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -246,7 +246,7 @@ void Neighbor::half_multi_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -359,7 +359,7 @@ void Neighbor::half_multi_newton_tri(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; diff --git a/src/neigh_half_nsq.cpp b/src/neigh_half_nsq.cpp index 1df4865984..32792a678f 100644 --- a/src/neigh_half_nsq.cpp +++ b/src/neigh_half_nsq.cpp @@ -99,7 +99,7 @@ void Neighbor::half_nsq_no_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; @@ -203,7 +203,7 @@ void Neighbor::half_nsq_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } list->inum = inum; diff --git a/src/neigh_list.cpp b/src/neigh_list.cpp index dbd8f0d4a0..13dc4a217f 100644 --- a/src/neigh_list.cpp +++ b/src/neigh_list.cpp @@ -15,17 +15,12 @@ #include "neigh_list.h" #include "atom.h" #include "comm.h" +#include "update.h" #include "neighbor.h" #include "neigh_request.h" #include "memory.h" #include "error.h" - - -#include "update.h" - - - using namespace LAMMPS_NS; #define PGDELTA 1 @@ -188,18 +183,18 @@ void NeighList::stencil_allocate(int smax, int style) int **NeighList::add_pages() { - int npage = maxpage; + int toppage = maxpage; maxpage += PGDELTA; pages = (int **) memory->srealloc(pages,maxpage*sizeof(int *),"neighlist:pages"); - for (int i = npage; i < maxpage; i++) + for (int i = toppage; i < maxpage; i++) memory->create(pages[i],pgsize,"neighlist:pages[i]"); if (dnum) { dpages = (double **) memory->srealloc(dpages,maxpage*sizeof(double *),"neighlist:dpages"); - for (int i = npage; i < maxpage; i++) + for (int i = toppage; i < maxpage; i++) memory->create(dpages[i],dnum*pgsize,"neighlist:dpages[i]"); } @@ -255,6 +250,8 @@ void NeighList::print_attributes() printf(" %d = occasional\n",rq->occasional); printf(" %d = dnum\n",rq->dnum); printf(" %d = ghost\n",rq->ghost); + printf(" %d = cudable\n",rq->cudable); + printf(" %d = omp\n",rq->omp); printf(" %d = copy\n",rq->copy); printf(" %d = skip\n",rq->skip); printf(" %d = otherlist\n",rq->otherlist); diff --git a/src/neigh_request.cpp b/src/neigh_request.cpp index 82c9f0b267..2146009a99 100644 --- a/src/neigh_request.cpp +++ b/src/neigh_request.cpp @@ -44,6 +44,8 @@ NeighRequest::NeighRequest(LAMMPS *lmp) : Pointers(lmp) // default is encode special bond flags // default is no auxiliary floating point values // default is no neighbors of ghosts + // default is no CUDA neighbor list build + // default is no multi-threaded neighbor list build occasional = 0; newton = 0; @@ -51,6 +53,7 @@ NeighRequest::NeighRequest(LAMMPS *lmp) : Pointers(lmp) dnum = 0; ghost = 0; cudable = 0; + omp = 0; // default is no copy or skip @@ -101,6 +104,7 @@ int NeighRequest::identical(NeighRequest *other) if (dnum != other->dnum) same = 0; if (ghost != other->ghost) same = 0; if (cudable != other->cudable) same = 0; + if (omp != other->omp) same = 0; if (copy != other->copy) same = 0; if (same_skip(other) == 0) same = 0; @@ -129,6 +133,7 @@ int NeighRequest::same_kind(NeighRequest *other) if (newton != other->newton) same = 0; if (ghost != other->ghost) same = 0; if (cudable != other->cudable) same = 0; + if (omp != other->omp) same = 0; return same; } @@ -178,4 +183,5 @@ void NeighRequest::copy_request(NeighRequest *other) dnum = other->dnum; ghost = other->ghost; cudable = other->cudable; + omp = other->omp; } diff --git a/src/neigh_request.h b/src/neigh_request.h index afff5966c0..e3dcc915a7 100644 --- a/src/neigh_request.h +++ b/src/neigh_request.h @@ -76,6 +76,10 @@ class NeighRequest : protected Pointers { int cudable; + // 1 if using multi-threaded neighbor list build + + int omp; + // set by neighbor and pair_hybrid after all requests are made // these settings do not change kind value diff --git a/src/neigh_respa.cpp b/src/neigh_respa.cpp index a5190316ff..8e1e7b79e0 100644 --- a/src/neigh_respa.cpp +++ b/src/neigh_respa.cpp @@ -151,14 +151,14 @@ void Neighbor::respa_nsq_no_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); ilist_inner[inum] = i; firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; npnt_inner += n_inner; if (npnt_inner >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); if (respamiddle) { ilist_middle[inum] = i; @@ -166,7 +166,7 @@ void Neighbor::respa_nsq_no_newton(NeighList *list) numneigh_middle[i] = n_middle; npnt_middle += n_middle; if (npnt_middle >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } inum++; @@ -328,14 +328,14 @@ void Neighbor::respa_nsq_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); ilist_inner[inum] = i; firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; npnt_inner += n_inner; if (npnt_inner >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); if (respamiddle) { ilist_middle[inum] = i; @@ -343,7 +343,7 @@ void Neighbor::respa_nsq_newton(NeighList *list) numneigh_middle[i] = n_middle; npnt_middle += n_middle; if (npnt_middle >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } inum++; @@ -498,14 +498,14 @@ void Neighbor::respa_bin_no_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); ilist_inner[inum] = i; firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; npnt_inner += n_inner; if (npnt_inner >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); if (respamiddle) { ilist_middle[inum] = i; @@ -513,7 +513,7 @@ void Neighbor::respa_bin_no_newton(NeighList *list) numneigh_middle[i] = n_middle; npnt_middle += n_middle; if (npnt_middle >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } inum++; @@ -703,14 +703,14 @@ void Neighbor::respa_bin_newton(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); ilist_inner[inum] = i; firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; npnt_inner += n_inner; if (npnt_inner >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); if (respamiddle) { ilist_middle[inum] = i; @@ -718,7 +718,7 @@ void Neighbor::respa_bin_newton(NeighList *list) numneigh_middle[i] = n_middle; npnt_middle += n_middle; if (npnt_middle >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } inum++; @@ -880,14 +880,14 @@ void Neighbor::respa_bin_newton_tri(NeighList *list) numneigh[i] = n; npnt += n; if (n > oneatom || npnt >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); ilist_inner[inum] = i; firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; npnt_inner += n_inner; if (npnt_inner >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); if (respamiddle) { ilist_middle[inum] = i; @@ -895,7 +895,7 @@ void Neighbor::respa_bin_newton_tri(NeighList *list) numneigh_middle[i] = n_middle; npnt_middle += n_middle; if (npnt_middle >= pgsize) - error->one("Neighbor list overflow, boost neigh_modify one or page"); + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one or page"); } inum++; diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 141841d80d..24e4285b50 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -49,9 +49,6 @@ using namespace LAMMPS_NS; #define BIG 1.0e20 #define CUT2BIN_RATIO 100 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - enum{NSQ,BIN,MULTI}; // also in neigh_list.cpp //#define NEIGH_LIST_DEBUG 1 @@ -196,10 +193,10 @@ void Neighbor::init() // error check if (delay > 0 && (delay % every) != 0) - error->all("Neighbor delay must be 0 or multiple of every setting"); + error->all(FLERR,"Neighbor delay must be 0 or multiple of every setting"); if (pgsize < 10*oneatom) - error->all("Neighbor page size must be >= 10x the one atom setting"); + error->all(FLERR,"Neighbor page size must be >= 10x the one atom setting"); // ------------------------------------------------------------------ // settings @@ -382,7 +379,7 @@ void Neighbor::init() for (i = 0; i < nex_type; i++) { if (ex1_type[i] <= 0 || ex1_type[i] > n || ex2_type[i] <= 0 || ex2_type[i] > n) - error->all("Invalid atom type in neighbor exclusion list"); + error->all(FLERR,"Invalid atom type in neighbor exclusion list"); ex_type[ex1_type[i]][ex2_type[i]] = 1; ex_type[ex2_type[i]][ex1_type[i]] = 1; } @@ -857,16 +854,16 @@ void Neighbor::choose_build(int index, NeighRequest *rq) if (style == NSQ) { if (rq->ghost == 0) pb = &Neighbor::full_nsq; else if (includegroup) - error->all("Neighbor include group not allowed with ghost neighbors"); + error->all(FLERR,"Neighbor include group not allowed with ghost neighbors"); else if (rq->ghost == 1) pb = &Neighbor::full_nsq_ghost; } else if (style == BIN) { if (rq->ghost == 0) pb = &Neighbor::full_bin; else if (includegroup) - error->all("Neighbor include group not allowed with ghost neighbors"); + error->all(FLERR,"Neighbor include group not allowed with ghost neighbors"); else if (rq->ghost == 1) pb = &Neighbor::full_bin_ghost; } else if (style == MULTI) { if (rq->ghost == 0) pb = &Neighbor::full_multi; - else error->all("Neighbor multi not yet enabled for ghost neighbors"); + else error->all(FLERR,"Neighbor multi not yet enabled for ghost neighbors"); } } else if (rq->gran) { @@ -878,7 +875,7 @@ void Neighbor::choose_build(int index, NeighRequest *rq) else if (triclinic == 0) pb = &Neighbor::granular_bin_newton; else if (triclinic == 1) pb = &Neighbor::granular_bin_newton_tri; } else if (style == MULTI) - error->all("Neighbor multi not yet enabled for granular"); + error->all(FLERR,"Neighbor multi not yet enabled for granular"); } else if (rq->respaouter) { if (style == NSQ) { @@ -889,13 +886,13 @@ void Neighbor::choose_build(int index, NeighRequest *rq) else if (triclinic == 0) pb = &Neighbor::respa_bin_newton; else if (triclinic == 1) pb = &Neighbor::respa_bin_newton_tri; } else if (style == MULTI) - error->all("Neighbor multi not yet enabled for rRESPA"); + error->all(FLERR,"Neighbor multi not yet enabled for rRESPA"); } // general error check if (rq->ghost && !rq->full) - error->all("Neighbors of ghost atoms only allowed for full neighbor lists"); + error->all(FLERR,"Neighbors of ghost atoms only allowed for full neighbor lists"); pair_build[index] = pb; } @@ -1181,7 +1178,7 @@ void Neighbor::build() // check that neighbor list with special bond flags will not overflow if (atom->nlocal+atom->nghost > NEIGHMASK) - error->one("Too many local+ghost atoms for neighbor list"); + error->one(FLERR,"Too many local+ghost atoms for neighbor list"); // invoke building of pair and molecular neighbor lists // only for pairwise lists with buildflag set @@ -1224,7 +1221,7 @@ void Neighbor::build_one(int i) // check that neighbor list with special bond flags will not overflow if (atom->nlocal+atom->nghost > NEIGHMASK) - error->one("Too many local+ghost atoms for neighbor list"); + error->one(FLERR,"Too many local+ghost atoms for neighbor list"); // when occasional list built, LAMMPS can crash if atoms have moved too far // why is this?, give warning if this is the case @@ -1235,7 +1232,7 @@ void Neighbor::build_one(int i) int flag = 0; if (dist_check && update->whichflag) flag = check_distance(); if (flag && me == 0) - error->warning("Building an occasional neighobr list when " + error->warning(FLERR,"Building an occasional neighobr list when " "atoms may have moved too far"); (this->*pair_build[i])(lists[i]); @@ -1313,7 +1310,7 @@ void Neighbor::setup_bins() if (bbox[0]*binsizeinv > MAXSMALLINT || bbox[1]*binsizeinv > MAXSMALLINT || bbox[2]*binsizeinv > MAXSMALLINT) - error->all("Domain too large for neighbor bins"); + error->all(FLERR,"Domain too large for neighbor bins"); // create actual bins // always have one bin even if cutoff > bbox @@ -1345,7 +1342,7 @@ void Neighbor::setup_bins() if (binsize_optimal*bininvx > CUT2BIN_RATIO || binsize_optimal*bininvy > CUT2BIN_RATIO || binsize_optimal*bininvz > CUT2BIN_RATIO) - error->all("Cannot use neighbor bins - box size << cutoff"); + error->all(FLERR,"Cannot use neighbor bins - box size << cutoff"); // mbinlo/hi = lowest and highest global bins my ghost atoms could be in // coord = lowest and highest values of coords for my ghost atoms @@ -1395,7 +1392,7 @@ void Neighbor::setup_bins() // memory for bin ptrs bigint bbin = mbinx*mbiny*mbinz; - if (bbin > MAXSMALLINT) error->one("Too many neighbor bins"); + if (bbin > MAXSMALLINT) error->one(FLERR,"Too many neighbor bins"); mbins = bbin; if (mbins > maxhead) { maxhead = mbins; @@ -1455,15 +1452,15 @@ double Neighbor::bin_distance(int i, int j, int k) void Neighbor::set(int narg, char **arg) { - if (narg != 2) error->all("Illegal neighbor command"); + if (narg != 2) error->all(FLERR,"Illegal neighbor command"); skin = atof(arg[0]); - if (skin < 0.0) error->all("Illegal neighbor command"); + if (skin < 0.0) error->all(FLERR,"Illegal neighbor command"); if (strcmp(arg[1],"nsq") == 0) style = NSQ; else if (strcmp(arg[1],"bin") == 0) style = BIN; else if (strcmp(arg[1],"multi") == 0) style = MULTI; - else error->all("Illegal neighbor command"); + else error->all(FLERR,"Illegal neighbor command"); } /* ---------------------------------------------------------------------- @@ -1475,55 +1472,55 @@ void Neighbor::modify_params(int narg, char **arg) int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"every") == 0) { - if (iarg+2 > narg) error->all("Illegal neigh_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal neigh_modify command"); every = atoi(arg[iarg+1]); - if (every <= 0) error->all("Illegal neigh_modify command"); + if (every <= 0) error->all(FLERR,"Illegal neigh_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"delay") == 0) { - if (iarg+2 > narg) error->all("Illegal neigh_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal neigh_modify command"); delay = atoi(arg[iarg+1]); - if (delay < 0) error->all("Illegal neigh_modify command"); + if (delay < 0) error->all(FLERR,"Illegal neigh_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"check") == 0) { - if (iarg+2 > narg) error->all("Illegal neigh_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal neigh_modify command"); if (strcmp(arg[iarg+1],"yes") == 0) dist_check = 1; else if (strcmp(arg[iarg+1],"no") == 0) dist_check = 0; - else error->all("Illegal neigh_modify command"); + else error->all(FLERR,"Illegal neigh_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"once") == 0) { - if (iarg+2 > narg) error->all("Illegal neigh_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal neigh_modify command"); if (strcmp(arg[iarg+1],"yes") == 0) build_once = 1; else if (strcmp(arg[iarg+1],"no") == 0) build_once = 0; - else error->all("Illegal neigh_modify command"); + else error->all(FLERR,"Illegal neigh_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"page") == 0) { - if (iarg+2 > narg) error->all("Illegal neigh_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal neigh_modify command"); pgsize = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"one") == 0) { - if (iarg+2 > narg) error->all("Illegal neigh_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal neigh_modify command"); oneatom = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"binsize") == 0) { - if (iarg+2 > narg) error->all("Illegal neigh_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal neigh_modify command"); binsize_user = atof(arg[iarg+1]); if (binsize_user <= 0.0) binsizeflag = 0; else binsizeflag = 1; iarg += 2; } else if (strcmp(arg[iarg],"include") == 0) { - if (iarg+2 > narg) error->all("Illegal neigh_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal neigh_modify command"); includegroup = group->find(arg[iarg+1]); if (includegroup < 0) - error->all("Invalid group ID in neigh_modify command"); + error->all(FLERR,"Invalid group ID in neigh_modify command"); if (includegroup && (atom->firstgroupname == NULL || strcmp(arg[iarg+1],atom->firstgroupname) != 0)) - error->all("Neigh_modify include group != atom_modify first group"); + error->all(FLERR,"Neigh_modify include group != atom_modify first group"); iarg += 2; } else if (strcmp(arg[iarg],"exclude") == 0) { - if (iarg+2 > narg) error->all("Illegal neigh_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal neigh_modify command"); if (strcmp(arg[iarg+1],"type") == 0) { - if (iarg+4 > narg) error->all("Illegal neigh_modify command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal neigh_modify command"); if (nex_type == maxex_type) { maxex_type += EXDELTA; memory->grow(ex1_type,maxex_type,"neigh:ex1_type"); @@ -1535,7 +1532,7 @@ void Neighbor::modify_params(int narg, char **arg) iarg += 4; } else if (strcmp(arg[iarg+1],"group") == 0) { - if (iarg+4 > narg) error->all("Illegal neigh_modify command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal neigh_modify command"); if (nex_group == maxex_group) { maxex_group += EXDELTA; memory->grow(ex1_group,maxex_group,"neigh:ex1_group"); @@ -1544,16 +1541,16 @@ void Neighbor::modify_params(int narg, char **arg) ex1_group[nex_group] = group->find(arg[iarg+2]); ex2_group[nex_group] = group->find(arg[iarg+3]); if (ex1_group[nex_group] == -1 || ex2_group[nex_group] == -1) - error->all("Invalid group ID in neigh_modify command"); + error->all(FLERR,"Invalid group ID in neigh_modify command"); nex_group++; iarg += 4; } else if (strcmp(arg[iarg+1],"molecule") == 0) { - if (iarg+3 > narg) error->all("Illegal neigh_modify command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal neigh_modify command"); if (atom->molecule_flag == 0) { char *str = (char *) "Neigh_modify exclude molecule requires atom attribute molecule"; - error->all(str); + error->all(FLERR,str); } if (nex_mol == maxex_mol) { maxex_mol += EXDELTA; @@ -1561,16 +1558,16 @@ void Neighbor::modify_params(int narg, char **arg) } ex_mol_group[nex_mol] = group->find(arg[iarg+2]); if (ex_mol_group[nex_mol] == -1) - error->all("Invalid group ID in neigh_modify command"); + error->all(FLERR,"Invalid group ID in neigh_modify command"); nex_mol++; iarg += 3; } else if (strcmp(arg[iarg+1],"none") == 0) { nex_type = nex_group = nex_mol = 0; iarg += 2; - } else error->all("Illegal neigh_modify command"); + } else error->all(FLERR,"Illegal neigh_modify command"); - } else error->all("Illegal neigh_modify command"); + } else error->all(FLERR,"Illegal neigh_modify command"); } } @@ -1701,9 +1698,8 @@ int Neighbor::coord2bin(double *x, int &ix, int &iy, int &iz) return 1 if should be excluded, 0 if included ------------------------------------------------------------------------- */ -int Neighbor::exclusion(int i, int j, int itype, int jtype, - int *mask, int *molecule) -{ +int Neighbor::exclusion(int i, int j, int itype, int jtype, + int *mask, int *molecule) const { int m; if (nex_type && ex_type[itype][jtype]) return 1; diff --git a/src/neighbor.h b/src/neighbor.h index c2fa635d63..5248c0bd6e 100644 --- a/src/neighbor.h +++ b/src/neighbor.h @@ -164,7 +164,7 @@ class Neighbor : protected Pointers { int coord2bin(double *); // mapping atom coord to a bin int coord2bin(double *, int &, int &, int&); // ditto - int exclusion(int, int, int, int, int *, int *); // test for pair exclusion + int exclusion(int, int, int, int, int *, int *) const; // test for pair exclusion virtual void choose_build(int, class NeighRequest *); void choose_stencil(int, class NeighRequest *); diff --git a/src/output.cpp b/src/output.cpp index de7ed5baa6..50a7cc008b 100644 --- a/src/output.cpp +++ b/src/output.cpp @@ -125,9 +125,9 @@ void Output::init() else if (var_thermo) { ivar_thermo = input->variable->find(var_thermo); if (ivar_thermo < 0) - error->all("Variable name for thermo every does not exist"); + error->all(FLERR,"Variable name for thermo every does not exist"); if (!input->variable->equalstyle(ivar_thermo)) - error->all("Variable for thermo every is invalid style"); + error->all(FLERR,"Variable for thermo every is invalid style"); } for (int i = 0; i < ndump; i++) dump[i]->init(); @@ -135,9 +135,9 @@ void Output::init() if (every_dump[i] == 0) { ivar_dump[i] = input->variable->find(var_dump[i]); if (ivar_dump[i] < 0) - error->all("Variable name for dump every does not exist"); + error->all(FLERR,"Variable name for dump every does not exist"); if (!input->variable->equalstyle(ivar_dump[i])) - error->all("Variable for dump every is invalid style"); + error->all(FLERR,"Variable for dump every is invalid style"); } } @@ -180,7 +180,7 @@ void Output::setup(int flag) int nextdump = static_cast (input->variable->compute_equal(ivar_dump[idump])); if (nextdump <= ntimestep) - error->all("Dump every variable returned a bad timestep"); + error->all(FLERR,"Dump every variable returned a bad timestep"); next_dump[idump] = nextdump; } if (dump[idump]->clearstep) { @@ -223,7 +223,7 @@ void Output::setup(int flag) next_thermo = static_cast (input->variable->compute_equal(ivar_thermo)); if (next_thermo <= ntimestep) - error->all("Thermo every variable returned a bad timestep"); + error->all(FLERR,"Thermo every variable returned a bad timestep"); } else next_thermo = update->laststep; modify->addstep_compute(next_thermo); @@ -260,7 +260,7 @@ void Output::write(bigint ntimestep) int nextdump = static_cast (input->variable->compute_equal(ivar_dump[idump])); if (nextdump <= ntimestep) - error->all("Dump every variable returned a bad timestep"); + error->all(FLERR,"Dump every variable returned a bad timestep"); next_dump[idump] = nextdump; } if (dump[idump]->clearstep) modify->addstep_compute(next_dump[idump]); @@ -309,7 +309,7 @@ void Output::write(bigint ntimestep) next_thermo = static_cast (input->variable->compute_equal(ivar_thermo)); if (next_thermo <= ntimestep) - error->all("Thermo every variable returned a bad timestep"); + error->all(FLERR,"Thermo every variable returned a bad timestep"); } else next_thermo = update->laststep; next_thermo = MYMIN(next_thermo,update->laststep); modify->addstep_compute(next_thermo); @@ -364,15 +364,15 @@ void Output::write_restart(bigint ntimestep) void Output::add_dump(int narg, char **arg) { - if (narg < 5) error->all("Illegal dump command"); + if (narg < 5) error->all(FLERR,"Illegal dump command"); // error checks for (int idump = 0; idump < ndump; idump++) - if (strcmp(arg[0],dump[idump]->id) == 0) error->all("Reuse of dump ID"); + if (strcmp(arg[0],dump[idump]->id) == 0) error->all(FLERR,"Reuse of dump ID"); int igroup = group->find(arg[1]); - if (igroup == -1) error->all("Could not find dump group ID"); - if (atoi(arg[3]) <= 0) error->all("Invalid dump frequency"); + if (igroup == -1) error->all(FLERR,"Could not find dump group ID"); + if (atoi(arg[3]) <= 0) error->all(FLERR,"Invalid dump frequency"); // extend Dump list if necessary @@ -398,10 +398,10 @@ void Output::add_dump(int narg, char **arg) #include "style_dump.h" #undef DUMP_CLASS - else error->all("Invalid dump style"); + else error->all(FLERR,"Invalid dump style"); every_dump[ndump] = atoi(arg[3]); - if (every_dump[ndump] <= 0) error->all("Illegal dump command"); + if (every_dump[ndump] <= 0) error->all(FLERR,"Illegal dump command"); last_dump[ndump] = -1; var_dump[ndump] = NULL; ndump++; @@ -413,14 +413,14 @@ void Output::add_dump(int narg, char **arg) void Output::modify_dump(int narg, char **arg) { - if (narg < 1) error->all("Illegal dump_modify command"); + if (narg < 1) error->all(FLERR,"Illegal dump_modify command"); // find which dump it is int idump; for (idump = 0; idump < ndump; idump++) if (strcmp(arg[0],dump[idump]->id) == 0) break; - if (idump == ndump) error->all("Cound not find dump_modify ID"); + if (idump == ndump) error->all(FLERR,"Cound not find dump_modify ID"); dump[idump]->modify_params(narg-1,&arg[1]); } @@ -436,7 +436,7 @@ void Output::delete_dump(char *id) int idump; for (idump = 0; idump < ndump; idump++) if (strcmp(id,dump[idump]->id) == 0) break; - if (idump == ndump) error->all("Could not find undump ID"); + if (idump == ndump) error->all(FLERR,"Could not find undump ID"); delete dump[idump]; delete [] var_dump[idump]; @@ -460,17 +460,17 @@ void Output::delete_dump(char *id) void Output::create_thermo(int narg, char **arg) { - if (narg < 1) error->all("Illegal thermo_style command"); + if (narg < 1) error->all(FLERR,"Illegal thermo_style command"); // don't allow this so that dipole style can safely allocate inertia vector if (domain->box_exist == 0) - error->all("Thermo_style command before simulation box is defined"); + error->all(FLERR,"Thermo_style command before simulation box is defined"); // warn if previous thermo had been modified via thermo_modify command if (thermo->modified && comm->me == 0) - error->warning("New thermo_style command, " + error->warning(FLERR,"New thermo_style command, " "previous thermo_modify settings will be lost"); // set thermo = NULL in case new Thermo throws an error @@ -487,7 +487,7 @@ void Output::create_thermo(int narg, char **arg) void Output::create_restart(int narg, char **arg) { - if (narg < 1) error->all("Illegal restart command"); + if (narg < 1) error->all(FLERR,"Illegal restart command"); if (restart) delete restart; delete [] restart1; @@ -498,7 +498,7 @@ void Output::create_restart(int narg, char **arg) restart_every = atoi(arg[0]); if (restart_every == 0) { - if (narg != 1) error->all("Illegal restart command"); + if (narg != 1) error->all(FLERR,"Illegal restart command"); return; } @@ -517,7 +517,7 @@ void Output::create_restart(int narg, char **arg) n = strlen(arg[2]) + 1; restart2 = new char[n]; strcpy(restart2,arg[2]); - } else error->all("Illegal restart command"); + } else error->all(FLERR,"Illegal restart command"); } /* ---------------------------------------------------------------------- diff --git a/src/pair.cpp b/src/pair.cpp index 0357188ff9..88e938aea2 100644 --- a/src/pair.cpp +++ b/src/pair.cpp @@ -36,9 +36,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - enum{GEOMETRIC,ARITHMETIC,SIXTHPOWER}; enum{R,RSQ,BMP}; @@ -53,6 +50,7 @@ Pair::Pair(LAMMPS *lmp) : Pointers(lmp) comm_forward = comm_reverse = 0; single_enable = 1; + restartinfo = 1; respa_enable = 0; one_coeff = 0; no_virial_fdotr_compute = 0; @@ -92,40 +90,40 @@ Pair::~Pair() void Pair::modify_params(int narg, char **arg) { - if (narg == 0) error->all("Illegal pair_modify command"); + if (narg == 0) error->all(FLERR,"Illegal pair_modify command"); int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"mix") == 0) { - if (iarg+2 > narg) error->all("Illegal pair_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal pair_modify command"); if (strcmp(arg[iarg+1],"geometric") == 0) mix_flag = GEOMETRIC; else if (strcmp(arg[iarg+1],"arithmetic") == 0) mix_flag = ARITHMETIC; else if (strcmp(arg[iarg+1],"sixthpower") == 0) mix_flag = SIXTHPOWER; - else error->all("Illegal pair_modify command"); + else error->all(FLERR,"Illegal pair_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"shift") == 0) { - if (iarg+2 > narg) error->all("Illegal pair_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal pair_modify command"); if (strcmp(arg[iarg+1],"yes") == 0) offset_flag = 1; else if (strcmp(arg[iarg+1],"no") == 0) offset_flag = 0; - else error->all("Illegal pair_modify command"); + else error->all(FLERR,"Illegal pair_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"table") == 0) { - if (iarg+2 > narg) error->all("Illegal pair_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal pair_modify command"); ncoultablebits = atoi(arg[iarg+1]); if (ncoultablebits > sizeof(float)*CHAR_BIT) - error->all("Too many total bits for bitmapped lookup table"); + error->all(FLERR,"Too many total bits for bitmapped lookup table"); iarg += 2; } else if (strcmp(arg[iarg],"tabinner") == 0) { - if (iarg+2 > narg) error->all("Illegal pair_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal pair_modify command"); tabinner = atof(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"tail") == 0) { - if (iarg+2 > narg) error->all("Illegal pair_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal pair_modify command"); if (strcmp(arg[iarg+1],"yes") == 0) tail_flag = 1; else if (strcmp(arg[iarg+1],"no") == 0) tail_flag = 0; - else error->all("Illegal pair_modify command"); + else error->all(FLERR,"Illegal pair_modify command"); iarg += 2; - } else error->all("Illegal pair_modify command"); + } else error->all(FLERR,"Illegal pair_modify command"); } } @@ -136,19 +134,19 @@ void Pair::init() int i,j; if (offset_flag && tail_flag) - error->all("Cannot have both pair_modify shift and tail set to yes"); + error->all(FLERR,"Cannot have both pair_modify shift and tail set to yes"); if (tail_flag && domain->dimension == 2) - error->all("Cannot use pair tail corrections with 2d simulations"); + error->all(FLERR,"Cannot use pair tail corrections with 2d simulations"); if (tail_flag && domain->nonperiodic && comm->me == 0) - error->warning("Using pair tail corrections with nonperiodic system"); + error->warning(FLERR,"Using pair tail corrections with nonperiodic system"); - if (!allocated) error->all("All pair coeffs are not set"); + if (!allocated) error->all(FLERR,"All pair coeffs are not set"); // I,I coeffs must be set // init_one() will check if I,J is set explicitly or inferred by mixing for (i = 1; i <= atom->ntypes; i++) - if (setflag[i][i] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][i] == 0) error->all(FLERR,"All pair coeffs are not set"); // style-specific initialization @@ -284,12 +282,12 @@ void Pair::ev_setup(int eflag, int vflag) if (eflag_atom && atom->nmax > maxeatom) { maxeatom = atom->nmax; memory->destroy(eatom); - memory->create(eatom,maxeatom,"pair:eatom"); + memory->create(eatom,comm->nthreads*maxeatom,"pair:eatom"); } if (vflag_atom && atom->nmax > maxvatom) { maxvatom = atom->nmax; memory->destroy(vatom); - memory->create(vatom,maxvatom,6,"pair:vatom"); + memory->create(vatom,comm->nthreads*maxvatom,6,"pair:vatom"); } // zero accumulators @@ -762,6 +760,28 @@ void Pair::ev_tally_list(int n, int *list, double ecoul, double *v) } } +/* ---------------------------------------------------------------------- + tally virial into per-atom accumulators + called by REAX/C potential, newton_pair is always on + fi is magnitude of force on atom i +------------------------------------------------------------------------- */ + +void Pair::v_tally(int i, double *fi) +{ + double v[6]; + double **x = atom->x; + + v[0] = x[i][0]*fi[0]; + v[1] = x[i][1]*fi[1]; + v[2] = x[i][2]*fi[2]; + v[3] = x[i][0]*fi[1]; + v[4] = x[i][0]*fi[1]; + v[5] = x[i][1]*fi[2]; + + vatom[i][0] += v[0]; vatom[i][1] += v[1]; vatom[i][2] += v[2]; + vatom[i][3] += v[3]; vatom[i][4] += v[4]; vatom[i][5] += v[5]; +} + /* ---------------------------------------------------------------------- tally virial into per-atom accumulators called by AIREBO potential, newton_pair is always on @@ -959,15 +979,15 @@ void Pair::virial_fdotr_compute() void Pair::write_file(int narg, char **arg) { - if (narg < 8) error->all("Illegal pair_write command"); - if (single_enable == 0) error->all("Pair style does not support pair_write"); + if (narg < 8) error->all(FLERR,"Illegal pair_write command"); + if (single_enable == 0) error->all(FLERR,"Pair style does not support pair_write"); // parse arguments int itype = atoi(arg[0]); int jtype = atoi(arg[1]); if (itype < 1 || itype > atom->ntypes || jtype < 1 || jtype > atom->ntypes) - error->all("Invalid atom types in pair_write command"); + error->all(FLERR,"Invalid atom types in pair_write command"); int n = atoi(arg[2]); @@ -975,12 +995,12 @@ void Pair::write_file(int narg, char **arg) if (strcmp(arg[3],"r") == 0) style = R; else if (strcmp(arg[3],"rsq") == 0) style = RSQ; else if (strcmp(arg[3],"bitmap") == 0) style = BMP; - else error->all("Invalid style in pair_write command"); + else error->all(FLERR,"Invalid style in pair_write command"); double inner = atof(arg[4]); double outer = atof(arg[5]); if (inner <= 0.0 || inner >= outer) - error->all("Invalid cutoffs in pair_write command"); + error->all(FLERR,"Invalid cutoffs in pair_write command"); // open file in append mode // print header in format used by pair_style table @@ -990,7 +1010,7 @@ void Pair::write_file(int narg, char **arg) FILE *fp; if (me == 0) { fp = fopen(arg[6],"a"); - if (fp == NULL) error->one("Cannot open pair_write file"); + if (fp == NULL) error->one(FLERR,"Cannot open pair_write file"); fprintf(fp,"# Pair potential %s for atom types %d %d: i,r,energy,force\n", force->pair_style,itype,jtype); if (style == R) @@ -1084,12 +1104,12 @@ void Pair::init_bitmap(double inner, double outer, int ntablebits, int &masklo, int &maskhi, int &nmask, int &nshiftbits) { if (sizeof(int) != sizeof(float)) - error->all("Bitmapped lookup tables require int/float be same size"); + error->all(FLERR,"Bitmapped lookup tables require int/float be same size"); if (ntablebits > sizeof(float)*CHAR_BIT) - error->all("Too many total bits for bitmapped lookup table"); + error->all(FLERR,"Too many total bits for bitmapped lookup table"); - if (inner >= outer) error->warning("Table inner cutoff >= outer cutoff"); + if (inner >= outer) error->warning(FLERR,"Table inner cutoff >= outer cutoff"); int nlowermin = 1; while (!((pow(double(2),nlowermin) <= inner*inner) && @@ -1110,10 +1130,10 @@ void Pair::init_bitmap(double inner, double outer, int ntablebits, int nmantbits = ntablebits - nexpbits; if (nexpbits > sizeof(float)*CHAR_BIT - FLT_MANT_DIG) - error->all("Too many exponent bits for lookup table"); + error->all(FLERR,"Too many exponent bits for lookup table"); if (nmantbits+1 > FLT_MANT_DIG) - error->all("Too many mantissa bits for lookup table"); - if (nmantbits < 3) error->all("Too few bits for lookup table"); + error->all(FLERR,"Too many mantissa bits for lookup table"); + if (nmantbits < 3) error->all(FLERR,"Too few bits for lookup table"); nshiftbits = FLT_MANT_DIG - (nmantbits+1); @@ -1132,7 +1152,7 @@ void Pair::init_bitmap(double inner, double outer, int ntablebits, double Pair::memory_usage() { - double bytes = maxeatom * sizeof(double); - bytes += maxvatom*6 * sizeof(double); + double bytes = comm->nthreads*maxeatom * sizeof(double); + bytes += comm->nthreads*maxvatom*6 * sizeof(double); return bytes; } diff --git a/src/pair.h b/src/pair.h index 86b05da84d..6a88af5e07 100644 --- a/src/pair.h +++ b/src/pair.h @@ -20,8 +20,11 @@ namespace LAMMPS_NS { class Pair : protected Pointers { friend class BondQuartic; + friend class BondQuarticOMP; friend class DihedralCharmm; + friend class DihedralCharmmOMP; friend class FixGPU; + friend class ThrOMP; public: double eng_vdwl,eng_coul; // accumulated energies @@ -36,6 +39,7 @@ class Pair : protected Pointers { int comm_reverse; // size of reverse communication (0 if none) int single_enable; // 1 if single() routine exists + int restartinfo; // 1 if pair style writes restart info int respa_enable; // 1 if inner/middle/outer rRESPA routines int one_coeff; // 1 if allows only one coeff * * call int no_virial_fdotr_compute; // 1 if does not invoke virial_fdotr_compute() @@ -70,6 +74,17 @@ class Pair : protected Pointers { void init_bitmap(double, double, int, int &, int &, int &, int &); virtual void modify_params(int, char **); + // need to be public, so can be called by pair_style reaxc + + void v_tally(int, double *); + void ev_tally(int, int, int, int, double, double, double, + double, double, double); + void ev_tally3(int, int, int, double, double, + double *, double *, double *, double *); + void v_tally3(int, int, int, double *, double *, double *, double *); + void v_tally4(int, int, int, int, double *, double *, double *, + double *, double *, double *); + // general child-class methods virtual void compute(int, int) = 0; @@ -124,26 +139,20 @@ class Pair : protected Pointers { int evflag; // energy,virial settings int eflag_either,eflag_global,eflag_atom; int vflag_either,vflag_global,vflag_atom; + int vflag_fdotr; int maxeatom,maxvatom; virtual void ev_setup(int, int); - void ev_tally(int, int, int, int, double, double, double, - double, double, double); void ev_tally_full(int, double, double, double, double, double, double); void ev_tally_xyz(int, int, int, int, double, double, double, double, double, double, double, double); void ev_tally_xyz_full(int, double, double, double, double, double, double, double, double); - void ev_tally3(int, int, int, double, double, - double *, double *, double *, double *); void ev_tally4(int, int, int, int, double, double *, double *, double *, double *, double *, double *); void ev_tally_list(int, int *, double, double *); void v_tally2(int, int, double, double *); - void v_tally3(int, int, int, double *, double *, double *, double *); - void v_tally4(int, int, int, int, double *, double *, double *, - double *, double *, double *); void v_tally_tensor(int, int, int, int, double, double, double, double, double, double); void virial_fdotr_compute(); diff --git a/src/pair_born.cpp b/src/pair_born.cpp index 926a3194e7..271b7b1f7a 100644 --- a/src/pair_born.cpp +++ b/src/pair_born.cpp @@ -24,13 +24,12 @@ #include "comm.h" #include "force.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -174,7 +173,7 @@ void PairBorn::allocate() void PairBorn::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = atof(arg[0]); @@ -194,7 +193,7 @@ void PairBorn::settings(int narg, char **arg) void PairBorn::coeff(int narg, char **arg) { - if (narg < 7 || narg > 8) error->all("Incorrect args for pair coefficients"); + if (narg < 7 || narg > 8) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -204,7 +203,7 @@ void PairBorn::coeff(int narg, char **arg) double a_one = force->numeric(arg[2]); double rho_one = force->numeric(arg[3]); double sigma_one = force->numeric(arg[4]); - if (rho_one <= 0) error->all("Incorrect args for pair coefficients"); + if (rho_one <= 0) error->all(FLERR,"Incorrect args for pair coefficients"); double c_one = force->numeric(arg[5]); double d_one = force->numeric(arg[6]); @@ -225,7 +224,7 @@ void PairBorn::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -234,7 +233,7 @@ void PairBorn::coeff(int narg, char **arg) double PairBorn::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); rhoinv[i][j] = 1.0/rho[i][j]; born1[i][j] = a[i][j]/rho[i][j]; @@ -272,7 +271,6 @@ double PairBorn::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double rho1 = rho[i][j]; double rho2 = rho1*rho1; double rho3 = rho2*rho1; @@ -280,11 +278,11 @@ double PairBorn::init_one(int i, int j) double rc2 = rc*rc; double rc3 = rc2*rc; double rc5 = rc3*rc2; - etail_ij = 2.0*PI*all[0]*all[1] * + etail_ij = 2.0*MY_PI*all[0]*all[1] * (a[i][j]*exp((sigma[i][j]-rc)/rho1)*rho1* (rc2 + 2.0*rho1*rc + 2.0*rho2) - c[i][j]/(3.0*rc3) + d[i][j]/(5.0*rc5)); - ptail_ij = (-1/3.0)*2.0*PI*all[0]*all[1] * + ptail_ij = (-1/3.0)*2.0*MY_PI*all[0]*all[1] * (-a[i][j]*exp((sigma[i][j]-rc)/rho1) * (rc3 + 3.0*rho1*rc2 + 6.0*rho2*rc + 6.0*rho3) + 2.0*c[i][j]/rc3 - 8.0*d[i][j]/(5.0*rc5)); diff --git a/src/pair_born.h b/src/pair_born.h index 20fe5db8cb..716392eb83 100644 --- a/src/pair_born.h +++ b/src/pair_born.h @@ -27,8 +27,9 @@ namespace LAMMPS_NS { class PairBorn : public Pair { public: PairBorn(class LAMMPS *); - ~PairBorn(); - void compute(int, int); + virtual ~PairBorn(); + + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); @@ -39,7 +40,7 @@ class PairBorn : public Pair { double single(int, int, int, int, double, double, double, double &); void *extract(char *, int &); - private: + protected: double cut_global; double **cut; double **a,**rho,**sigma,**c, **d; diff --git a/src/pair_buck.cpp b/src/pair_buck.cpp index 02add61142..1a3464e27e 100644 --- a/src/pair_buck.cpp +++ b/src/pair_buck.cpp @@ -20,13 +20,12 @@ #include "comm.h" #include "force.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -163,7 +162,7 @@ void PairBuck::allocate() void PairBuck::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -183,7 +182,7 @@ void PairBuck::settings(int narg, char **arg) void PairBuck::coeff(int narg, char **arg) { - if (narg < 5 || narg > 6) error->all("Incorrect args for pair coefficients"); + if (narg < 5 || narg > 6) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -192,7 +191,7 @@ void PairBuck::coeff(int narg, char **arg) double a_one = force->numeric(arg[2]); double rho_one = force->numeric(arg[3]); - if (rho_one <= 0) error->all("Incorrect args for pair coefficients"); + if (rho_one <= 0) error->all(FLERR,"Incorrect args for pair coefficients"); double c_one = force->numeric(arg[4]); double cut_one = cut_global; @@ -210,7 +209,7 @@ void PairBuck::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -219,7 +218,7 @@ void PairBuck::coeff(int narg, char **arg) double PairBuck::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); rhoinv[i][j] = 1.0/rho[i][j]; buck1[i][j] = a[i][j]/rho[i][j]; @@ -252,17 +251,16 @@ double PairBuck::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double rho1 = rho[i][j]; double rho2 = rho1*rho1; double rho3 = rho2*rho1; double rc = cut[i][j]; double rc2 = rc*rc; double rc3 = rc2*rc; - etail_ij = 2.0*PI*all[0]*all[1]* + etail_ij = 2.0*MY_PI*all[0]*all[1]* (a[i][j]*exp(-rc/rho1)*rho1*(rc2 + 2.0*rho1*rc + 2.0*rho2) - c[i][j]/(3.0*rc3)); - ptail_ij = (-1/3.0)*2.0*PI*all[0]*all[1]* + ptail_ij = (-1/3.0)*2.0*MY_PI*all[0]*all[1]* (-a[i][j]*exp(-rc/rho1)* (rc3 + 3.0*rho1*rc2 + 6.0*rho2*rc + 6.0*rho3) + 2.0*c[i][j]/rc3); } diff --git a/src/pair_buck.h b/src/pair_buck.h index c9e13d6cfa..4e722eb41a 100644 --- a/src/pair_buck.h +++ b/src/pair_buck.h @@ -28,7 +28,7 @@ class PairBuck : public Pair { public: PairBuck(class LAMMPS *); virtual ~PairBuck(); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); diff --git a/src/pair_buck_coul_cut.cpp b/src/pair_buck_coul_cut.cpp index fc405c2da5..a2f0784a3d 100644 --- a/src/pair_buck_coul_cut.cpp +++ b/src/pair_buck_coul_cut.cpp @@ -24,13 +24,12 @@ #include "force.h" #include "neighbor.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -113,14 +112,14 @@ void PairBuckCoulCut::compute(int eflag, int vflag) if (rsq < cutsq[itype][jtype]) { r2inv = 1.0/rsq; + r = sqrt(rsq); if (rsq < cut_coulsq[itype][jtype]) - forcecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv); + forcecoul = qqrd2e * qtmp*q[j]/r; else forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { r6inv = r2inv*r2inv*r2inv; - r = sqrt(rsq); rexp = exp(-r*rhoinv[itype][jtype]); forcebuck = buck1[itype][jtype]*r*rexp - buck2[itype][jtype]*r6inv; } else forcebuck = 0.0; @@ -138,7 +137,7 @@ void PairBuckCoulCut::compute(int eflag, int vflag) if (eflag) { if (rsq < cut_coulsq[itype][jtype]) - ecoul = factor_coul * qqrd2e * qtmp*q[j]*sqrt(r2inv); + ecoul = factor_coul * qqrd2e * qtmp*q[j]/r; else ecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { evdwl = a[itype][jtype]*rexp - c[itype][jtype]*r6inv - @@ -192,7 +191,7 @@ void PairBuckCoulCut::allocate() void PairBuckCoulCut::settings(int narg, char **arg) { - if (narg < 1 || narg > 2) error->all("Illegal pair_style command"); + if (narg < 1 || narg > 2) error->all(FLERR,"Illegal pair_style command"); cut_lj_global = force->numeric(arg[0]); if (narg == 1) cut_coul_global = cut_lj_global; @@ -217,7 +216,7 @@ void PairBuckCoulCut::settings(int narg, char **arg) void PairBuckCoulCut::coeff(int narg, char **arg) { - if (narg < 5 || narg > 7) error->all("Incorrect args for pair coefficients"); + if (narg < 5 || narg > 7) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -226,7 +225,7 @@ void PairBuckCoulCut::coeff(int narg, char **arg) double a_one = force->numeric(arg[2]); double rho_one = force->numeric(arg[3]); - if (rho_one <= 0) error->all("Incorrect args for pair coefficients"); + if (rho_one <= 0) error->all(FLERR,"Incorrect args for pair coefficients"); double c_one = force->numeric(arg[4]); double cut_lj_one = cut_lj_global; @@ -247,7 +246,7 @@ void PairBuckCoulCut::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -257,7 +256,7 @@ void PairBuckCoulCut::coeff(int narg, char **arg) void PairBuckCoulCut::init_style() { if (!atom->q_flag) - error->all("Pair style buck/coul/cut requires atom attribute q"); + error->all(FLERR,"Pair style buck/coul/cut requires atom attribute q"); neighbor->request(this); } @@ -268,7 +267,7 @@ void PairBuckCoulCut::init_style() double PairBuckCoulCut::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); double cut = MAX(cut_lj[i][j],cut_coul[i][j]); cut_ljsq[i][j] = cut_lj[i][j] * cut_lj[i][j]; @@ -307,17 +306,16 @@ double PairBuckCoulCut::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double rho1 = rho[i][j]; double rho2 = rho1*rho1; double rho3 = rho2*rho1; double rc = cut_lj[i][j]; double rc2 = rc*rc; double rc3 = rc2*rc; - etail_ij = 2.0*PI*all[0]*all[1]* + etail_ij = 2.0*MY_PI*all[0]*all[1]* (a[i][j]*exp(-rc/rho1)*rho1*(rc2 + 2.0*rho1*rc + 2.0*rho2) - c[i][j]/(3.0*rc3)); - ptail_ij = (-1/3.0)*2.0*PI*all[0]*all[1]* + ptail_ij = (-1/3.0)*2.0*MY_PI*all[0]*all[1]* (-a[i][j]*exp(-rc/rho1)* (rc3 + 3.0*rho1*rc2 + 6.0*rho2*rc + 6.0*rho3) + 2.0*c[i][j]/rc3); } diff --git a/src/pair_coul_cut.cpp b/src/pair_coul_cut.cpp index 16a5224324..fbe2bfdfc2 100644 --- a/src/pair_coul_cut.cpp +++ b/src/pair_coul_cut.cpp @@ -26,9 +26,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairCoulCut::PairCoulCut(LAMMPS *lmp) : Pair(lmp) {} @@ -149,7 +146,7 @@ void PairCoulCut::allocate() void PairCoulCut::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -169,7 +166,7 @@ void PairCoulCut::settings(int narg, char **arg) void PairCoulCut::coeff(int narg, char **arg) { - if (narg < 2 || narg > 3) error->all("Incorrect args for pair coefficients"); + if (narg < 2 || narg > 3) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -189,7 +186,7 @@ void PairCoulCut::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } @@ -200,7 +197,7 @@ void PairCoulCut::coeff(int narg, char **arg) void PairCoulCut::init_style() { if (!atom->q_flag) - error->all("Pair style coul/cut requires atom attribute q"); + error->all(FLERR,"Pair style coul/cut requires atom attribute q"); neighbor->request(this); } diff --git a/src/pair_coul_debye.cpp b/src/pair_coul_debye.cpp index 4527919f80..2606a1f3cb 100644 --- a/src/pair_coul_debye.cpp +++ b/src/pair_coul_debye.cpp @@ -26,9 +26,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairCoulDebye::PairCoulDebye(LAMMPS *lmp) : PairCoulCut(lmp) {} @@ -117,7 +114,7 @@ void PairCoulDebye::compute(int eflag, int vflag) void PairCoulDebye::settings(int narg, char **arg) { - if (narg != 2) error->all("Illegal pair_style command"); + if (narg != 2) error->all(FLERR,"Illegal pair_style command"); kappa = force->numeric(arg[0]); cut_global = force->numeric(arg[1]); diff --git a/src/pair_coul_debye.h b/src/pair_coul_debye.h index 38e50af2f6..b3db256557 100644 --- a/src/pair_coul_debye.h +++ b/src/pair_coul_debye.h @@ -27,13 +27,13 @@ namespace LAMMPS_NS { class PairCoulDebye : public PairCoulCut { public: PairCoulDebye(class LAMMPS *); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void write_restart_settings(FILE *); void read_restart_settings(FILE *); double single(int, int, int, int, double, double, double, double &); - private: + protected: double kappa; }; diff --git a/src/pair_dpd.cpp b/src/pair_dpd.cpp index 2ffb078bb0..5c701a89e1 100644 --- a/src/pair_dpd.cpp +++ b/src/pair_dpd.cpp @@ -32,9 +32,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EPSILON 1.0e-10 /* ---------------------------------------------------------------------- */ @@ -188,7 +185,7 @@ void PairDPD::allocate() void PairDPD::settings(int narg, char **arg) { - if (narg != 3) error->all("Illegal pair_style command"); + if (narg != 3) error->all(FLERR,"Illegal pair_style command"); temperature = force->numeric(arg[0]); cut_global = force->numeric(arg[1]); @@ -196,7 +193,7 @@ void PairDPD::settings(int narg, char **arg) // initialize Marsaglia RNG with processor-unique seed - if (seed <= 0) error->all("Illegal pair_style command"); + if (seed <= 0) error->all(FLERR,"Illegal pair_style command"); delete random; random = new RanMars(lmp,seed + comm->me); @@ -216,7 +213,7 @@ void PairDPD::settings(int narg, char **arg) void PairDPD::coeff(int narg, char **arg) { - if (narg < 4 || narg > 5) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 5) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -240,7 +237,7 @@ void PairDPD::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -250,12 +247,12 @@ void PairDPD::coeff(int narg, char **arg) void PairDPD::init_style() { if (comm->ghost_velocity == 0) - error->all("Pair dpd requires ghost atoms store velocity"); + error->all(FLERR,"Pair dpd requires ghost atoms store velocity"); // if newton off, forces between atoms ij will be double computed // using different random numbers - if (force->newton_pair == 0 && comm->me == 0) error->warning( + if (force->newton_pair == 0 && comm->me == 0) error->warning(FLERR, "Pair dpd needs newton pair on for momentum conservation"); neighbor->request(this); @@ -267,7 +264,7 @@ void PairDPD::init_style() double PairDPD::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); sigma[i][j] = sqrt(2.0*force->boltz*temperature*gamma[i][j]); diff --git a/src/pair_dpd_tstat.cpp b/src/pair_dpd_tstat.cpp index cab7a99fab..4151ecc5b1 100644 --- a/src/pair_dpd_tstat.cpp +++ b/src/pair_dpd_tstat.cpp @@ -23,9 +23,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EPSILON 1.0e-10 /* ---------------------------------------------------------------------- */ @@ -141,7 +138,7 @@ void PairDPDTstat::compute(int eflag, int vflag) void PairDPDTstat::settings(int narg, char **arg) { - if (narg != 4) error->all("Illegal pair_style command"); + if (narg != 4) error->all(FLERR,"Illegal pair_style command"); t_start = force->numeric(arg[0]); t_stop = force->numeric(arg[1]); @@ -152,7 +149,7 @@ void PairDPDTstat::settings(int narg, char **arg) // initialize Marsaglia RNG with processor-unique seed - if (seed <= 0) error->all("Illegal pair_style command"); + if (seed <= 0) error->all(FLERR,"Illegal pair_style command"); delete random; random = new RanMars(lmp,seed + comm->me); @@ -172,7 +169,7 @@ void PairDPDTstat::settings(int narg, char **arg) void PairDPDTstat::coeff(int narg, char **arg) { - if (narg < 3 || narg > 4) error->all("Incorrect args for pair coefficients"); + if (narg < 3 || narg > 4) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -196,7 +193,7 @@ void PairDPDTstat::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/pair_dpd_tstat.h b/src/pair_dpd_tstat.h index f50ddcaa67..06f3ac0b8f 100644 --- a/src/pair_dpd_tstat.h +++ b/src/pair_dpd_tstat.h @@ -34,7 +34,7 @@ class PairDPDTstat : public PairDPD { void write_restart_settings(FILE *); void read_restart_settings(FILE *); - private: + protected: double t_start,t_stop; }; diff --git a/src/pair_gauss.cpp b/src/pair_gauss.cpp index 646a29cdbc..4649cdb0e2 100644 --- a/src/pair_gauss.cpp +++ b/src/pair_gauss.cpp @@ -30,9 +30,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define EPSILON 1.0e-10 /* ---------------------------------------------------------------------- */ @@ -169,7 +166,7 @@ void PairGauss::allocate() void PairGauss::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = atof(arg[0]); @@ -189,7 +186,7 @@ void PairGauss::settings(int narg, char **arg) void PairGauss::coeff(int narg, char **arg) { - if (narg < 4 || narg > 5) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 5) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo, ihi, jlo, jhi; @@ -213,7 +210,7 @@ void PairGauss::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -222,7 +219,7 @@ void PairGauss::coeff(int narg, char **arg) double PairGauss::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); if (offset_flag) offset[i][j] = a[i][j]*exp(-b[i][j]*cut[i][j]*cut[i][j]); else offset[i][j] = 0.0; diff --git a/src/pair_gauss.h b/src/pair_gauss.h index c8e94a111b..795079273a 100644 --- a/src/pair_gauss.h +++ b/src/pair_gauss.h @@ -27,8 +27,8 @@ namespace LAMMPS_NS { class PairGauss : public Pair { public: PairGauss(class LAMMPS *); - ~PairGauss(); - void compute(int,int); + virtual ~PairGauss(); + virtual void compute(int,int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); @@ -39,7 +39,7 @@ class PairGauss : public Pair { double single(int, int, int, int, double, double, double, double &); void *extract(char *, int &); - private: + protected: double cut_global; double **cut; double **a,**b; diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index a57bf33721..206782be27 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -27,9 +27,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairHybrid::PairHybrid(LAMMPS *lmp) : Pair(lmp) @@ -177,7 +174,7 @@ void PairHybrid::settings(int narg, char **arg) { int i,m,istyle; - if (narg < 1) error->all("Illegal pair_style command"); + if (narg < 1) error->all(FLERR,"Illegal pair_style command"); // delete old lists, since cannot just change settings @@ -198,10 +195,11 @@ void PairHybrid::settings(int narg, char **arg) allocated = 0; // count sub-styles by skipping numeric args - // exception is 1st arg of style "table", which is non-numeric word - // exception is 1st two args of style "lj/coul", which are non-numeric - // exception is 1st two args of style "buck/coul", which are non-numeric + // exception is 1st arg of table style, which is non-numeric word + // exception is 1st two args of lj/coul style, which are non-numeric + // exception is 1st two args of buck/coul, which are non-numeric // exception is 1st arg of reax/c style, which is non-numeric + // execption is 1st 6 args of gran styles, which can have NULLs // need a better way to skip these exceptions nstyles = 0; @@ -211,6 +209,8 @@ void PairHybrid::settings(int narg, char **arg) if (strcmp(arg[i],"lj/coul") == 0) i += 2; if (strcmp(arg[i],"buck/coul") == 0) i += 2; if (strcmp(arg[i],"reax/c") == 0) i++; + if (strstr(arg[i],"gran/hooke")) i += 6; + if (strstr(arg[i],"gran/hertz")) i += 6; i++; while (i < narg && !isalpha(arg[i][0])) i++; nstyles++; @@ -223,25 +223,26 @@ void PairHybrid::settings(int narg, char **arg) // allocate each sub-style and call its settings() with subset of args // define subset of args for a sub-style by skipping numeric args - // exception is 1st arg of style "table", which is non-numeric - // exception is 1st two args of style "lj/coul", which are non-numeric - // exception is 1st two args of style "buck/coul", which are non-numeric + // exception is 1st arg of table style, which is non-numeric word + // exception is 1st two args of lj/coul style, which are non-numeric + // exception is 1st two args of buck/coul, which are non-numeric // exception is 1st arg of reax/c style, which is non-numeric + // execption is 1st 6 args of gran styles, which can have NULLs // need a better way to skip these exceptions int dummy; - nstyles = 0; i = 0; + while (i < narg) { for (m = 0; m < nstyles; m++) if (strcmp(arg[i],keywords[m]) == 0) - error->all("Pair style hybrid cannot use same pair style twice"); + error->all(FLERR,"Pair style hybrid cannot use same pair style twice"); if (strcmp(arg[i],"hybrid") == 0) - error->all("Pair style hybrid cannot have hybrid as an argument"); + error->all(FLERR,"Pair style hybrid cannot have hybrid as an argument"); if (strcmp(arg[i],"none") == 0) - error->all("Pair style hybrid cannot have none as an argument"); - styles[nstyles] = force->new_pair(arg[i],NULL,dummy); + error->all(FLERR,"Pair style hybrid cannot have none as an argument"); + styles[nstyles] = force->new_pair(arg[i],lmp->suffix,dummy); keywords[nstyles] = new char[strlen(arg[i])+1]; strcpy(keywords[nstyles],arg[i]); istyle = i; @@ -249,6 +250,8 @@ void PairHybrid::settings(int narg, char **arg) if (strcmp(arg[i],"lj/coul") == 0) i += 2; if (strcmp(arg[i],"buck/coul") == 0) i += 2; if (strcmp(arg[i],"reax/c") == 0) i++; + if (strstr(arg[i],"gran/hooke")) i += 6; + if (strstr(arg[i],"gran/hertz")) i += 6; i++; while (i < narg && !isalpha(arg[i][0])) i++; styles[nstyles]->settings(i-istyle-1,&arg[istyle+1]); @@ -283,7 +286,7 @@ void PairHybrid::settings(int narg, char **arg) void PairHybrid::coeff(int narg, char **arg) { - if (narg < 3) error->all("Incorrect args for pair coefficients"); + if (narg < 3) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -300,7 +303,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("Pair coeff for hybrid has invalid style"); + else error->all(FLERR,"Pair coeff for hybrid has invalid style"); } // move 1st/2nd args to 2nd/3rd args @@ -346,7 +349,7 @@ void PairHybrid::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -367,7 +370,7 @@ void PairHybrid::init_style() for (jtype = itype; jtype <= ntypes; jtype++) for (m = 0; m < nmap[itype][jtype]; m++) if (map[itype][jtype][m] == istyle) used = 1; - if (used == 0) error->all("Pair hybrid sub-style is not used"); + if (used == 0) error->all(FLERR,"Pair hybrid sub-style is not used"); } // each sub-style makes its neighbor list request(s) @@ -455,7 +458,7 @@ double PairHybrid::init_one(int i, int j) if (setflag[i][j] == 0) { if (nmap[i][i] != 1 || nmap[j][j] != 1 || map[i][i][0] != map[j][j][0]) - error->one("All pair coeffs are not set"); + error->one(FLERR,"All pair coeffs are not set"); nmap[i][j] = 1; map[i][j][0] = map[i][i][0]; } @@ -585,7 +588,7 @@ void PairHybrid::read_restart(FILE *fp) keywords[m] = new char[n]; if (me == 0) fread(keywords[m],sizeof(char),n,fp); MPI_Bcast(keywords[m],n,MPI_CHAR,0,world); - styles[m] = force->new_pair(keywords[m],NULL,dummy); + styles[m] = force->new_pair(keywords[m],lmp->suffix,dummy); styles[m]->read_restart_settings(fp); } } @@ -601,7 +604,7 @@ double PairHybrid::single(int i, int j, int itype, int jtype, double &fforce) { if (nmap[itype][jtype] == 0) - error->one("Invoked pair single on pair style none"); + error->one(FLERR,"Invoked pair single on pair style none"); double fone; fforce = 0.0; @@ -610,7 +613,7 @@ double PairHybrid::single(int i, int j, int itype, int jtype, for (int m = 0; m < nmap[itype][jtype]; m++) { if (rsq < styles[map[itype][jtype][m]]->cutsq[itype][jtype]) { if (styles[map[itype][jtype][m]]->single_enable == 0) - error->all("Pair hybrid sub-style does not support single call"); + error->all(FLERR,"Pair hybrid sub-style does not support single call"); esum += styles[map[itype][jtype][m]]-> single(i,j,itype,jtype,rsq,factor_coul,factor_lj,fone); fforce += fone; @@ -663,7 +666,7 @@ void *PairHybrid::extract(char *str, int &dim) double *p_newvalue = (double *) ptr; double newvalue = *p_newvalue; if (cutptr && newvalue != cutvalue) - error->all("Coulomb cutoffs of pair hybrid sub-styles do not match"); + error->all(FLERR,"Coulomb cutoffs of pair hybrid sub-styles do not match"); cutptr = ptr; cutvalue = newvalue; } else if (ptr) return ptr; diff --git a/src/pair_hybrid_overlay.cpp b/src/pair_hybrid_overlay.cpp index f6b73bffb3..4d3e14af3d 100644 --- a/src/pair_hybrid_overlay.cpp +++ b/src/pair_hybrid_overlay.cpp @@ -21,9 +21,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairHybridOverlay::PairHybridOverlay(LAMMPS *lmp) : PairHybrid(lmp) {} @@ -34,7 +31,7 @@ PairHybridOverlay::PairHybridOverlay(LAMMPS *lmp) : PairHybrid(lmp) {} void PairHybridOverlay::coeff(int narg, char **arg) { - if (narg < 3) error->all("Incorrect args for pair coefficients"); + if (narg < 3) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -51,7 +48,7 @@ void PairHybridOverlay::coeff(int narg, char **arg) int none = 0; if (m == nstyles) { if (strcmp(arg[2],"none") == 0) none = 1; - else error->all("Pair coeff for hybrid has invalid style"); + else error->all(FLERR,"Pair coeff for hybrid has invalid style"); } // move 1st/2nd args to 2nd/3rd args @@ -88,7 +85,7 @@ void PairHybridOverlay::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/pair_lj96_cut.cpp b/src/pair_lj96_cut.cpp index 758ef0ab58..8eb9a3d9d5 100644 --- a/src/pair_lj96_cut.cpp +++ b/src/pair_lj96_cut.cpp @@ -29,13 +29,12 @@ #include "update.h" #include "integrate.h" #include "respa.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -433,7 +432,7 @@ void PairLJ96Cut::allocate() void PairLJ96Cut::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -453,7 +452,7 @@ void PairLJ96Cut::settings(int narg, char **arg) void PairLJ96Cut::coeff(int narg, char **arg) { - if (narg < 4 || narg > 5) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 5) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -477,7 +476,7 @@ void PairLJ96Cut::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -575,7 +574,7 @@ double PairLJ96Cut::init_one(int i, int j) // check interior rRESPA cutoff if (cut_respa && cut[i][j] < cut_respa[3]) - error->all("Pair cutoff < Respa interior cutoff"); + error->all(FLERR,"Pair cutoff < Respa interior cutoff"); // compute I,J contribution to long-range tail correction // count total # of atoms of type I and J via Allreduce @@ -592,15 +591,14 @@ double PairLJ96Cut::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double sig3 = sigma[i][j]*sigma[i][j]*sigma[i][j]; double sig6 = sig3*sig3; double rc3 = cut[i][j]*cut[i][j]*cut[i][j]; double rc6 = rc3*rc3; - etail_ij = 8.0*PI*all[0]*all[1]*epsilon[i][j] * + etail_ij = 8.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig3 - 2.0*rc3) / (6.0*rc6); - ptail_ij = 8.0*PI*all[0]*all[1]*epsilon[i][j] * + ptail_ij = 8.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (3.0*sig3 - 4.0*rc3) / (6.0*rc6); } diff --git a/src/pair_lj96_cut.h b/src/pair_lj96_cut.h index 0d65d8d0b2..1e9b94ae03 100644 --- a/src/pair_lj96_cut.h +++ b/src/pair_lj96_cut.h @@ -27,8 +27,9 @@ namespace LAMMPS_NS { class PairLJ96Cut : public Pair { public: PairLJ96Cut(class LAMMPS *); - ~PairLJ96Cut(); - void compute(int, int); + virtual ~PairLJ96Cut(); + + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); void init_style(); diff --git a/src/pair_lj_cubic.cpp b/src/pair_lj_cubic.cpp new file mode 100644 index 0000000000..df06f7deda --- /dev/null +++ b/src/pair_lj_cubic.cpp @@ -0,0 +1,358 @@ + +/* ---------------------------------------------------------------------- + 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: Aidan Thompson (SNL) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "pair_lj_cubic.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace PairLJCubicConstants; + +/* ---------------------------------------------------------------------- */ + +PairLJCubic::PairLJCubic(LAMMPS *lmp) : Pair(lmp) {} + +/* ---------------------------------------------------------------------- */ + +PairLJCubic::~PairLJCubic() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(cut_inner); + memory->destroy(cut_inner_sq); + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCubic::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r6inv,forcelj,factor_lj; + double r,t,rmin; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **f = atom->f; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + + 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]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[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_inner_sq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else { + r = sqrt(rsq); + rmin = sigma[itype][jtype]*RT6TWO; + t = (r - cut_inner[itype][jtype])/rmin; + forcelj = epsilon[itype][jtype]*(-DPHIDS + A3*t*t/2.0)*r/rmin; + } + fpair = factor_lj*forcelj*r2inv; + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + if (newton_pair || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (eflag) { + if (rsq <= cut_inner_sq[itype][jtype]) + evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + else + evdwl = epsilon[itype][jtype]* + (PHIS + DPHIDS*t - A3*t*t*t/6.0); + evdwl *= factor_lj; + + if (evflag) ev_tally(i,j,nlocal,newton_pair, + evdwl,0.0,fpair,delx,dely,delz); + } + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairLJCubic::allocate() +{ + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq,n+1,n+1,"pair:cutsq"); + + memory->create(cut,n+1,n+1,"pair:cut"); + memory->create(cut_inner,n+1,n+1,"pair:cut_inner"); + memory->create(cut_inner_sq,n+1,n+1,"pair:cut_inner_sq"); + memory->create(epsilon,n+1,n+1,"pair:epsilon"); + memory->create(sigma,n+1,n+1,"pair:sigma"); + memory->create(lj1,n+1,n+1,"pair:lj1"); + memory->create(lj2,n+1,n+1,"pair:lj2"); + memory->create(lj3,n+1,n+1,"pair:lj3"); + memory->create(lj4,n+1,n+1,"pair:lj4"); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairLJCubic::settings(int narg, char **arg) +{ + if (narg != 0) error->all(FLERR,"Illegal pair_style command"); + + // reset cutoffs that have been explicitly set + + if (allocated) { + int i,j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i+1; j <= atom->ntypes; j++) + if (setflag[i][j]) cut[i][j] = 0.0; + } +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairLJCubic::coeff(int narg, char **arg) +{ + if (narg != 4) + error->all(FLERR,"Incorrect args for pair coefficients"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(arg[0],atom->ntypes,ilo,ihi); + force->bounds(arg[1],atom->ntypes,jlo,jhi); + + double epsilon_one = force->numeric(arg[2]); + double sigma_one = force->numeric(arg[3]); + double rmin = sigma_one*RT6TWO; + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + epsilon[i][j] = epsilon_one; + sigma[i][j] = sigma_one; + cut_inner[i][j] = rmin*SS; + cut[i][j] = rmin*SM; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairLJCubic::init_one(int i, int j) +{ + if (setflag[i][j] == 0) { + epsilon[i][j] = mix_energy(epsilon[i][i],epsilon[j][j], + sigma[i][i],sigma[j][j]); + sigma[i][j] = mix_distance(sigma[i][i],sigma[j][j]); + cut_inner[i][j] = mix_distance(cut_inner[i][i],cut_inner[j][j]); + cut[i][j] = mix_distance(cut[i][i],cut[j][j]); + } + + cut_inner_sq[i][j] = cut_inner[i][j]*cut_inner[i][j]; + lj1[i][j] = 48.0 * epsilon[i][j] * pow(sigma[i][j],12.0); + lj2[i][j] = 24.0 * epsilon[i][j] * pow(sigma[i][j],6.0); + lj3[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],12.0); + lj4[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],6.0); + + cut_inner[j][i] = cut_inner[i][j]; + cut_inner_sq[j][i] = cut_inner_sq[i][j]; + lj1[j][i] = lj1[i][j]; + lj2[j][i] = lj2[i][j]; + lj3[j][i] = lj3[i][j]; + lj4[j][i] = lj4[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairLJCubic::write_restart(FILE *fp) +{ + write_restart_settings(fp); + + int i,j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i; j <= atom->ntypes; j++) { + fwrite(&setflag[i][j],sizeof(int),1,fp); + if (setflag[i][j]) { + fwrite(&epsilon[i][j],sizeof(double),1,fp); + fwrite(&sigma[i][j],sizeof(double),1,fp); + fwrite(&cut_inner[i][j],sizeof(double),1,fp); + fwrite(&cut[i][j],sizeof(double),1,fp); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairLJCubic::read_restart(FILE *fp) +{ + read_restart_settings(fp); + allocate(); + + int i,j; + int me = comm->me; + for (i = 1; i <= atom->ntypes; i++) + for (j = i; j <= atom->ntypes; j++) { + if (me == 0) fread(&setflag[i][j],sizeof(int),1,fp); + MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world); + if (setflag[i][j]) { + if (me == 0) { + fread(&epsilon[i][j],sizeof(double),1,fp); + fread(&sigma[i][j],sizeof(double),1,fp); + fread(&cut_inner[i][j],sizeof(double),1,fp); + fread(&cut[i][j],sizeof(double),1,fp); + } + MPI_Bcast(&epsilon[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&sigma[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut_inner[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairLJCubic::write_restart_settings(FILE *fp) +{ + fwrite(&mix_flag,sizeof(int),1,fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairLJCubic::read_restart_settings(FILE *fp) +{ + int me = comm->me; + if (me == 0) { + fread(&mix_flag,sizeof(int),1,fp); + } + MPI_Bcast(&mix_flag,1,MPI_INT,0,world); +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCubic::single(int i, int j, int itype, int jtype, + double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + double r2inv,r6inv,forcelj,philj; + double r,t; + double rmin; + + r2inv = 1.0/rsq; + if (rsq <= cut_inner_sq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else { + r = sqrt(rsq); + rmin = sigma[itype][jtype]*RT6TWO; + t = (r - cut_inner[itype][jtype])/rmin; + forcelj = epsilon[itype][jtype]*(-DPHIDS + A3*t*t/2.0)*r/rmin; + } + fforce = factor_lj*forcelj*r2inv; + + if (rsq <= cut_inner_sq[itype][jtype]) + philj = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + else + philj = epsilon[itype][jtype]* + (PHIS + DPHIDS*t - A3*t*t*t/6.0); + + return factor_lj*philj; +} diff --git a/src/pair_lj_cubic.h b/src/pair_lj_cubic.h new file mode 100644 index 0000000000..9acf98a2ce --- /dev/null +++ b/src/pair_lj_cubic.h @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------- + 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/cubic,PairLJCubic) + +#else + +#ifndef LMP_PAIR_LJ_CUBIC_H +#define LMP_PAIR_LJ_CUBIC_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairLJCubic : public Pair { + public: + PairLJCubic(class LAMMPS *); + virtual ~PairLJCubic(); + + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + double init_one(int, int); + void write_restart(FILE *); + void read_restart(FILE *); + void write_restart_settings(FILE *); + void read_restart_settings(FILE *); + double single(int, int, int, int, double, double, double, double &); + + protected: + double **cut,**cut_inner,**cut_inner_sq; + double **epsilon,**sigma; + double **lj1,**lj2,**lj3,**lj4; + + void allocate(); +}; + +namespace PairLJCubicConstants { + + // LJ quantities scaled by epsilon and rmin = sigma*2^1/6 + + static const double RT6TWO = 1.1224621; // 2^1/6 + static const double SS = 1.1086834; // inflection point (13/7)^1/6 + static const double PHIS = -0.7869823; // energy at s + static const double DPHIDS = 2.6899009; // gradient at s + static const double A3 = 27.93357; // cubic coefficient + static const double SM = 1.5475375; // cubic cutoff = s*67/48 + +} + +} + +#endif +#endif diff --git a/src/pair_lj_cut.cpp b/src/pair_lj_cut.cpp index 5af7e1c89b..44d86990df 100644 --- a/src/pair_lj_cut.cpp +++ b/src/pair_lj_cut.cpp @@ -29,13 +29,12 @@ #include "update.h" #include "integrate.h" #include "respa.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -427,7 +426,7 @@ void PairLJCut::allocate() void PairLJCut::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -447,7 +446,7 @@ void PairLJCut::settings(int narg, char **arg) void PairLJCut::coeff(int narg, char **arg) { - if (narg < 4 || narg > 5) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 5) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -471,7 +470,7 @@ void PairLJCut::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -569,7 +568,7 @@ double PairLJCut::init_one(int i, int j) // check interior rRESPA cutoff if (cut_respa && cut[i][j] < cut_respa[3]) - error->all("Pair cutoff < Respa interior cutoff"); + error->all(FLERR,"Pair cutoff < Respa interior cutoff"); // compute I,J contribution to long-range tail correction // count total # of atoms of type I and J via Allreduce @@ -586,15 +585,14 @@ double PairLJCut::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double sig2 = sigma[i][j]*sigma[i][j]; double sig6 = sig2*sig2*sig2; double rc3 = cut[i][j]*cut[i][j]*cut[i][j]; double rc6 = rc3*rc3; double rc9 = rc3*rc6; - etail_ij = 8.0*PI*all[0]*all[1]*epsilon[i][j] * + etail_ij = 8.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig6 - 3.0*rc6) / (9.0*rc9); - ptail_ij = 16.0*PI*all[0]*all[1]*epsilon[i][j] * + ptail_ij = 16.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (2.0*sig6 - 3.0*rc6) / (9.0*rc9); } diff --git a/src/pair_lj_cut_coul_cut.cpp b/src/pair_lj_cut_coul_cut.cpp index efd0344823..c6973b2580 100644 --- a/src/pair_lj_cut_coul_cut.cpp +++ b/src/pair_lj_cut_coul_cut.cpp @@ -21,13 +21,12 @@ #include "force.h" #include "neighbor.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -185,7 +184,7 @@ void PairLJCutCoulCut::allocate() void PairLJCutCoulCut::settings(int narg, char **arg) { - if (narg < 1 || narg > 2) error->all("Illegal pair_style command"); + if (narg < 1 || narg > 2) error->all(FLERR,"Illegal pair_style command"); cut_lj_global = force->numeric(arg[0]); if (narg == 1) cut_coul_global = cut_lj_global; @@ -210,7 +209,7 @@ void PairLJCutCoulCut::settings(int narg, char **arg) void PairLJCutCoulCut::coeff(int narg, char **arg) { - if (narg < 4 || narg > 6) error->all("Incorrect args for pair coefficients"); + if (narg < 4 || narg > 6) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -237,7 +236,7 @@ void PairLJCutCoulCut::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -247,7 +246,7 @@ void PairLJCutCoulCut::coeff(int narg, char **arg) void PairLJCutCoulCut::init_style() { if (!atom->q_flag) - error->all("Pair style lj/cut/coul/cut requires atom attribute q"); + error->all(FLERR,"Pair style lj/cut/coul/cut requires atom attribute q"); neighbor->request(this); } @@ -303,15 +302,14 @@ double PairLJCutCoulCut::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double sig2 = sigma[i][j]*sigma[i][j]; double sig6 = sig2*sig2*sig2; double rc3 = cut_lj[i][j]*cut_lj[i][j]*cut_lj[i][j]; double rc6 = rc3*rc3; double rc9 = rc3*rc6; - etail_ij = 8.0*PI*all[0]*all[1]*epsilon[i][j] * + etail_ij = 8.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (sig6 - 3.0*rc6) / (9.0*rc9); - ptail_ij = 16.0*PI*all[0]*all[1]*epsilon[i][j] * + ptail_ij = 16.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6 * (2.0*sig6 - 3.0*rc6) / (9.0*rc9); } diff --git a/src/pair_lj_cut_coul_debye.cpp b/src/pair_lj_cut_coul_debye.cpp index 1954d0d1f2..023d866542 100644 --- a/src/pair_lj_cut_coul_debye.cpp +++ b/src/pair_lj_cut_coul_debye.cpp @@ -131,7 +131,7 @@ void PairLJCutCoulDebye::compute(int eflag, int vflag) void PairLJCutCoulDebye::settings(int narg, char **arg) { - if (narg < 2 || narg > 3) error->all("Illegal pair_style command"); + if (narg < 2 || narg > 3) error->all(FLERR,"Illegal pair_style command"); kappa = force->numeric(arg[0]); cut_lj_global = force->numeric(arg[1]); diff --git a/src/pair_lj_cut_coul_debye.h b/src/pair_lj_cut_coul_debye.h index d008884801..4d10e89c12 100644 --- a/src/pair_lj_cut_coul_debye.h +++ b/src/pair_lj_cut_coul_debye.h @@ -28,7 +28,7 @@ class PairLJCutCoulDebye : public PairLJCutCoulCut { public: PairLJCutCoulDebye(class LAMMPS *); virtual ~PairLJCutCoulDebye() {} - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void write_restart_settings(FILE *); void read_restart_settings(FILE *); diff --git a/src/pair_lj_expand.cpp b/src/pair_lj_expand.cpp index 1f5e659da7..10e69ba977 100644 --- a/src/pair_lj_expand.cpp +++ b/src/pair_lj_expand.cpp @@ -19,13 +19,12 @@ #include "comm.h" #include "force.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -165,7 +164,7 @@ void PairLJExpand::allocate() void PairLJExpand::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -185,7 +184,7 @@ void PairLJExpand::settings(int narg, char **arg) void PairLJExpand::coeff(int narg, char **arg) { - if (narg < 5 || narg > 6) error->all("Incorrect args for pair coefficients"); + if (narg < 5 || narg > 6) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -211,7 +210,7 @@ void PairLJExpand::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -262,7 +261,6 @@ double PairLJExpand::init_one(int i, int j) } MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world); - double PI = 4.0*atan(1.0); double sig2 = sigma[i][j]*sigma[i][j]; double sig6 = sig2*sig2*sig2; double shiftcut = shift[i][j] - cut[i][j]; @@ -276,11 +274,11 @@ double PairLJExpand::init_one(int i, int j) double rc12 = rc11*shiftcut; double shift2 = shift[i][j]*shift[i][j]; double shift3 = shift2*shift[i][j]; - etail_ij = 8.0*PI*all[0]*all[1]*epsilon[i][j] * + etail_ij = 8.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6*((-1.0/(9.0*rc9) + shift[i][j]/(5.0*rc10) - shift2/(11.0*rc11))*sig6 + 1.0/(3.0*rc3) - shift[i][j]/(2.0*rc4) + shift2/(5.0*rc5)); - ptail_ij = 8.0*PI*all[0]*all[1]*epsilon[i][j] * + ptail_ij = 8.0*MY_PI*all[0]*all[1]*epsilon[i][j] * sig6* ((-4.0/(3.0*rc9) + 18.0*shift[i][j]/(5.0*rc10) - 36.0*shift2/(11.0*rc11) + shift3/rc12)*sig6 + 2.0/rc3 - 9.0*shift[i][j]/(2.0*rc4) + diff --git a/src/pair_lj_expand.h b/src/pair_lj_expand.h index 1d1b10c315..568827c3c1 100644 --- a/src/pair_lj_expand.h +++ b/src/pair_lj_expand.h @@ -27,8 +27,9 @@ namespace LAMMPS_NS { class PairLJExpand : public Pair { public: PairLJExpand(class LAMMPS *); - ~PairLJExpand(); - void compute(int, int); + virtual ~PairLJExpand(); + + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); diff --git a/src/pair_lj_gromacs.cpp b/src/pair_lj_gromacs.cpp index 3b52bc36dc..5b43ff2acc 100644 --- a/src/pair_lj_gromacs.cpp +++ b/src/pair_lj_gromacs.cpp @@ -30,9 +30,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJGromacs::PairLJGromacs(LAMMPS *lmp) : Pair(lmp) {} @@ -134,9 +131,9 @@ void PairLJGromacs::compute(int eflag, int vflag) if (eflag) { evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + evdwl += ljsw5[itype][jtype]; if (rsq > cut_inner_sq[itype][jtype]) { - eswitch = t*t*t*(ljsw3[itype][jtype] + ljsw4[itype][jtype]*t) + - ljsw5[itype][jtype]; + eswitch = t*t*t*(ljsw3[itype][jtype] + ljsw4[itype][jtype]*t); evdwl += eswitch; } evdwl *= factor_lj; @@ -189,13 +186,13 @@ void PairLJGromacs::allocate() void PairLJGromacs::settings(int narg, char **arg) { - if (narg != 2) error->all("Illegal pair_style command"); + if (narg != 2) error->all(FLERR,"Illegal pair_style command"); cut_inner_global = force->numeric(arg[0]); cut_global = force->numeric(arg[1]); if (cut_inner_global <= 0.0 || cut_inner_global > cut_global) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); // reset cutoffs that have been explicitly set @@ -217,7 +214,7 @@ void PairLJGromacs::settings(int narg, char **arg) void PairLJGromacs::coeff(int narg, char **arg) { if (narg != 4 && narg != 6) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -235,7 +232,7 @@ void PairLJGromacs::coeff(int narg, char **arg) } if (cut_inner_one <= 0.0 || cut_inner_one > cut_one) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); int count = 0; for (int i = ilo; i <= ihi; i++) { @@ -249,7 +246,7 @@ void PairLJGromacs::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -410,9 +407,9 @@ double PairLJGromacs::single(int i, int j, int itype, int jtype, fforce = factor_lj*forcelj*r2inv; philj = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + philj += ljsw5[itype][jtype]; if (rsq > cut_inner_sq[itype][jtype]) { - phiswitch = t*t*t*(ljsw3[itype][jtype] + ljsw4[itype][jtype]*t) + - ljsw5[itype][jtype]; + phiswitch = t*t*t*(ljsw3[itype][jtype] + ljsw4[itype][jtype]*t); philj += phiswitch; } diff --git a/src/pair_lj_gromacs_coul_gromacs.cpp b/src/pair_lj_gromacs_coul_gromacs.cpp index 356a4b768e..af681aeab0 100644 --- a/src/pair_lj_gromacs_coul_gromacs.cpp +++ b/src/pair_lj_gromacs_coul_gromacs.cpp @@ -30,9 +30,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJGromacsCoulGromacs::PairLJGromacsCoulGromacs(LAMMPS *lmp) : Pair(lmp) {} @@ -162,10 +159,10 @@ void PairLJGromacsCoulGromacs::compute(int eflag, int vflag) } else ecoul = 0.0; if (rsq < cut_ljsq) { evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + evdwl += ljsw5[itype][jtype]; if (rsq > cut_lj_innersq) { eswitch = tlj*tlj*tlj * - (ljsw3[itype][jtype] + ljsw4[itype][jtype]*tlj) + - ljsw5[itype][jtype]; + (ljsw3[itype][jtype] + ljsw4[itype][jtype]*tlj); evdwl += eswitch; } evdwl *= factor_lj; @@ -217,7 +214,7 @@ void PairLJGromacsCoulGromacs::allocate() void PairLJGromacsCoulGromacs::settings(int narg, char **arg) { if (narg != 2 && narg != 4) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); cut_lj_inner = force->numeric(arg[0]); cut_lj = force->numeric(arg[1]); @@ -230,9 +227,9 @@ void PairLJGromacsCoulGromacs::settings(int narg, char **arg) } if (cut_lj_inner <= 0.0 || cut_coul_inner < 0.0) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); if (cut_lj_inner > cut_lj || cut_coul_inner > cut_coul) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); } /* ---------------------------------------------------------------------- @@ -241,7 +238,7 @@ void PairLJGromacsCoulGromacs::settings(int narg, char **arg) void PairLJGromacsCoulGromacs::coeff(int narg, char **arg) { - if (narg != 4) error->all("Incorrect args for pair coefficients"); + if (narg != 4) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -261,7 +258,7 @@ void PairLJGromacsCoulGromacs::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -271,7 +268,7 @@ void PairLJGromacsCoulGromacs::coeff(int narg, char **arg) void PairLJGromacsCoulGromacs::init_style() { if (!atom->q_flag) - error->all("Pair style lj/gromacs/coul/gromacs requires atom attribute q"); + error->all(FLERR,"Pair style lj/gromacs/coul/gromacs requires atom attribute q"); neighbor->request(this); @@ -474,10 +471,10 @@ double PairLJGromacsCoulGromacs::single(int i, int j, int itype, int jtype, if (rsq < cut_ljsq) { philj = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + philj += ljsw5[itype][jtype]; if (rsq > cut_lj_innersq) { phiswitch = tlj*tlj*tlj * - (ljsw3[itype][jtype] + ljsw4[itype][jtype]*tlj) + - ljsw5[itype][jtype]; + (ljsw3[itype][jtype] + ljsw4[itype][jtype]*tlj); philj += phiswitch; } eng += factor_lj*philj; diff --git a/src/pair_lj_smooth.cpp b/src/pair_lj_smooth.cpp index af85406dab..de1276991c 100644 --- a/src/pair_lj_smooth.cpp +++ b/src/pair_lj_smooth.cpp @@ -28,9 +28,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairLJSmooth::PairLJSmooth(LAMMPS *lmp) : Pair(lmp) {} @@ -193,13 +190,13 @@ void PairLJSmooth::allocate() void PairLJSmooth::settings(int narg, char **arg) { - if (narg != 2) error->all("Illegal pair_style command"); + if (narg != 2) error->all(FLERR,"Illegal pair_style command"); cut_inner_global = force->numeric(arg[0]); cut_global = force->numeric(arg[1]); if (cut_inner_global <= 0.0 || cut_inner_global > cut_global) - error->all("Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style command"); // reset cutoffs that have been explicitly set @@ -221,7 +218,7 @@ void PairLJSmooth::settings(int narg, char **arg) void PairLJSmooth::coeff(int narg, char **arg) { if (narg != 4 && narg != 6) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -239,7 +236,7 @@ void PairLJSmooth::coeff(int narg, char **arg) } if (cut_inner_one <= 0.0 || cut_inner_one > cut_one) - error->all("Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect args for pair coefficients"); int count = 0; for (int i = ilo; i <= ihi; i++) { @@ -253,7 +250,7 @@ void PairLJSmooth::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- diff --git a/src/pair_lj_smooth.h b/src/pair_lj_smooth.h index 6b2fc150bb..ecc67dd527 100644 --- a/src/pair_lj_smooth.h +++ b/src/pair_lj_smooth.h @@ -28,7 +28,7 @@ class PairLJSmooth : public Pair { public: PairLJSmooth(class LAMMPS *); virtual ~PairLJSmooth(); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); diff --git a/src/pair_morse.cpp b/src/pair_morse.cpp index 0817fd3fb5..d05235a978 100644 --- a/src/pair_morse.cpp +++ b/src/pair_morse.cpp @@ -24,9 +24,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairMorse::PairMorse(LAMMPS *lmp) : Pair(lmp) {} @@ -155,7 +152,7 @@ void PairMorse::allocate() void PairMorse::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -175,7 +172,7 @@ void PairMorse::settings(int narg, char **arg) void PairMorse::coeff(int narg, char **arg) { - if (narg < 5 || narg > 6) error->all("Incorrect args for pair coefficients"); + if (narg < 5 || narg > 6) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -201,7 +198,7 @@ void PairMorse::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } @@ -211,7 +208,7 @@ void PairMorse::coeff(int narg, char **arg) double PairMorse::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); morse1[i][j] = 2.0*d0[i][j]*alpha[i][j]; diff --git a/src/pair_morse.h b/src/pair_morse.h index aca12aecc3..a6c628d3f0 100644 --- a/src/pair_morse.h +++ b/src/pair_morse.h @@ -27,8 +27,9 @@ namespace LAMMPS_NS { class PairMorse : public Pair { public: PairMorse(class LAMMPS *); - ~PairMorse(); - void compute(int, int); + virtual ~PairMorse(); + + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); diff --git a/src/pair_soft.cpp b/src/pair_soft.cpp index 758a3f041a..63f0b72b05 100644 --- a/src/pair_soft.cpp +++ b/src/pair_soft.cpp @@ -21,20 +21,16 @@ #include "force.h" #include "update.h" #include "neigh_list.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +using namespace MathConst; /* ---------------------------------------------------------------------- */ -PairSoft::PairSoft(LAMMPS *lmp) : Pair(lmp) -{ - PI = 4.0*atan(1.0); -} +PairSoft::PairSoft(LAMMPS *lmp) : Pair(lmp) {} /* ---------------------------------------------------------------------- */ @@ -98,9 +94,9 @@ void PairSoft::compute(int eflag, int vflag) if (rsq < cutsq[itype][jtype]) { r = sqrt(rsq); - arg = PI*r/cut[itype][jtype]; + arg = MY_PI*r/cut[itype][jtype]; if (r > 0.0) fpair = factor_lj * prefactor[itype][jtype] * - sin(arg) * PI/cut[itype][jtype]/r; + sin(arg) * MY_PI/cut[itype][jtype]/r; else fpair = 0.0; f[i][0] += delx*fpair; @@ -150,7 +146,7 @@ void PairSoft::allocate() void PairSoft::settings(int narg, char **arg) { - if (narg != 1) error->all("Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(arg[0]); @@ -170,7 +166,7 @@ void PairSoft::settings(int narg, char **arg) void PairSoft::coeff(int narg, char **arg) { - if (narg < 3 || narg > 4) error->all("Incorrect args for pair coefficients"); + if (narg < 3 || narg > 4) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -192,7 +188,7 @@ void PairSoft::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -293,9 +289,9 @@ double PairSoft::single(int i, int j, int itype, int jtype, double rsq, double r,arg,philj; r = sqrt(rsq); - arg = PI*r/cut[itype][jtype]; + arg = MY_PI*r/cut[itype][jtype]; fforce = factor_lj * prefactor[itype][jtype] * - sin(arg) * PI/cut[itype][jtype]/r; + sin(arg) * MY_PI/cut[itype][jtype]/r; philj = prefactor[itype][jtype] * (1.0+cos(arg)); return factor_lj*philj; diff --git a/src/pair_soft.h b/src/pair_soft.h index fbfd3ca43d..5cb8950659 100644 --- a/src/pair_soft.h +++ b/src/pair_soft.h @@ -29,8 +29,9 @@ class PairSoft : public Pair { public: PairSoft(class LAMMPS *); - ~PairSoft(); - void compute(int, int); + virtual ~PairSoft(); + + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); @@ -41,8 +42,7 @@ class PairSoft : public Pair { double single(int, int, int, int, double, double, double, double &); void *extract(char *, int &); - private: - double PI; + protected: double cut_global; double **prefactor; double **cut; diff --git a/src/pair_table.cpp b/src/pair_table.cpp index 64e737933d..40530b1638 100644 --- a/src/pair_table.cpp +++ b/src/pair_table.cpp @@ -29,9 +29,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define LOOKUP 0 #define LINEAR 1 #define SPLINE 2 @@ -119,24 +116,24 @@ void PairTable::compute(int eflag, int vflag) if (rsq < cutsq[itype][jtype]) { tb = &tables[tabindex[itype][jtype]]; if (rsq < tb->innersq) - error->one("Pair distance < table inner cutoff"); + error->one(FLERR,"Pair distance < table inner cutoff"); if (tabstyle == LOOKUP) { itable = static_cast ((rsq - tb->innersq) * tb->invdelta); if (itable >= tlm1) - error->one("Pair distance > table outer cutoff"); + error->one(FLERR,"Pair distance > table outer cutoff"); fpair = factor_lj * tb->f[itable]; } else if (tabstyle == LINEAR) { itable = static_cast ((rsq - tb->innersq) * tb->invdelta); if (itable >= tlm1) - error->one("Pair distance > table outer cutoff"); + error->one(FLERR,"Pair distance > table outer cutoff"); fraction = (rsq - tb->rsq[itable]) * tb->invdelta; value = tb->f[itable] + fraction*tb->df[itable]; fpair = factor_lj * value; } else if (tabstyle == SPLINE) { itable = static_cast ((rsq - tb->innersq) * tb->invdelta); if (itable >= tlm1) - error->one("Pair distance > table outer cutoff"); + error->one(FLERR,"Pair distance > table outer cutoff"); b = (rsq - tb->rsq[itable]) * tb->invdelta; a = 1.0 - b; value = a * tb->f[itable] + b * tb->f[itable+1] + @@ -206,7 +203,7 @@ void PairTable::allocate() void PairTable::settings(int narg, char **arg) { - if (narg != 2) error->all("Illegal pair_style command"); + if (narg != 2) error->all(FLERR,"Illegal pair_style command"); // new settings @@ -214,10 +211,10 @@ 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("Unknown table style in pair_style command"); + else error->all(FLERR,"Unknown table style in pair_style command"); tablength = force->inumeric(arg[1]); - if (tablength < 2) error->all("Illegal number of pair table entries"); + if (tablength < 2) error->all(FLERR,"Illegal number of pair table entries"); // delete old tables, since cannot just change settings @@ -241,7 +238,7 @@ void PairTable::settings(int narg, char **arg) void PairTable::coeff(int narg, char **arg) { - if (narg != 4 && narg != 5) error->all("Illegal pair_coeff command"); + if (narg != 4 && narg != 5) error->all(FLERR,"Illegal pair_coeff command"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -267,7 +264,7 @@ void PairTable::coeff(int narg, char **arg) // insure cutoff is within table // for BITMAP tables, file values can be in non-ascending order - if (tb->ninput <= 1) error->one("Invalid pair table length"); + if (tb->ninput <= 1) error->one(FLERR,"Invalid pair table length"); double rlo,rhi; if (tb->rflag == 0) { rlo = tb->rfile[0]; @@ -276,8 +273,8 @@ void PairTable::coeff(int narg, char **arg) rlo = tb->rlo; rhi = tb->rhi; } - if (tb->cut <= rlo || tb->cut > rhi) error->all("Invalid pair table cutoff"); - if (rlo <= 0.0) error->all("Invalid pair table cutoff"); + if (tb->cut <= rlo || tb->cut > rhi) error->all(FLERR,"Invalid pair table cutoff"); + if (rlo <= 0.0) error->all(FLERR,"Invalid pair table cutoff"); // match = 1 if don't need to spline read-in tables // this is only the case if r values needed by final tables @@ -290,7 +287,7 @@ void PairTable::coeff(int narg, char **arg) if (tabstyle == BITMAP && tb->ninput == 1 << tablength && tb->rflag == BMP && tb->rhi == tb->cut) tb->match = 1; if (tb->rflag == BMP && tb->match == 0) - error->all("Bitmapped table in file does not match requested table"); + error->all(FLERR,"Bitmapped table in file does not match requested table"); // spline read-in values and compute r,e,f vectors within table @@ -308,7 +305,7 @@ void PairTable::coeff(int narg, char **arg) } } - if (count == 0) error->all("Illegal pair_coeff command"); + if (count == 0) error->all(FLERR,"Illegal pair_coeff command"); ntables++; } @@ -318,7 +315,7 @@ void PairTable::coeff(int narg, char **arg) double PairTable::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all("All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); tabindex[j][i] = tabindex[i][j]; @@ -342,14 +339,14 @@ void PairTable::read_table(Table *tb, char *file, char *keyword) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open file %s",file); - error->one(str); + error->one(FLERR,str); } // loop until section found with matching keyword while (1) { if (fgets(line,MAXLINE,fp) == NULL) - error->one("Did not find keyword in table file"); + error->one(FLERR,"Did not find keyword in table file"); if (strspn(line," \t\n\r") == strlen(line)) continue; // blank line if (line[0] == '#') continue; // comment if (strstr(line,keyword) == line) break; // matching keyword @@ -375,7 +372,7 @@ void PairTable::read_table(Table *tb, char *file, char *keyword) if (tb->rflag == BMP) { while (1 << tb->ntablebits < tb->ninput) tb->ntablebits++; if (1 << tb->ntablebits != tb->ninput) - error->one("Bitmapped table is incorrect length in table file"); + error->one(FLERR,"Bitmapped table is incorrect length in table file"); init_bitmap(tb->rlo,tb->rhi,tb->ntablebits,masklo,maskhi,nmask,nshiftbits); } @@ -509,12 +506,12 @@ void PairTable::param_extract(Table *tb, char *line) tb->fphi = atof(word); } else { printf("WORD: %s\n",word); - error->one("Invalid keyword in pair table parameters"); + error->one(FLERR,"Invalid keyword in pair table parameters"); } word = strtok(NULL," \t\n\r\f"); } - if (tb->ninput == 0) error->one("Pair table parameters did not set N"); + if (tb->ninput == 0) error->one(FLERR,"Pair table parameters did not set N"); } /* ---------------------------------------------------------------------- @@ -901,21 +898,21 @@ double PairTable::single(int i, int j, int itype, int jtype, double rsq, int tlm1 = tablength - 1; Table *tb = &tables[tabindex[itype][jtype]]; - if (rsq < tb->innersq) error->one("Pair distance < table inner cutoff"); + if (rsq < tb->innersq) error->one(FLERR,"Pair distance < table inner cutoff"); if (tabstyle == LOOKUP) { itable = static_cast ((rsq-tb->innersq) * tb->invdelta); - if (itable >= tlm1) error->one("Pair distance > table outer cutoff"); + if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); fforce = factor_lj * tb->f[itable]; } else if (tabstyle == LINEAR) { itable = static_cast ((rsq-tb->innersq) * tb->invdelta); - if (itable >= tlm1) error->one("Pair distance > table outer cutoff"); + if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); fraction = (rsq - tb->rsq[itable]) * tb->invdelta; value = tb->f[itable] + fraction*tb->df[itable]; fforce = factor_lj * value; } else if (tabstyle == SPLINE) { itable = static_cast ((rsq-tb->innersq) * tb->invdelta); - if (itable >= tlm1) error->one("Pair distance > table outer cutoff"); + if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); b = (rsq - tb->rsq[itable]) * tb->invdelta; a = 1.0 - b; value = a * tb->f[itable] + b * tb->f[itable+1] + @@ -952,12 +949,12 @@ double PairTable::single(int i, int j, int itype, int jtype, double rsq, void *PairTable::extract(char *str, int &dim) { if (strcmp(str,"cut_coul") != 0) return NULL; - if (ntables == 0) error->all("All pair coeffs are not set"); + if (ntables == 0) error->all(FLERR,"All pair coeffs are not set"); double cut_coul = tables[0].cut; for (int m = 1; m < ntables; m++) if (tables[m].cut != cut_coul) - error->all("Pair table cutoffs must all be equal to use with KSpace"); + error->all(FLERR,"Pair table cutoffs must all be equal to use with KSpace"); dim = 0; return &tables[0].cut; } diff --git a/src/pair_table.h b/src/pair_table.h index f98746e0c9..3ef6466261 100644 --- a/src/pair_table.h +++ b/src/pair_table.h @@ -27,8 +27,9 @@ namespace LAMMPS_NS { class PairTable : public Pair { public: PairTable(class LAMMPS *); - ~PairTable(); - void compute(int, int); + virtual ~PairTable(); + + virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); double init_one(int, int); @@ -39,8 +40,9 @@ class PairTable : public Pair { double single(int, int, int, int, double, double, double, double &); void *extract(char *, int &); - private: + protected: int tabstyle,tablength; + enum {LOOKUP=0, LINEAR=1, SPLINE=2, BITMAP=3}; struct Table { int ninput,rflag,fpflag,match,ntablebits; int nshiftbits,nmask; diff --git a/src/pair_yukawa.cpp b/src/pair_yukawa.cpp index f2a92e72f2..0e544c116e 100644 --- a/src/pair_yukawa.cpp +++ b/src/pair_yukawa.cpp @@ -23,9 +23,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ PairYukawa::PairYukawa(LAMMPS *lmp) : Pair(lmp) {} @@ -50,11 +47,11 @@ PairYukawa::~PairYukawa() void PairYukawa::compute(int eflag, int vflag) { int i,j,ii,jj,inum,jnum,itype,jtype; - double xtmp,ytmp,ztmp,delx,dely,delz,ecoul,fpair; - double rsq,r2inv,r,rinv,screening,forceyukawa,factor_coul; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r2inv,r,rinv,screening,forceyukawa,factor; int *ilist,*jlist,*numneigh,**firstneigh; - ecoul = 0.0; + evdwl = 0.0; if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; @@ -62,7 +59,7 @@ void PairYukawa::compute(int eflag, int vflag) double **f = atom->f; 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; inum = list->inum; @@ -83,7 +80,7 @@ void PairYukawa::compute(int eflag, int vflag) for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; - factor_coul = special_coul[sbmask(j)]; + factor = special_lj[sbmask(j)]; j &= NEIGHMASK; delx = xtmp - x[j][0]; @@ -99,7 +96,7 @@ void PairYukawa::compute(int eflag, int vflag) screening = exp(-kappa*r); forceyukawa = a[itype][jtype] * screening * (kappa + rinv); - fpair = factor_coul*forceyukawa * r2inv; + fpair = factor*forceyukawa * r2inv; f[i][0] += delx*fpair; f[i][1] += dely*fpair; @@ -111,12 +108,12 @@ void PairYukawa::compute(int eflag, int vflag) } if (eflag) { - ecoul = a[itype][jtype] * screening * rinv - offset[itype][jtype]; - ecoul *= factor_coul; + evdwl = a[itype][jtype] * screening * rinv - offset[itype][jtype]; + evdwl *= factor; } if (evflag) ev_tally(i,j,nlocal,newton_pair, - 0.0,ecoul,fpair,delx,dely,delz); + evdwl,0.0,fpair,delx,dely,delz); } } } @@ -152,7 +149,7 @@ void PairYukawa::allocate() void PairYukawa::settings(int narg, char **arg) { - if (narg != 2) error->all("Illegal pair_style command"); + if (narg != 2) error->all(FLERR,"Illegal pair_style command"); kappa = force->numeric(arg[0]); cut_global = force->numeric(arg[1]); @@ -173,7 +170,7 @@ void PairYukawa::settings(int narg, char **arg) void PairYukawa::coeff(int narg, char **arg) { - if (narg < 3 || narg > 4) error->all("Incorrect args for pair coefficients"); + if (narg < 3 || narg > 4) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -195,7 +192,7 @@ void PairYukawa::coeff(int narg, char **arg) } } - if (count == 0) error->all("Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -309,8 +306,8 @@ double PairYukawa::single(int i, int j, int itype, int jtype, double rsq, rinv = 1.0/r; screening = exp(-kappa*r); forceyukawa = a[itype][jtype] * screening * (kappa + rinv); - fforce = factor_coul*forceyukawa * r2inv; + fforce = factor_lj*forceyukawa * r2inv; phi = a[itype][jtype] * screening * rinv - offset[itype][jtype]; - return factor_coul*phi; + return factor_lj*phi; } diff --git a/src/pointers.h b/src/pointers.h index 59afc88139..963561792f 100644 --- a/src/pointers.h +++ b/src/pointers.h @@ -16,7 +16,7 @@ // every LAMMPS class inherits from Pointers to access lammps.h ptrs // these variables are auto-initialized by Pointer class constructor // *& variables are really pointers to the pointers in lammps.h -// & enables them to be accessed directly in any class, e.g. error->all() +// & enables them to be accessed directly in any class, e.g. atom->x #ifndef LMP_POINTERS_H #define LMP_POINTERS_H @@ -27,6 +27,13 @@ namespace LAMMPS_NS { +// universal defines inside namespace + +#define FLERR __FILE__,__LINE__ + +#define MIN(A,B) ((A) < (B) ? (A) : (B)) +#define MAX(A,B) ((A) > (B) ? (A) : (B)) + class Pointers { public: Pointers(LAMMPS *ptr) : diff --git a/src/random_mars.cpp b/src/random_mars.cpp index 966f3a6717..2430eabd56 100644 --- a/src/random_mars.cpp +++ b/src/random_mars.cpp @@ -27,7 +27,7 @@ RanMars::RanMars(LAMMPS *lmp, int seed) : Pointers(lmp) double s,t; if (seed <= 0 || seed > 900000000) - error->all("Invalid seed for Marsaglia random # generator"); + error->all(FLERR,"Invalid seed for Marsaglia random # generator"); save = 0; u = new double[97+1]; diff --git a/src/random_park.cpp b/src/random_park.cpp index cbfa0d109e..6867a61a56 100644 --- a/src/random_park.cpp +++ b/src/random_park.cpp @@ -15,7 +15,6 @@ #include "math.h" #include "random_park.h" -#include "domain.h" #include "error.h" using namespace LAMMPS_NS; @@ -40,7 +39,8 @@ using namespace LAMMPS_NS; RanPark::RanPark(LAMMPS *lmp, int seed_init) : Pointers(lmp) { - if (seed_init <= 0) error->all("Invalid seed for Park random # generator"); + if (seed_init <= 0) + error->all(FLERR,"Invalid seed for Park random # generator"); seed = seed_init; save = 0; } @@ -89,7 +89,8 @@ double RanPark::gaussian() void RanPark::reset(int seed_init) { - if (seed_init <= 0) error->all("Invalid seed for Park random # generator"); + if (seed_init <= 0) + error->all(FLERR,"Invalid seed for Park random # generator"); seed = seed_init; save = 0; } diff --git a/src/read_data.cpp b/src/read_data.cpp index e7b14b84d8..a96a566b01 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -21,6 +21,8 @@ #include "atom.h" #include "atom_vec.h" #include "atom_vec_ellipsoid.h" +#include "atom_vec_line.h" +#include "atom_vec_tri.h" #include "comm.h" #include "update.h" #include "force.h" @@ -42,10 +44,7 @@ using namespace LAMMPS_NS; #define DELTA 4 // must be 2 or larger // customize for new sections -#define NSECTIONS 21 // change when add to header::section_keywords - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) +#define NSECTIONS 23 // change when add to header::section_keywords /* ---------------------------------------------------------------------- */ @@ -63,6 +62,10 @@ ReadData::ReadData(LAMMPS *lmp) : Pointers(lmp) nellipsoids = 0; avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + nlines = 0; + avec_line = (AtomVecLine *) atom->style_match("line"); + ntris = 0; + avec_tri = (AtomVecTri *) atom->style_match("tri"); } /* ---------------------------------------------------------------------- */ @@ -79,12 +82,12 @@ ReadData::~ReadData() void ReadData::command(int narg, char **arg) { - if (narg != 1) error->all("Illegal read_data command"); + if (narg != 1) error->all(FLERR,"Illegal read_data command"); if (domain->box_exist) - error->all("Cannot read_data after simulation box is defined"); + error->all(FLERR,"Cannot read_data after simulation box is defined"); if (domain->dimension == 2 && domain->zperiodic == 0) - error->all("Cannot run 2d simulation with nonperiodic Z dimension"); + error->all(FLERR,"Cannot run 2d simulation with nonperiodic Z dimension"); // scan data file to determine max topology needed per atom // allocate initial topology arrays @@ -147,122 +150,138 @@ void ReadData::command(int narg, char **arg) atoms(); atomflag = 1; } else if (strcmp(keyword,"Velocities") == 0) { - if (atomflag == 0) error->all("Must read Atoms before Velocities"); + if (atomflag == 0) error->all(FLERR,"Must read Atoms before Velocities"); velocities(); } else if (strcmp(keyword,"Ellipsoids") == 0) { if (!avec_ellipsoid) - error->all("Invalid data file section: Ellipsoids"); - if (atomflag == 0) error->all("Must read Atoms before Ellipsoids"); - ellipsoids(); + error->all(FLERR,"Invalid data file section: Ellipsoids"); + if (atomflag == 0) error->all(FLERR,"Must read Atoms before Ellipsoids"); + bonus(nellipsoids,(AtomVec *) avec_ellipsoid,"ellipsoids"); + } else if (strcmp(keyword,"Lines") == 0) { + if (!avec_line) + error->all(FLERR,"Invalid data file section: Lines"); + if (atomflag == 0) error->all(FLERR,"Must read Atoms before Lines"); + bonus(nlines,(AtomVec *) avec_line,"lines"); + } else if (strcmp(keyword,"Triangles") == 0) { + if (!avec_tri) + error->all(FLERR,"Invalid data file section: Triangles"); + if (atomflag == 0) error->all(FLERR,"Must read Atoms before Triangles"); + bonus(ntris,(AtomVec *) avec_tri,"triangles"); } else if (strcmp(keyword,"Bonds") == 0) { if (atom->avec->bonds_allow == 0) - error->all("Invalid data file section: Bonds"); - if (atomflag == 0) error->all("Must read Atoms before Bonds"); + error->all(FLERR,"Invalid data file section: Bonds"); + if (atomflag == 0) error->all(FLERR,"Must read Atoms before Bonds"); bonds(); } else if (strcmp(keyword,"Angles") == 0) { if (atom->avec->angles_allow == 0) - error->all("Invalid data file section: Angles"); - if (atomflag == 0) error->all("Must read Atoms before Angles"); + error->all(FLERR,"Invalid data file section: Angles"); + if (atomflag == 0) error->all(FLERR,"Must read Atoms before Angles"); angles(); } else if (strcmp(keyword,"Dihedrals") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: Dihedrals"); - if (atomflag == 0) error->all("Must read Atoms before Dihedrals"); + error->all(FLERR,"Invalid data file section: Dihedrals"); + if (atomflag == 0) error->all(FLERR,"Must read Atoms before Dihedrals"); dihedrals(); } else if (strcmp(keyword,"Impropers") == 0) { if (atom->avec->impropers_allow == 0) - error->all("Invalid data file section: Impropers"); - if (atomflag == 0) error->all("Must read Atoms before Impropers"); + error->all(FLERR,"Invalid data file section: Impropers"); + if (atomflag == 0) error->all(FLERR,"Must read Atoms before Impropers"); impropers(); } else if (strcmp(keyword,"Masses") == 0) { mass(); } else if (strcmp(keyword,"Pair Coeffs") == 0) { if (force->pair == NULL) - error->all("Must define pair_style before Pair Coeffs"); + error->all(FLERR,"Must define pair_style before Pair Coeffs"); paircoeffs(); } else if (strcmp(keyword,"Bond Coeffs") == 0) { if (atom->avec->bonds_allow == 0) - error->all("Invalid data file section: Bond Coeffs"); + error->all(FLERR,"Invalid data file section: Bond Coeffs"); if (force->bond == NULL) - error->all("Must define bond_style before Bond Coeffs"); + error->all(FLERR,"Must define bond_style before Bond Coeffs"); bondcoeffs(); } else if (strcmp(keyword,"Angle Coeffs") == 0) { if (atom->avec->angles_allow == 0) - error->all("Invalid data file section: Angle Coeffs"); + error->all(FLERR,"Invalid data file section: Angle Coeffs"); if (force->angle == NULL) - error->all("Must define angle_style before Angle Coeffs"); + error->all(FLERR,"Must define angle_style before Angle Coeffs"); anglecoeffs(0); } else if (strcmp(keyword,"Dihedral Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: Dihedral Coeffs"); + error->all(FLERR,"Invalid data file section: Dihedral Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before Dihedral Coeffs"); + error->all(FLERR,"Must define dihedral_style before Dihedral Coeffs"); dihedralcoeffs(0); } else if (strcmp(keyword,"Improper Coeffs") == 0) { if (atom->avec->impropers_allow == 0) - error->all("Invalid data file section: Improper Coeffs"); + error->all(FLERR,"Invalid data file section: Improper Coeffs"); if (force->improper == NULL) - error->all("Must define improper_style before Improper Coeffs"); + error->all(FLERR,"Must define improper_style before Improper Coeffs"); impropercoeffs(0); } else if (strcmp(keyword,"BondBond Coeffs") == 0) { if (atom->avec->angles_allow == 0) - error->all("Invalid data file section: BondBond Coeffs"); + error->all(FLERR,"Invalid data file section: BondBond Coeffs"); if (force->angle == NULL) - error->all("Must define angle_style before BondBond Coeffs"); + error->all(FLERR,"Must define angle_style before BondBond Coeffs"); anglecoeffs(1); } else if (strcmp(keyword,"BondAngle Coeffs") == 0) { if (atom->avec->angles_allow == 0) - error->all("Invalid data file section: BondAngle Coeffs"); + error->all(FLERR,"Invalid data file section: BondAngle Coeffs"); if (force->angle == NULL) - error->all("Must define angle_style before BondAngle Coeffs"); + error->all(FLERR,"Must define angle_style before BondAngle Coeffs"); anglecoeffs(2); } else if (strcmp(keyword,"MiddleBondTorsion Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: MiddleBondTorsion Coeffs"); + error->all(FLERR,"Invalid data file section: MiddleBondTorsion Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before MiddleBondTorsion Coeffs"); + error->all(FLERR, + "Must define dihedral_style before " + "MiddleBondTorsion Coeffs"); dihedralcoeffs(1); } else if (strcmp(keyword,"EndBondTorsion Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: EndBondTorsion Coeffs"); + error->all(FLERR,"Invalid data file section: EndBondTorsion Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before EndBondTorsion Coeffs"); + error->all(FLERR, + "Must define dihedral_style before EndBondTorsion Coeffs"); dihedralcoeffs(2); } else if (strcmp(keyword,"AngleTorsion Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: AngleTorsion Coeffs"); + error->all(FLERR,"Invalid data file section: AngleTorsion Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before AngleTorsion Coeffs"); + error->all(FLERR, + "Must define dihedral_style before AngleTorsion Coeffs"); dihedralcoeffs(3); } else if (strcmp(keyword,"AngleAngleTorsion Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: AngleAngleTorsion Coeffs"); + error->all(FLERR,"Invalid data file section: AngleAngleTorsion Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before AngleAngleTorsion Coeffs"); + error->all(FLERR, + "Must define dihedral_style before " + "AngleAngleTorsion Coeffs"); dihedralcoeffs(4); } else if (strcmp(keyword,"BondBond13 Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: BondBond13 Coeffs"); + error->all(FLERR,"Invalid data file section: BondBond13 Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before BondBond13 Coeffs"); + error->all(FLERR,"Must define dihedral_style before BondBond13 Coeffs"); dihedralcoeffs(5); } else if (strcmp(keyword,"AngleAngle Coeffs") == 0) { if (atom->avec->impropers_allow == 0) - error->all("Invalid data file section: AngleAngle Coeffs"); + error->all(FLERR,"Invalid data file section: AngleAngle Coeffs"); if (force->improper == NULL) - error->all("Must define improper_style before AngleAngle Coeffs"); + error->all(FLERR,"Must define improper_style before AngleAngle Coeffs"); impropercoeffs(1); } else { char str[128]; sprintf(str,"Unknown identifier in data file: %s",keyword); - error->all(str); + error->all(FLERR,str); } parse_keyword(0,1); @@ -277,7 +296,8 @@ void ReadData::command(int narg, char **arg) // error if natoms > 0 yet no atoms were read - if (atom->natoms > 0 && atomflag == 0) error->all("No atoms in data file"); + if (atom->natoms > 0 && atomflag == 0) + error->all(FLERR,"No atoms in data file"); // create bond topology now that system is defined @@ -306,7 +326,7 @@ void ReadData::header(int flag) // customize for new sections char *section_keywords[NSECTIONS] = - {"Atoms","Velocities","Ellipsoids", + {"Atoms","Velocities","Ellipsoids","Lines","Triangles", "Bonds","Angles","Dihedrals","Impropers", "Masses","Pair Coeffs","Bond Coeffs","Angle Coeffs", "Dihedral Coeffs","Improper Coeffs", @@ -318,7 +338,7 @@ void ReadData::header(int flag) if (me == 0) { char *eof = fgets(line,MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); } // customize for new header lines @@ -374,8 +394,16 @@ void ReadData::header(int flag) else if (strstr(line,"ellipsoids")) { if (!avec_ellipsoid) - error->all("No ellipsoids allowed with this atom style"); + error->all(FLERR,"No ellipsoids allowed with this atom style"); sscanf(line,BIGINT_FORMAT,&nellipsoids); + } else if (strstr(line,"lines")) { + if (!avec_line) + error->all(FLERR,"No lines allowed with this atom style"); + sscanf(line,BIGINT_FORMAT,&nlines); + } else if (strstr(line,"triangles")) { + if (!avec_tri) + error->all(FLERR,"No triangles allowed with this atom style"); + sscanf(line,BIGINT_FORMAT,&ntris); } else if (strstr(line,"xlo xhi")) @@ -397,8 +425,8 @@ void ReadData::header(int flag) atom->nangles < 0 || atom->nangles > MAXBIGINT || atom->ndihedrals < 0 || atom->ndihedrals > MAXBIGINT || atom->nimpropers < 0 || atom->nimpropers > MAXBIGINT) { - if (flag == 0) error->one("System in data file is too big"); - else error->all("System in data file is too big"); + if (flag == 0) error->one(FLERR,"System in data file is too big"); + else error->all(FLERR,"System in data file is too big"); } // check that exiting string is a valid section keyword @@ -409,32 +437,32 @@ void ReadData::header(int flag) if (n == NSECTIONS) { char str[128]; sprintf(str,"Unknown identifier in data file: %s",keyword); - error->all(str); + error->all(FLERR,str); } // error check on consistency of header values if ((atom->nbonds || atom->nbondtypes) && atom->avec->bonds_allow == 0) - error->one("No bonds allowed with this atom style"); + error->one(FLERR,"No bonds allowed with this atom style"); if ((atom->nangles || atom->nangletypes) && atom->avec->angles_allow == 0) - error->one("No angles allowed with this atom style"); + error->one(FLERR,"No angles allowed with this atom style"); if ((atom->ndihedrals || atom->ndihedraltypes) && atom->avec->dihedrals_allow == 0) - error->one("No dihedrals allowed with this atom style"); + error->one(FLERR,"No dihedrals allowed with this atom style"); if ((atom->nimpropers || atom->nimpropertypes) && atom->avec->impropers_allow == 0) - error->one("No impropers allowed with this atom style"); + error->one(FLERR,"No impropers allowed with this atom style"); if (atom->nbonds > 0 && atom->nbondtypes <= 0) - error->one("Bonds defined but no bond types"); + error->one(FLERR,"Bonds defined but no bond types"); if (atom->nangles > 0 && atom->nangletypes <= 0) - error->one("Angles defined but no angle types"); + error->one(FLERR,"Angles defined but no angle types"); if (atom->ndihedrals > 0 && atom->ndihedraltypes <= 0) - error->one("Dihedrals defined but no dihedral types"); + error->one(FLERR,"Dihedrals defined but no dihedral types"); if (atom->nimpropers > 0 && atom->nimpropertypes <= 0) - error->one("Impropers defined but no improper types"); + error->one(FLERR,"Impropers defined but no improper types"); } /* ---------------------------------------------------------------------- @@ -456,7 +484,7 @@ void ReadData::atoms() m = 0; for (i = 0; i < nchunk; i++) { eof = fgets(&buffer[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buffer[m]); } m++; @@ -478,7 +506,8 @@ void ReadData::atoms() if (logfile) fprintf(logfile," " BIGINT_FORMAT " atoms\n",natoms); } - if (natoms != atom->natoms) error->all("Did not assign all atoms correctly"); + if (natoms != atom->natoms) + error->all(FLERR,"Did not assign all atoms correctly"); // if any atom ID < 0, error // if all atom IDs = 0, tag_enable = 0 @@ -494,7 +523,7 @@ void ReadData::atoms() int flag_all; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); if (flag_all) - error->all("Invalid atom ID in Atoms section of data file"); + error->all(FLERR,"Invalid atom ID in Atoms section of data file"); flag = 0; for (int i = 0; i < nlocal; i++) @@ -508,7 +537,7 @@ void ReadData::atoms() if (tag[i] == 0) flag = 1; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); if (flag_all) - error->all("Invalid atom ID in Atoms section of data file"); + error->all(FLERR,"Invalid atom ID in Atoms section of data file"); } // create global mapping @@ -547,7 +576,7 @@ void ReadData::velocities() m = 0; for (i = 0; i < nchunk; i++) { eof = fgets(&buffer[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buffer[m]); } m++; @@ -571,11 +600,11 @@ void ReadData::velocities() } /* ---------------------------------------------------------------------- - read all ellipsoids + read all bonus data to find atoms, must build atom map if not a molecular system ------------------------------------------------------------------------- */ -void ReadData::ellipsoids() +void ReadData::bonus(bigint nbonus, AtomVec *ptr, char *type) { int i,m,nchunk; @@ -588,7 +617,7 @@ void ReadData::ellipsoids() } bigint nread = 0; - bigint natoms = nellipsoids; + bigint natoms = nbonus; while (nread < natoms) { if (natoms-nread > CHUNK) nchunk = CHUNK; @@ -598,7 +627,7 @@ void ReadData::ellipsoids() m = 0; for (i = 0; i < nchunk; i++) { eof = fgets(&buffer[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buffer[m]); } m++; @@ -606,7 +635,7 @@ void ReadData::ellipsoids() MPI_Bcast(&m,1,MPI_INT,0,world); MPI_Bcast(buffer,m,MPI_CHAR,0,world); - atom->data_bonus(nchunk,buffer,avec_ellipsoid); + atom->data_bonus(nchunk,buffer,ptr); nread += nchunk; } @@ -616,8 +645,8 @@ void ReadData::ellipsoids() } if (me == 0) { - if (screen) fprintf(screen," " BIGINT_FORMAT " ellipsoids\n",natoms); - if (logfile) fprintf(logfile," " BIGINT_FORMAT " ellipsoids\n",natoms); + if (screen) fprintf(screen," " BIGINT_FORMAT " %s\n",natoms,type); + if (logfile) fprintf(logfile," " BIGINT_FORMAT " %s\n",natoms,type); } } @@ -637,7 +666,7 @@ void ReadData::bonds() m = 0; for (i = 0; i < nchunk; i++) { eof = fgets(&buffer[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buffer[m]); } m++; @@ -663,7 +692,8 @@ void ReadData::bonds() if (screen) fprintf(screen," " BIGINT_FORMAT " bonds\n",sum/factor); if (logfile) fprintf(logfile," " BIGINT_FORMAT " bonds\n",sum/factor); } - if (sum != factor*atom->nbonds) error->all("Bonds assigned incorrectly"); + if (sum != factor*atom->nbonds) + error->all(FLERR,"Bonds assigned incorrectly"); } /* ---------------------------------------------------------------------- */ @@ -682,7 +712,7 @@ void ReadData::angles() m = 0; for (i = 0; i < nchunk; i++) { eof = fgets(&buffer[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buffer[m]); } m++; @@ -708,7 +738,8 @@ void ReadData::angles() if (screen) fprintf(screen," " BIGINT_FORMAT " angles\n",sum/factor); if (logfile) fprintf(logfile," " BIGINT_FORMAT " angles\n",sum/factor); } - if (sum != factor*atom->nangles) error->all("Angles assigned incorrectly"); + if (sum != factor*atom->nangles) + error->all(FLERR,"Angles assigned incorrectly"); } /* ---------------------------------------------------------------------- */ @@ -727,7 +758,7 @@ void ReadData::dihedrals() m = 0; for (i = 0; i < nchunk; i++) { eof = fgets(&buffer[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buffer[m]); } m++; @@ -754,7 +785,7 @@ void ReadData::dihedrals() if (logfile) fprintf(logfile," " BIGINT_FORMAT " dihedrals\n",sum/factor); } if (sum != factor*atom->ndihedrals) - error->all("Dihedrals assigned incorrectly"); + error->all(FLERR,"Dihedrals assigned incorrectly"); } /* ---------------------------------------------------------------------- */ @@ -773,7 +804,7 @@ void ReadData::impropers() m = 0; for (i = 0; i < nchunk; i++) { eof = fgets(&buffer[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buffer[m]); } m++; @@ -800,7 +831,7 @@ void ReadData::impropers() if (logfile) fprintf(logfile," " BIGINT_FORMAT " impropers\n",sum/factor); } if (sum != factor*atom->nimpropers) - error->all("Impropers assigned incorrectly"); + error->all(FLERR,"Impropers assigned incorrectly"); } /* ---------------------------------------------------------------------- */ @@ -816,7 +847,7 @@ void ReadData::mass() m = 0; for (i = 0; i < atom->ntypes; i++) { eof = fgets(&buf[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buf[m]); buf[m-1] = '\0'; } @@ -845,7 +876,7 @@ void ReadData::paircoeffs() m = 0; for (i = 0; i < atom->ntypes; i++) { eof = fgets(&buf[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buf[m]); buf[m-1] = '\0'; } @@ -876,7 +907,7 @@ void ReadData::bondcoeffs() m = 0; for (i = 0; i < atom->nbondtypes; i++) { eof = fgets(&buf[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buf[m]); buf[m-1] = '\0'; } @@ -907,7 +938,7 @@ void ReadData::anglecoeffs(int which) m = 0; for (i = 0; i < atom->nangletypes; i++) { eof = fgets(&buf[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buf[m]); buf[m-1] = '\0'; } @@ -940,7 +971,7 @@ void ReadData::dihedralcoeffs(int which) m = 0; for (i = 0; i < atom->ndihedraltypes; i++) { eof = fgets(&buf[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buf[m]); buf[m-1] = '\0'; } @@ -976,7 +1007,7 @@ void ReadData::impropercoeffs(int which) m = 0; for (i = 0; i < atom->nimpropertypes; i++) { eof = fgets(&buf[m],MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); m += strlen(&buf[m]); buf[m-1] = '\0'; } @@ -1006,13 +1037,15 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, char *eof; if (atom->natoms > MAXSMALLINT) - error->all("Molecular data file has too many atoms"); + error->all(FLERR,"Molecular data file has too many atoms"); // customize for new sections int natoms = static_cast (atom->natoms); bond_per_atom = angle_per_atom = dihedral_per_atom = improper_per_atom = 0; int ellipsoid_flag = 0; + int line_flag = 0; + int tri_flag = 0; // customize for new sections // allocate topology counting vector @@ -1031,86 +1064,100 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, else if (strcmp(keyword,"Ellipsoids") == 0) { if (!avec_ellipsoid) - error->all("Invalid data file section: Ellipsoids"); + error->all(FLERR,"Invalid data file section: Ellipsoids"); ellipsoid_flag = 1; skip_lines(nellipsoids); + } else if (strcmp(keyword,"Lines") == 0) { + if (!avec_line) error->all(FLERR,"Invalid data file section: Lines"); + line_flag = 1; + skip_lines(nlines); + } else if (strcmp(keyword,"Triangles") == 0) { + if (!avec_tri) error->all(FLERR,"Invalid data file section: Triangles"); + tri_flag = 1; + skip_lines(ntris); } else if (strcmp(keyword,"Pair Coeffs") == 0) { if (force->pair == NULL) - error->all("Must define pair_style before Pair Coeffs"); + error->all(FLERR,"Must define pair_style before Pair Coeffs"); skip_lines(atom->ntypes); } else if (strcmp(keyword,"Bond Coeffs") == 0) { if (atom->avec->bonds_allow == 0) - error->all("Invalid data file section: Bond Coeffs"); + error->all(FLERR,"Invalid data file section: Bond Coeffs"); if (force->bond == NULL) - error->all("Must define bond_style before Bond Coeffs"); + error->all(FLERR,"Must define bond_style before Bond Coeffs"); skip_lines(atom->nbondtypes); } else if (strcmp(keyword,"Angle Coeffs") == 0) { if (atom->avec->angles_allow == 0) - error->all("Invalid data file section: Angle Coeffs"); + error->all(FLERR,"Invalid data file section: Angle Coeffs"); if (force->angle == NULL) - error->all("Must define angle_style before Angle Coeffs"); + error->all(FLERR,"Must define angle_style before Angle Coeffs"); skip_lines(atom->nangletypes); } else if (strcmp(keyword,"Dihedral Coeffs") == 0) { skip_lines(atom->ndihedraltypes); if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: Dihedral Coeffs"); + error->all(FLERR,"Invalid data file section: Dihedral Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before Dihedral Coeffs"); + error->all(FLERR,"Must define dihedral_style before Dihedral Coeffs"); } else if (strcmp(keyword,"Improper Coeffs") == 0) { if (atom->avec->impropers_allow == 0) - error->all("Invalid data file section: Improper Coeffs"); + error->all(FLERR,"Invalid data file section: Improper Coeffs"); if (force->improper == NULL) - error->all("Must define improper_style before Improper Coeffs"); + error->all(FLERR,"Must define improper_style before Improper Coeffs"); skip_lines(atom->nimpropertypes); } else if (strcmp(keyword,"BondBond Coeffs") == 0) { if (atom->avec->angles_allow == 0) - error->all("Invalid data file section: BondBond Coeffs"); + error->all(FLERR,"Invalid data file section: BondBond Coeffs"); if (force->angle == NULL) - error->all("Must define angle_style before BondBond Coeffs"); + error->all(FLERR,"Must define angle_style before BondBond Coeffs"); skip_lines(atom->nangletypes); } else if (strcmp(keyword,"BondAngle Coeffs") == 0) { if (atom->avec->angles_allow == 0) - error->all("Invalid data file section: BondAngle Coeffs"); + error->all(FLERR,"Invalid data file section: BondAngle Coeffs"); if (force->angle == NULL) - error->all("Must define angle_style before BondAngle Coeffs"); + error->all(FLERR,"Must define angle_style before BondAngle Coeffs"); skip_lines(atom->nangletypes); } else if (strcmp(keyword,"MiddleBondTorsion Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: MiddleBondTorsion Coeffs"); + error->all(FLERR,"Invalid data file section: MiddleBondTorsion Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before MiddleBondTorsion Coeffs"); + error->all(FLERR, + "Must define dihedral_style before " + "MiddleBondTorsion Coeffs"); skip_lines(atom->ndihedraltypes); } else if (strcmp(keyword,"EndBondTorsion Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: EndBondTorsion Coeffs"); + error->all(FLERR,"Invalid data file section: EndBondTorsion Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before EndBondTorsion Coeffs"); + error->all(FLERR, + "Must define dihedral_style before EndBondTorsion Coeffs"); skip_lines(atom->ndihedraltypes); } else if (strcmp(keyword,"AngleTorsion Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: AngleTorsion Coeffs"); + error->all(FLERR,"Invalid data file section: AngleTorsion Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before AngleTorsion Coeffs"); + error->all(FLERR, + "Must define dihedral_style before AngleTorsion Coeffs"); skip_lines(atom->ndihedraltypes); } else if (strcmp(keyword,"AngleAngleTorsion Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: AngleAngleTorsion Coeffs"); + error->all(FLERR,"Invalid data file section: AngleAngleTorsion Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before AngleAngleTorsion Coeffs"); + error->all(FLERR, + "Must define dihedral_style before " + "AngleAngleTorsion Coeffs"); skip_lines(atom->ndihedraltypes); } else if (strcmp(keyword,"BondBond13 Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) - error->all("Invalid data file section: BondBond13 Coeffs"); + error->all(FLERR,"Invalid data file section: BondBond13 Coeffs"); if (force->dihedral == NULL) - error->all("Must define dihedral_style before BondBond13 Coeffs"); + error->all(FLERR,"Must define dihedral_style before BondBond13 Coeffs"); skip_lines(atom->ndihedraltypes); } else if (strcmp(keyword,"AngleAngle Coeffs") == 0) { if (atom->avec->impropers_allow == 0) - error->all("Invalid data file section: AngleAngle Coeffs"); + error->all(FLERR,"Invalid data file section: AngleAngle Coeffs"); if (force->improper == NULL) - error->all("Must define improper_style before AngleAngle Coeffs"); + error->all(FLERR,"Must define improper_style before AngleAngle Coeffs"); skip_lines(atom->nimpropertypes); } else if (strcmp(keyword,"Bonds") == 0) { @@ -1118,7 +1165,7 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, if (force->newton_bond) for (i = 0; i < atom->nbonds; i++) { eof = fgets(line,MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); sscanf(line,"%d %d %d %d",&tmp1,&tmp2,&atom1,&atom2); if (atom1 >= cmax) cmax = reallocate(&count,cmax,atom1); count[atom1]++; @@ -1126,7 +1173,7 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, else for (i = 0; i < atom->nbonds; i++) { eof = fgets(line,MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); sscanf(line,"%d %d %d %d",&tmp1,&tmp2,&atom1,&atom2); int amax = MAX(atom1,atom2); if (amax >= cmax) cmax = reallocate(&count,cmax,amax); @@ -1142,7 +1189,7 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, if (force->newton_bond) for (i = 0; i < atom->nangles; i++) { eof = fgets(line,MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); sscanf(line,"%d %d %d %d %d",&tmp1,&tmp2,&atom1,&atom2,&atom3); if (atom2 >= cmax) cmax = reallocate(&count,cmax,atom2); count[atom2]++; @@ -1150,7 +1197,7 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, else for (i = 0; i < atom->nangles; i++) { eof = fgets(line,MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); sscanf(line,"%d %d %d %d %d",&tmp1,&tmp2,&atom1,&atom2,&atom3); int amax = MAX(atom1,atom2); amax = MAX(amax,atom3); @@ -1168,7 +1215,7 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, if (force->newton_bond) for (i = 0; i < atom->ndihedrals; i++) { eof = fgets(line,MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); sscanf(line,"%d %d %d %d %d %d", &tmp1,&tmp2,&atom1,&atom2,&atom3,&atom4); if (atom2 >= cmax) cmax = reallocate(&count,cmax,atom2); @@ -1177,7 +1224,7 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, else for (i = 0; i < atom->ndihedrals; i++) { eof = fgets(line,MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); sscanf(line,"%d %d %d %d %d %d", &tmp1,&tmp2,&atom1,&atom2,&atom3,&atom4); int amax = MAX(atom1,atom2); @@ -1201,7 +1248,7 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, if (force->newton_bond) for (i = 0; i < atom->nimpropers; i++) { eof = fgets(line,MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); sscanf(line,"%d %d %d %d %d %d", &tmp1,&tmp2,&atom1,&atom2,&atom3,&atom4); if (atom2 >= cmax) cmax = reallocate(&count,cmax,atom2); @@ -1210,7 +1257,7 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, else for (i = 0; i < atom->nimpropers; i++) { eof = fgets(line,MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); sscanf(line,"%d %d %d %d %d %d", &tmp1,&tmp2,&atom1,&atom2,&atom3,&atom4); int amax = MAX(atom1,atom2); @@ -1232,7 +1279,7 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, } else { char str[128]; sprintf(str,"Unknown identifier in data file: %s",keyword); - error->one(str); + error->one(FLERR,str); } parse_keyword(0,0); @@ -1248,13 +1295,17 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom, (atom->nangles && !angle_per_atom) || (atom->ndihedrals && !dihedral_per_atom) || (atom->nimpropers && !improper_per_atom)) - error->one("Needed topology not in data file"); + error->one(FLERR,"Needed topology not in data file"); // customize for new sections // error check that Bonus sections were speficied in file if (nellipsoids && !ellipsoid_flag) - error->one("Needed bonus data not in data file"); + error->one(FLERR,"Needed bonus data not in data file"); + if (nlines && !line_flag) + error->one(FLERR,"Needed bonus data not in data file"); + if (ntris && !tri_flag) + error->one(FLERR,"Needed bonus data not in data file"); } /* ---------------------------------------------------------------------- @@ -1288,14 +1339,14 @@ void ReadData::open(char *file) sprintf(gunzip,"gunzip -c %s",file); fp = popen(gunzip,"r"); #else - error->one("Cannot open gzipped file"); + error->one(FLERR,"Cannot open gzipped file"); #endif } if (fp == NULL) { char str[128]; sprintf(str,"Cannot open file %s",file); - error->one(str); + error->one(FLERR,str); } } @@ -1362,7 +1413,7 @@ void ReadData::skip_lines(int n) { char *eof; for (int i = 0; i < n; i++) eof = fgets(line,MAXLINE,fp); - if (eof == NULL) error->one("Unexpected end of data file"); + if (eof == NULL) error->one(FLERR,"Unexpected end of data file"); } /* ---------------------------------------------------------------------- diff --git a/src/read_data.h b/src/read_data.h index 80fd441413..67398469c5 100644 --- a/src/read_data.h +++ b/src/read_data.h @@ -40,6 +40,10 @@ class ReadData : protected Pointers { bigint nellipsoids; class AtomVecEllipsoid *avec_ellipsoid; + bigint nlines; + class AtomVecLine *avec_line; + bigint ntris; + class AtomVecTri *avec_tri; void open(char *); void scan(int &, int &, int &, int &); @@ -51,7 +55,7 @@ class ReadData : protected Pointers { void atoms(); void velocities(); - void ellipsoids(); + void bonus(bigint, class AtomVec *, char *); void bonds(); void angles(); diff --git a/src/read_restart.cpp b/src/read_restart.cpp index d815b7ff8e..dadc29b64f 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -69,10 +69,10 @@ ReadRestart::ReadRestart(LAMMPS *lmp) : Pointers(lmp) {} void ReadRestart::command(int narg, char **arg) { - if (narg != 1) error->all("Illegal read_restart command"); + if (narg != 1) error->all(FLERR,"Illegal read_restart command"); if (domain->box_exist) - error->all("Cannot read_restart after simulation box is defined"); + error->all(FLERR,"Cannot read_restart after simulation box is defined"); MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); @@ -112,7 +112,7 @@ void ReadRestart::command(int narg, char **arg) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open restart file %s",hfile); - error->one(str); + error->one(FLERR,str); } if (multiproc) delete [] hfile; } @@ -226,7 +226,7 @@ void ReadRestart::command(int narg, char **arg) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open restart file %s",perproc); - error->one(str); + error->one(FLERR,str); } fread(&n,sizeof(int),1,fp); @@ -307,7 +307,8 @@ void ReadRestart::command(int narg, char **arg) if (logfile) fprintf(logfile," " BIGINT_FORMAT " atoms\n",natoms); } - if (natoms != atom->natoms) error->all("Did not assign all atoms correctly"); + if (natoms != atom->natoms) + error->all(FLERR,"Did not assign all atoms correctly"); if (me == 0) { if (atom->nbonds) { @@ -411,7 +412,7 @@ void ReadRestart::file_search(char *infile, char *outfile) struct dirent *ep; DIR *dp = opendir(dirname); if (dp == NULL) - error->one("Cannot open dir to search for restart file"); + error->one(FLERR,"Cannot open dir to search for restart file"); while (ep = readdir(dp)) { if (strstr(ep->d_name,begin) != ep->d_name) continue; if ((ptr = strstr(&ep->d_name[nbegin],end)) == NULL) continue; @@ -423,7 +424,7 @@ void ReadRestart::file_search(char *infile, char *outfile) } } closedir(dp); - if (maxnum < 0) error->one("Found no restart file matching pattern"); + if (maxnum < 0) error->one(FLERR,"Found no restart file matching pattern"); // create outfile with maxint substituted for "*" // use original infile, not pattern, since need to retain "%" in filename @@ -463,7 +464,7 @@ void ReadRestart::header() if (flag == VERSION) { char *version = read_char(); if (strcmp(version,universe->version) != 0 && me == 0) { - error->warning("Restart file version does not match LAMMPS version"); + error->warning(FLERR,"Restart file version does not match LAMMPS version"); if (screen) fprintf(screen," restart file = %s, LAMMPS = %s\n", version,universe->version); } @@ -474,15 +475,15 @@ void ReadRestart::header() } else if (flag == SMALLINT) { int size = read_int(); if (size != sizeof(smallint)) - error->all("Smallint setting in lmptype.h is not compatible"); + error->all(FLERR,"Smallint setting in lmptype.h is not compatible"); } else if (flag == TAGINT) { int size = read_int(); if (size != sizeof(tagint)) - error->all("Tagint setting in lmptype.h is not compatible"); + error->all(FLERR,"Tagint setting in lmptype.h is not compatible"); } else if (flag == BIGINT) { int size = read_int(); if (size != sizeof(bigint)) - error->all("Bigint setting in lmptype.h is not compatible"); + error->all(FLERR,"Bigint setting in lmptype.h is not compatible"); // reset unit_style only if different // so that timestep,neighbor-skin are not changed @@ -501,14 +502,15 @@ void ReadRestart::header() int dimension = read_int(); domain->dimension = dimension; if (domain->dimension == 2 && domain->zperiodic == 0) - error->all("Cannot run 2d simulation with nonperiodic Z dimension"); + error->all(FLERR, + "Cannot run 2d simulation with nonperiodic Z dimension"); // read nprocs from restart file, warn if different } else if (flag == NPROCS) { nprocs_file = read_int(); if (nprocs_file != comm->nprocs && me == 0) - error->warning("Restart file used different # of processors"); + error->warning(FLERR,"Restart file used different # of processors"); // don't set procgrid, warn if different @@ -521,7 +523,7 @@ void ReadRestart::header() if (comm->user_procgrid[0] != 0 && (px != comm->user_procgrid[0] || py != comm->user_procgrid[1] || pz != comm->user_procgrid[2]) && me == 0) - error->warning("Restart file used different 3d processor grid"); + error->warning(FLERR,"Restart file used different 3d processor grid"); // don't set newton_pair, leave input script value unchanged // set newton_bond from restart file @@ -531,14 +533,16 @@ void ReadRestart::header() int newton_pair_file = read_int(); if (force->newton_pair != 1) { if (newton_pair_file != force->newton_pair && me == 0) - error->warning("Restart file used different newton pair setting, " + error->warning(FLERR, + "Restart file used different newton pair setting, " "using input script value"); } } else if (flag == NEWTON_BOND) { int newton_bond_file = read_int(); if (force->newton_bond != 1) { if (newton_bond_file != force->newton_bond && me == 0) - error->warning("Restart file used different newton bond setting, " + error->warning(FLERR, + "Restart file used different newton bond setting, " "using restart file value"); } force->newton_bond = newton_bond_file; @@ -577,7 +581,7 @@ void ReadRestart::header() boundary[2][0] != domain->boundary[2][0] || boundary[2][1] != domain->boundary[2][1]) { if (me == 0) - error->warning("Restart file used different boundary settings, " + error->warning(FLERR,"Restart file used different boundary settings, " "using restart file values"); } } @@ -687,7 +691,7 @@ void ReadRestart::header() domain->triclinic = 1; domain->yz = read_double(); - } else error->all("Invalid flag in header section of restart file"); + } else error->all(FLERR,"Invalid flag in header section of restart file"); flag = read_int(); } @@ -707,7 +711,8 @@ void ReadRestart::type_arrays() atom->set_mass(mass); delete [] mass; - } else error->all("Invalid flag in type arrays section of restart file"); + } else error->all(FLERR, + "Invalid flag in type arrays section of restart file"); flag = read_int(); } @@ -732,7 +737,11 @@ void ReadRestart::force_fields() force->create_pair(style); delete [] style; - force->pair->read_restart(fp); + if (force->pair->restartinfo) force->pair->read_restart(fp); + else { + delete force->pair; + force->pair = NULL; + } } else if (flag == BOND) { if (me == 0) fread(&n,sizeof(int),1,fp); @@ -778,7 +787,8 @@ void ReadRestart::force_fields() delete [] style; force->improper->read_restart(fp); - } else error->all("Invalid flag in force field section of restart file"); + } else error->all(FLERR, + "Invalid flag in force field section of restart file"); flag = read_int(); } diff --git a/src/region.cpp b/src/region.cpp index 412fcdeff9..d73ebd368a 100644 --- a/src/region.cpp +++ b/src/region.cpp @@ -60,27 +60,27 @@ void Region::init() { if (xstr) { xvar = input->variable->find(xstr); - if (xvar < 0) error->all("Variable name for region does not exist"); + if (xvar < 0) error->all(FLERR,"Variable name for region does not exist"); if (!input->variable->equalstyle(xvar)) - error->all("Variable for region is invalid style"); + error->all(FLERR,"Variable for region is invalid style"); } if (ystr) { yvar = input->variable->find(ystr); - if (yvar < 0) error->all("Variable name for region does not exist"); + if (yvar < 0) error->all(FLERR,"Variable name for region does not exist"); if (!input->variable->equalstyle(yvar)) - error->all("Variable for region is not equal style"); + error->all(FLERR,"Variable for region is not equal style"); } if (zstr) { zvar = input->variable->find(zstr); - if (zvar < 0) error->all("Variable name for region does not exist"); + if (zvar < 0) error->all(FLERR,"Variable name for region does not exist"); if (!input->variable->equalstyle(zvar)) - error->all("Variable for region is not equal style"); + error->all(FLERR,"Variable for region is not equal style"); } if (tstr) { tvar = input->variable->find(tstr); - if (tvar < 0) error->all("Variable name for region does not exist"); + if (tvar < 0) error->all(FLERR,"Variable name for region does not exist"); if (!input->variable->equalstyle(tvar)) - error->all("Variable for region is not equal style"); + error->all(FLERR,"Variable for region is not equal style"); } } @@ -275,7 +275,7 @@ void Region::rotate(double &x, double &y, double &z, double angle) void Region::options(int narg, char **arg) { - if (narg < 0) error->all("Illegal region command"); + if (narg < 0) error->all(FLERR,"Illegal region command"); // option defaults @@ -286,37 +286,37 @@ void Region::options(int narg, char **arg) int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal region command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal region command"); if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all("Illegal region command"); + else error->all(FLERR,"Illegal region command"); iarg += 2; } else if (strcmp(arg[iarg],"side") == 0) { - if (iarg+2 > narg) error->all("Illegal region command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal region command"); if (strcmp(arg[iarg+1],"in") == 0) interior = 1; else if (strcmp(arg[iarg+1],"out") == 0) interior = 0; - else error->all("Illegal region command"); + else error->all(FLERR,"Illegal region command"); iarg += 2; } else if (strcmp(arg[iarg],"move") == 0) { - if (iarg+4 > narg) error->all("Illegal region command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal region command"); if (strcmp(arg[iarg+1],"NULL") != 0) { if (strstr(arg[iarg+1],"v_") != arg[iarg+1]) - error->all("Illegal region command"); + error->all(FLERR,"Illegal region command"); int n = strlen(&arg[iarg+1][2]) + 1; xstr = new char[n]; strcpy(xstr,&arg[iarg+1][2]); } if (strcmp(arg[iarg+2],"NULL") != 0) { if (strstr(arg[iarg+2],"v_") != arg[iarg+2]) - error->all("Illegal region command"); + error->all(FLERR,"Illegal region command"); int n = strlen(&arg[iarg+2][2]) + 1; ystr = new char[n]; strcpy(ystr,&arg[iarg+2][2]); } if (strcmp(arg[iarg+3],"NULL") != 0) { if (strstr(arg[iarg+3],"v_") != arg[iarg+3]) - error->all("Illegal region command"); + error->all(FLERR,"Illegal region command"); int n = strlen(&arg[iarg+3][2]) + 1; zstr = new char[n]; strcpy(zstr,&arg[iarg+3][2]); @@ -325,9 +325,9 @@ void Region::options(int narg, char **arg) iarg += 4; } else if (strcmp(arg[iarg],"rotate") == 0) { - if (iarg+8 > narg) error->all("Illegal region command"); + if (iarg+8 > narg) error->all(FLERR,"Illegal region command"); if (strstr(arg[iarg+1],"v_") != arg[iarg+1]) - error->all("Illegal region command"); + error->all(FLERR,"Illegal region command"); int n = strlen(&arg[iarg+1][2]) + 1; tstr = new char[n]; strcpy(tstr,&arg[iarg+1][2]); @@ -339,19 +339,19 @@ void Region::options(int narg, char **arg) axis[2] = atof(arg[iarg+7]); rotateflag = 1; iarg += 8; - } else error->all("Illegal region command"); + } else error->all(FLERR,"Illegal region command"); } // error check if ((moveflag || rotateflag) && (strcmp(style,"union") == 0 || strcmp(style,"intersect") == 0)) - error->all("Region union or intersect cannot be dynamic"); + error->all(FLERR,"Region union or intersect cannot be dynamic"); // setup scaling if (scaleflag && domain->lattice == NULL) - error->all("Use of region with undefined lattice"); + error->all(FLERR,"Use of region with undefined lattice"); if (scaleflag) { xscale = domain->lattice->xlattice; @@ -371,7 +371,7 @@ void Region::options(int narg, char **arg) if (rotateflag) { double len = sqrt(axis[0]*axis[0] + axis[1]*axis[1] + axis[2]*axis[2]); if (len == 0.0) - error->all("Region cannot have 0 length rotation vector"); + error->all(FLERR,"Region cannot have 0 length rotation vector"); runit[0] = axis[0]/len; runit[1] = axis[1]/len; runit[2] = axis[2]/len; diff --git a/src/region_block.cpp b/src/region_block.cpp index ff01e7f6a9..cf5eb99208 100644 --- a/src/region_block.cpp +++ b/src/region_block.cpp @@ -21,9 +21,6 @@ using namespace LAMMPS_NS; #define BIG 1.0e20 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ RegBlock::RegBlock(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) @@ -32,7 +29,7 @@ RegBlock::RegBlock(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) if (strcmp(arg[2],"INF") == 0 || strcmp(arg[2],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[2],"INF") == 0) xlo = -BIG; else if (domain->triclinic == 0) xlo = domain->boxlo[0]; else xlo = domain->boxlo_bound[0]; @@ -40,7 +37,7 @@ RegBlock::RegBlock(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) if (strcmp(arg[3],"INF") == 0 || strcmp(arg[3],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[3],"INF") == 0) xhi = BIG; else if (domain->triclinic == 0) xhi = domain->boxhi[0]; else xhi = domain->boxhi_bound[0]; @@ -48,7 +45,7 @@ RegBlock::RegBlock(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) if (strcmp(arg[4],"INF") == 0 || strcmp(arg[4],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[4],"INF") == 0) ylo = -BIG; else if (domain->triclinic == 0) ylo = domain->boxlo[1]; else ylo = domain->boxlo_bound[1]; @@ -56,7 +53,7 @@ RegBlock::RegBlock(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) if (strcmp(arg[5],"INF") == 0 || strcmp(arg[5],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[5],"INF") == 0) yhi = BIG; else if (domain->triclinic == 0) yhi = domain->boxhi[1]; else yhi = domain->boxhi_bound[1]; @@ -64,7 +61,7 @@ RegBlock::RegBlock(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) if (strcmp(arg[6],"INF") == 0 || strcmp(arg[6],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[6],"INF") == 0) zlo = -BIG; else if (domain->triclinic == 0) zlo = domain->boxlo[2]; else zlo = domain->boxlo_bound[2]; @@ -72,7 +69,7 @@ RegBlock::RegBlock(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) if (strcmp(arg[7],"INF") == 0 || strcmp(arg[7],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[7],"INF") == 0) zhi = BIG; else if (domain->triclinic == 0) zhi = domain->boxhi[2]; else zhi = domain->boxhi_bound[2]; @@ -81,7 +78,7 @@ RegBlock::RegBlock(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) // error check if (xlo > xhi || ylo > yhi || zlo > zhi) - error->all("Illegal region block command"); + error->all(FLERR,"Illegal region block command"); // extent of block diff --git a/src/region_cone.cpp b/src/region_cone.cpp index c6b94c295c..bfa4e79716 100644 --- a/src/region_cone.cpp +++ b/src/region_cone.cpp @@ -34,7 +34,7 @@ RegCone::RegCone(LAMMPS *lmp, int narg, char **arg) : options(narg-9,&arg[9]); if (strcmp(arg[2],"x") && strcmp(arg[2],"y") && strcmp(arg[2],"z")) - error->all("Illegal region cylinder command"); + error->all(FLERR,"Illegal region cylinder command"); axis = arg[2][0]; if (axis == 'x') { @@ -56,7 +56,7 @@ RegCone::RegCone(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[7],"INF") == 0 || strcmp(arg[7],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (axis == 'x') { if (strcmp(arg[7],"INF") == 0) lo = -BIG; else if (domain->triclinic == 0) lo = domain->boxlo[0]; @@ -80,7 +80,7 @@ RegCone::RegCone(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[8],"INF") == 0 || strcmp(arg[7],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (axis == 'x') { if (strcmp(arg[8],"INF") == 0) hi = BIG; else if (domain->triclinic == 0) hi = domain->boxhi[0]; @@ -104,11 +104,11 @@ RegCone::RegCone(LAMMPS *lmp, int narg, char **arg) : // error check - if (radiuslo < 0.0) error->all("Illegal radius in region cone command"); - if (radiushi < 0.0) error->all("Illegal radius in region cone command"); + if (radiuslo < 0.0) error->all(FLERR,"Illegal radius in region cone command"); + if (radiushi < 0.0) error->all(FLERR,"Illegal radius in region cone command"); if (radiuslo == 0.0 && radiushi == 0.0) - error->all("Illegal radius in region cone command"); - if (hi == lo) error->all("Illegal cone length in region cone command"); + error->all(FLERR,"Illegal radius in region cone command"); + if (hi == lo) error->all(FLERR,"Illegal cone length in region cone command"); // extent of cone diff --git a/src/region_cylinder.cpp b/src/region_cylinder.cpp index 58bb51f212..9aafb9ca87 100644 --- a/src/region_cylinder.cpp +++ b/src/region_cylinder.cpp @@ -22,9 +22,6 @@ using namespace LAMMPS_NS; #define BIG 1.0e20 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ RegCylinder::RegCylinder(LAMMPS *lmp, int narg, char **arg) : @@ -33,7 +30,7 @@ RegCylinder::RegCylinder(LAMMPS *lmp, int narg, char **arg) : options(narg-8,&arg[8]); if (strcmp(arg[2],"x") && strcmp(arg[2],"y") && strcmp(arg[2],"z")) - error->all("Illegal region cylinder command"); + error->all(FLERR,"Illegal region cylinder command"); axis = arg[2][0]; if (axis == 'x') { @@ -52,7 +49,7 @@ RegCylinder::RegCylinder(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[6],"INF") == 0 || strcmp(arg[6],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (axis == 'x') { if (strcmp(arg[6],"INF") == 0) lo = -BIG; else if (domain->triclinic == 0) lo = domain->boxlo[0]; @@ -76,7 +73,7 @@ RegCylinder::RegCylinder(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[7],"INF") == 0 || strcmp(arg[6],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (axis == 'x') { if (strcmp(arg[7],"INF") == 0) hi = BIG; else if (domain->triclinic == 0) hi = domain->boxhi[0]; @@ -100,7 +97,7 @@ RegCylinder::RegCylinder(LAMMPS *lmp, int narg, char **arg) : // error check - if (radius <= 0.0) error->all("Illegal region cylinder command"); + if (radius <= 0.0) error->all(FLERR,"Illegal region cylinder command"); // extent of cylinder diff --git a/src/region_intersect.cpp b/src/region_intersect.cpp index abb959dea3..5618b46b27 100644 --- a/src/region_intersect.cpp +++ b/src/region_intersect.cpp @@ -19,17 +19,14 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ RegIntersect::RegIntersect(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) { - if (narg < 5) error->all("Illegal region command"); + if (narg < 5) error->all(FLERR,"Illegal region command"); int n = atoi(arg[2]); - if (n < 2) error->all("Illegal region command"); + if (n < 2) error->all(FLERR,"Illegal region command"); options(narg-(n+3),&arg[n+3]); // build list of regions to intersect @@ -40,7 +37,7 @@ RegIntersect::RegIntersect(LAMMPS *lmp, int narg, char **arg) : int iregion; for (int iarg = 0; iarg < n; iarg++) { iregion = domain->find_region(arg[iarg+3]); - if (iregion == -1) error->all("Region intersect region ID does not exist"); + if (iregion == -1) error->all(FLERR,"Region intersect region ID does not exist"); list[nregion++] = iregion; } diff --git a/src/region_plane.cpp b/src/region_plane.cpp index 45b6f103ab..aa2827422d 100644 --- a/src/region_plane.cpp +++ b/src/region_plane.cpp @@ -36,7 +36,7 @@ RegPlane::RegPlane(LAMMPS *lmp, int narg, char **arg) : // enforce unit normal double rsq = normal[0]*normal[0] + normal[1]*normal[1] + normal[2]*normal[2]; - if (rsq == 0.0) error->all("Illegal region plane command"); + if (rsq == 0.0) error->all(FLERR,"Illegal region plane command"); normal[0] /= sqrt(rsq); normal[1] /= sqrt(rsq); normal[2] /= sqrt(rsq); diff --git a/src/region_prism.cpp b/src/region_prism.cpp index 26d65ab4f7..72f40987cd 100644 --- a/src/region_prism.cpp +++ b/src/region_prism.cpp @@ -27,9 +27,6 @@ using namespace LAMMPS_NS; #define BIG 1.0e20 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ RegPrism::RegPrism(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) @@ -38,42 +35,42 @@ RegPrism::RegPrism(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) if (strcmp(arg[2],"INF") == 0 || strcmp(arg[2],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[2],"INF") == 0) xlo = -BIG; else xlo = domain->boxlo[0]; } else xlo = xscale*atof(arg[2]); if (strcmp(arg[3],"INF") == 0 || strcmp(arg[3],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[3],"INF") == 0) xhi = BIG; else xhi = domain->boxhi[0]; } else xhi = xscale*atof(arg[3]); if (strcmp(arg[4],"INF") == 0 || strcmp(arg[4],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[4],"INF") == 0) ylo = -BIG; else ylo = domain->boxlo[1]; } else ylo = yscale*atof(arg[4]); if (strcmp(arg[5],"INF") == 0 || strcmp(arg[5],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[5],"INF") == 0) yhi = BIG; else yhi = domain->boxhi[1]; } else yhi = yscale*atof(arg[5]); if (strcmp(arg[6],"INF") == 0 || strcmp(arg[6],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[6],"INF") == 0) zlo = -BIG; else zlo = domain->boxlo[2]; } else zlo = zscale*atof(arg[6]); if (strcmp(arg[7],"INF") == 0 || strcmp(arg[7],"EDGE") == 0) { if (domain->box_exist == 0) - error->all("Cannot use region INF or EDGE when box does not exist"); + error->all(FLERR,"Cannot use region INF or EDGE when box does not exist"); if (strcmp(arg[7],"INF") == 0) zhi = BIG; else zhi = domain->boxhi[2]; } else zhi = zscale*atof(arg[7]); @@ -87,22 +84,22 @@ RegPrism::RegPrism(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) // non-zero tilt values cannot be used if either dim is INF on both ends if (xlo >= xhi || ylo >= yhi || zlo >= zhi) - error->all("Illegal region prism command"); + error->all(FLERR,"Illegal region prism command"); if (xy != 0.0 && xlo == -BIG && xhi == BIG) - error->all("Illegal region prism command"); + error->all(FLERR,"Illegal region prism command"); if (xy != 0.0 && ylo == -BIG && yhi == BIG) - error->all("Illegal region prism command"); + error->all(FLERR,"Illegal region prism command"); if (xz != 0.0 && xlo == -BIG && xhi == BIG) - error->all("Illegal region prism command"); + error->all(FLERR,"Illegal region prism command"); if (xz != 0.0 && zlo == -BIG && zhi == BIG) - error->all("Illegal region prism command"); + error->all(FLERR,"Illegal region prism command"); if (yz != 0.0 && ylo == -BIG && yhi == BIG) - error->all("Illegal region prism command"); + error->all(FLERR,"Illegal region prism command"); if (yz != 0.0 && zlo == -BIG && zhi == BIG) - error->all("Illegal region prism command"); + error->all(FLERR,"Illegal region prism command"); // extent of prism diff --git a/src/region_sphere.cpp b/src/region_sphere.cpp index b03ad6bc23..80446b55a8 100644 --- a/src/region_sphere.cpp +++ b/src/region_sphere.cpp @@ -33,7 +33,7 @@ RegSphere::RegSphere(LAMMPS *lmp, int narg, char **arg) : // error check - if (radius < 0.0) error->all("Illegal region sphere command"); + if (radius < 0.0) error->all(FLERR,"Illegal region sphere command"); // extent of sphere diff --git a/src/region_union.cpp b/src/region_union.cpp index 90a6815cbf..ff566087ef 100644 --- a/src/region_union.cpp +++ b/src/region_union.cpp @@ -19,18 +19,15 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define BIG 1.0e20 /* ---------------------------------------------------------------------- */ RegUnion::RegUnion(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) { - if (narg < 5) error->all("Illegal region command"); + if (narg < 5) error->all(FLERR,"Illegal region command"); int n = atoi(arg[2]); - if (n < 2) error->all("Illegal region command"); + if (n < 2) error->all(FLERR,"Illegal region command"); options(narg-(n+3),&arg[n+3]); // build list of regions to union @@ -41,7 +38,7 @@ RegUnion::RegUnion(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) int iregion; for (int iarg = 0; iarg < n; iarg++) { iregion = domain->find_region(arg[iarg+3]); - if (iregion == -1) error->all("Region union region ID does not exist"); + if (iregion == -1) error->all(FLERR,"Region union region ID does not exist"); list[nregion++] = iregion; } diff --git a/src/replicate.cpp b/src/replicate.cpp index b9767e424d..da6a662069 100644 --- a/src/replicate.cpp +++ b/src/replicate.cpp @@ -30,9 +30,6 @@ using namespace LAMMPS_NS; #define LB_FACTOR 1.1 #define EPSILON 1.0e-6 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ Replicate::Replicate(LAMMPS *lmp) : Pointers(lmp) {} @@ -44,8 +41,8 @@ void Replicate::command(int narg, char **arg) int i,j,m,n; if (domain->box_exist == 0) - error->all("Replicate command before simulation box is defined"); - if (narg != 3) error->all("Illegal replicate command"); + error->all(FLERR,"Replicate command before simulation box is defined"); + if (narg != 3) error->all(FLERR,"Illegal replicate command"); int me = comm->me; int nprocs = comm->nprocs; @@ -61,16 +58,16 @@ void Replicate::command(int narg, char **arg) // error and warning checks - if (nx <= 0 || ny <= 0 || nz <= 0) error->all("Illegal replicate command"); + if (nx <= 0 || ny <= 0 || nz <= 0) error->all(FLERR,"Illegal replicate command"); if (domain->dimension == 2 && nz != 1) - error->all("Cannot replicate 2d simulation in z dimension"); + error->all(FLERR,"Cannot replicate 2d simulation in z dimension"); if ((nx > 1 && domain->xperiodic == 0) || (ny > 1 && domain->yperiodic == 0) || (nz > 1 && domain->zperiodic == 0)) - error->warning("Replicating in a non-periodic dimension"); + error->warning(FLERR,"Replicating in a non-periodic dimension"); if (atom->nextra_grow || atom->nextra_restart || atom->nextra_store) - error->all("Cannot replicate with fixes that store atom quantities"); + error->all(FLERR,"Cannot replicate with fixes that store atom quantities"); // maxtag = largest atom tag across all existing atoms @@ -130,7 +127,7 @@ void Replicate::command(int narg, char **arg) // new system cannot exceed MAXBIGINT if (atom->molecular && (nrep*old->natoms < 0 || nrep*old->natoms > MAXTAGINT)) - error->all("Replicated molecular system atom IDs are too big"); + error->all(FLERR,"Replicated molecular system atom IDs are too big"); if (nrep*old->natoms < 0 || nrep*old->natoms > MAXTAGINT) atom->tag_enable = 0; if (atom->tag_enable == 0) @@ -142,7 +139,7 @@ void Replicate::command(int narg, char **arg) nrep*old->nangles < 0 || nrep*old->nangles > MAXBIGINT || nrep*old->ndihedrals < 0 || nrep*old->ndihedrals > MAXBIGINT || nrep*old->nimpropers < 0 || nrep*old->nimpropers > MAXBIGINT) - error->all("Replicated system is too big"); + error->all(FLERR,"Replicated system is too big"); // assign atom and topology counts in new class from old one @@ -356,7 +353,7 @@ void Replicate::command(int narg, char **arg) } if (natoms != atom->natoms) - error->all("Replicate did not assign all atoms correctly"); + error->all(FLERR,"Replicate did not assign all atoms correctly"); if (me == 0) { if (atom->nbonds) { diff --git a/src/respa.cpp b/src/respa.cpp index 8aa18c0eee..3e54b58424 100644 --- a/src/respa.cpp +++ b/src/respa.cpp @@ -45,16 +45,16 @@ using namespace LAMMPS_NS; Respa::Respa(LAMMPS *lmp, int narg, char **arg) : Integrate(lmp, narg, arg) { - if (narg < 1) error->all("Illegal run_style respa command"); + if (narg < 1) error->all(FLERR,"Illegal run_style respa command"); nlevels = atoi(arg[0]); - if (nlevels < 1) error->all("Respa levels must be >= 1"); + if (nlevels < 1) error->all(FLERR,"Respa levels must be >= 1"); - if (narg < nlevels) error->all("Illegal run_style respa command"); + if (narg < nlevels) error->all(FLERR,"Illegal run_style respa command"); loop = new int[nlevels]; for (int iarg = 1; iarg < nlevels; iarg++) { loop[iarg-1] = atoi(arg[iarg]); - if (loop[iarg-1] <= 0) error->all("Illegal run_style respa command"); + if (loop[iarg-1] <= 0) error->all(FLERR,"Illegal run_style respa command"); } loop[nlevels-1] = 1; @@ -68,64 +68,64 @@ Respa::Respa(LAMMPS *lmp, int narg, char **arg) : Integrate(lmp, narg, arg) int iarg = nlevels; while (iarg < narg) { if (strcmp(arg[iarg],"bond") == 0) { - if (iarg+2 > narg) error->all("Illegal run_style respa command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run_style respa command"); level_bond = atoi(arg[iarg+1]) - 1; iarg += 2; } else if (strcmp(arg[iarg],"angle") == 0) { - if (iarg+2 > narg) error->all("Illegal run_style respa command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run_style respa command"); level_angle = atoi(arg[iarg+1]) - 1; iarg += 2; } else if (strcmp(arg[iarg],"dihedral") == 0) { - if (iarg+2 > narg) error->all("Illegal run_style respa command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run_style respa command"); level_dihedral = atoi(arg[iarg+1]) - 1; iarg += 2; } else if (strcmp(arg[iarg],"improper") == 0) { - if (iarg+2 > narg) error->all("Illegal run_style respa command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run_style respa command"); level_improper = atoi(arg[iarg+1]) - 1; iarg += 2; } else if (strcmp(arg[iarg],"pair") == 0) { - if (iarg+2 > narg) error->all("Illegal run_style respa command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run_style respa command"); level_pair = atoi(arg[iarg+1]) - 1; iarg += 2; } else if (strcmp(arg[iarg],"inner") == 0) { - if (iarg+4 > narg) error->all("Illegal run_style respa command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal run_style respa command"); level_inner = atoi(arg[iarg+1]) - 1; cutoff[0] = atof(arg[iarg+2]); cutoff[1] = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"middle") == 0) { - if (iarg+4 > narg) error->all("Illegal run_style respa command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal run_style respa command"); level_middle = atoi(arg[iarg+1]) - 1; cutoff[2] = atof(arg[iarg+2]); cutoff[3] = atof(arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"outer") == 0) { - if (iarg+2 > narg) error->all("Illegal run_style respa command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run_style respa command"); level_outer = atoi(arg[iarg+1]) - 1; iarg += 2; } else if (strcmp(arg[iarg],"kspace") == 0) { - if (iarg+2 > narg) error->all("Illegal run_style respa command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run_style respa command"); level_kspace = atoi(arg[iarg+1]) - 1; iarg += 2; - } else error->all("Illegal run_style respa command"); + } else error->all(FLERR,"Illegal run_style respa command"); } // cannot specify both pair and inner/middle/outer if (level_pair >= 0 && (level_inner >= 0 || level_middle >= 0 || level_outer >= 0)) - error->all("Cannot set both respa pair and inner/middle/outer"); + error->all(FLERR,"Cannot set both respa pair and inner/middle/outer"); // if either inner and outer is specified, then both must be if ((level_inner >= 0 && level_outer == -1) || (level_outer >= 0 && level_inner == -1)) - error->all("Must set both respa inner and outer"); + error->all(FLERR,"Must set both respa inner and outer"); // middle cannot be set without inner/outer if (level_middle >= 0 && level_inner == -1) - error->all("Cannot set respa middle without inner/outer"); + error->all(FLERR,"Cannot set respa middle without inner/outer"); // set defaults if user did not specify level // bond to innermost level @@ -183,20 +183,20 @@ Respa::Respa(LAMMPS *lmp, int narg, char **arg) : Integrate(lmp, narg, arg) if (level_angle < level_bond || level_dihedral < level_angle || level_improper < level_dihedral) - error->all("Invalid order of forces within respa levels"); + error->all(FLERR,"Invalid order of forces within respa levels"); if (level_pair >= 0) { if (level_pair < level_improper || level_kspace < level_pair) - error->all("Invalid order of forces within respa levels"); + error->all(FLERR,"Invalid order of forces within respa levels"); } if (level_pair == -1 && level_middle == -1) { if (level_inner < level_improper || level_outer < level_inner || level_kspace != level_outer) - error->all("Invalid order of forces within respa levels"); + error->all(FLERR,"Invalid order of forces within respa levels"); } if (level_pair == -1 && level_middle >= 0) { if (level_inner < level_improper || level_middle < level_inner || level_outer < level_inner || level_kspace != level_outer) - error->all("Invalid order of forces within respa levels"); + error->all(FLERR,"Invalid order of forces within respa levels"); } // warn if any levels are devoid of forces @@ -207,14 +207,14 @@ Respa::Respa(LAMMPS *lmp, int narg, char **arg) : Integrate(lmp, narg, arg) level_improper != i && level_pair != i && level_inner != i && level_middle != i && level_outer != i && level_kspace != i) flag = 1; if (flag && comm->me == 0) - error->warning("One or more respa levels compute no forces"); + error->warning(FLERR,"One or more respa levels compute no forces"); // check cutoff consistency if inner/middle/outer are enabled if (level_inner >= 0 && cutoff[1] < cutoff[0]) - error->all("Respa inner cutoffs are invalid"); + error->all(FLERR,"Respa inner cutoffs are invalid"); if (level_middle >= 0 && (cutoff[3] < cutoff[2] || cutoff[2] < cutoff[1])) - error->all("Respa middle cutoffs are invalid"); + error->all(FLERR,"Respa middle cutoffs are invalid"); // set outer pair of cutoffs to inner pair if middle is not enabled @@ -247,7 +247,7 @@ void Respa::init() // warn if no fixes if (modify->nfix == 0 && comm->me == 0) - error->warning("No fixes defined, atoms won't move"); + error->warning(FLERR,"No fixes defined, atoms won't move"); // create fix needed for storing atom-based respa level forces // will delete it at end of run @@ -267,7 +267,7 @@ void Respa::init() if (level_inner >= 0) if (force->pair && force->pair->respa_enable == 0) - error->all("Pair style does not support rRESPA inner/middle/outer"); + error->all(FLERR,"Pair style does not support rRESPA inner/middle/outer"); // virial_style = 1 (explicit) since never computed implicitly like Verlet @@ -278,12 +278,16 @@ void Respa::init() ev_setup(); // set flags for what arrays to clear in force_clear() - // need to clear torques,erforce if arrays exists + // need to clear additionals arrays if they exist torqueflag = 0; if (atom->torque_flag) torqueflag = 1; erforceflag = 0; if (atom->erforce_flag) erforceflag = 1; + e_flag = 0; + if (atom->e_flag) e_flag = 1; + rho_flag = 0; + if (atom->rho_flag) rho_flag = 1; // step[] = timestep for each level @@ -595,15 +599,18 @@ void Respa::force_clear(int newtonflag) { int i; + if (external_force_clear) return; + // clear global force array // nall includes ghosts only if newton flag is set int nall; if (newtonflag) nall = atom->nlocal + atom->nghost; else nall = atom->nlocal; + int ntot = nall * comm->nthreads; double **f = atom->f; - for (i = 0; i < nall; i++) { + for (i = 0; i < ntot; i++) { f[i][0] = 0.0; f[i][1] = 0.0; f[i][2] = 0.0; @@ -620,8 +627,17 @@ void Respa::force_clear(int newtonflag) if (erforceflag) { double *erforce = atom->erforce; - for (i = 0; i < nall; i++) - erforce[i] = 0.0; + for (i = 0; i < nall; i++) erforce[i] = 0.0; + } + + if (e_flag) { + double *de = atom->de; + for (i = 0; i < nall; i++) de[i] = 0.0; + } + + if (rho_flag) { + double *drho = atom->drho; + for (i = 0; i < nall; i++) drho[i] = 0.0; } } diff --git a/src/respa.h b/src/respa.h index e0981c764e..409184c739 100644 --- a/src/respa.h +++ b/src/respa.h @@ -53,8 +53,8 @@ class Respa : public Integrate { private: int triclinic; // 0 if domain is orthog, 1 if triclinic - int torqueflag; // zero out arrays every step - int erforceflag; + int torqueflag,erforceflag; + int e_flag,rho_flag; int *newton; // newton flag at each level class FixRespa *fix_respa; // Fix to store the force level array diff --git a/src/run.cpp b/src/run.cpp index 667ea84a80..1f413072a0 100644 --- a/src/run.cpp +++ b/src/run.cpp @@ -27,9 +27,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define MAXLINE 2048 /* ---------------------------------------------------------------------- */ @@ -40,10 +37,10 @@ Run::Run(LAMMPS *lmp) : Pointers(lmp) {} void Run::command(int narg, char **arg) { - if (narg < 1) error->all("Illegal run command"); + if (narg < 1) error->all(FLERR,"Illegal run command"); if (domain->box_exist == 0) - error->all("Run command before simulation box is defined"); + error->all(FLERR,"Run command before simulation box is defined"); bigint nsteps_input = ATOBIGINT(arg[0]); @@ -62,30 +59,30 @@ void Run::command(int narg, char **arg) int iarg = 1; while (iarg < narg) { if (strcmp(arg[iarg],"upto") == 0) { - if (iarg+1 > narg) error->all("Illegal run command"); + if (iarg+1 > narg) error->all(FLERR,"Illegal run command"); uptoflag = 1; iarg += 1; } else if (strcmp(arg[iarg],"start") == 0) { - if (iarg+2 > narg) error->all("Illegal run command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run command"); startflag = 1; start = ATOBIGINT(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"stop") == 0) { - if (iarg+2 > narg) error->all("Illegal run command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run command"); stopflag = 1; stop = ATOBIGINT(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"pre") == 0) { - if (iarg+2 > narg) error->all("Illegal run command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run command"); if (strcmp(arg[iarg+1],"no") == 0) preflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) preflag = 1; - else error->all("Illegal run command"); + else error->all(FLERR,"Illegal run command"); iarg += 2; } else if (strcmp(arg[iarg],"post") == 0) { - if (iarg+2 > narg) error->all("Illegal run command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal run command"); if (strcmp(arg[iarg+1],"no") == 0) postflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) postflag = 1; - else error->all("Illegal run command"); + else error->all(FLERR,"Illegal run command"); iarg += 2; // all remaining args are commands @@ -93,15 +90,15 @@ void Run::command(int narg, char **arg) // set ncommands = 0 if single command and it is NULL } else if (strcmp(arg[iarg],"every") == 0) { - if (iarg+3 > narg) error->all("Illegal run command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal run command"); nevery = atoi(arg[iarg+1]); - if (nevery <= 0) error->all("Illegal run command"); + if (nevery <= 0) error->all(FLERR,"Illegal run command"); first = iarg+2; last = narg-1; ncommands = last-first + 1; if (ncommands == 1 && strcmp(arg[first],"NULL") == 0) ncommands = 0; iarg = narg; - } else error->all("Illegal run command"); + } else error->all(FLERR,"Illegal run command"); } // set nsteps as integer, using upto value if specified @@ -109,12 +106,12 @@ void Run::command(int narg, char **arg) int nsteps; if (!uptoflag) { if (nsteps_input < 0 || nsteps_input > MAXSMALLINT) - error->all("Invalid run command N value"); + error->all(FLERR,"Invalid run command N value"); nsteps = static_cast (nsteps_input); } else { bigint delta = nsteps_input - update->ntimestep; if (delta < 0 || delta > MAXSMALLINT) - error->all("Invalid run command upto value"); + error->all(FLERR,"Invalid run command upto value"); nsteps = static_cast (delta); } @@ -122,15 +119,15 @@ void Run::command(int narg, char **arg) if (startflag) { if (start < 0 || start > MAXBIGINT) - error->all("Invalid run command start/stop value"); + error->all(FLERR,"Invalid run command start/stop value"); if (start > update->ntimestep) - error->all("Run command start value is after start of run"); + error->all(FLERR,"Run command start value is after start of run"); } if (stopflag) { if (stop < 0 || stop > MAXBIGINT) - error->all("Invalid run command start/stop value"); + error->all(FLERR,"Invalid run command start/stop value"); if (stop < update->ntimestep + nsteps) - error->all("Run command stop value is before end of run"); + error->all(FLERR,"Run command stop value is before end of run"); } // if nevery, make copies of arg strings that are commands @@ -161,7 +158,7 @@ void Run::command(int narg, char **arg) update->firststep = update->ntimestep; update->laststep = update->ntimestep + nsteps; if (update->laststep < 0 || update->laststep > MAXBIGINT) - error->all("Too many timesteps"); + error->all(FLERR,"Too many timesteps"); if (startflag) update->beginstep = start; else update->beginstep = update->firststep; @@ -201,7 +198,7 @@ void Run::command(int narg, char **arg) update->firststep = update->ntimestep; update->laststep = update->ntimestep + nsteps; if (update->laststep < 0 || update->laststep > MAXBIGINT) - error->all("Too many timesteps"); + error->all(FLERR,"Too many timesteps"); if (startflag) update->beginstep = start; else update->beginstep = update->firststep; diff --git a/src/set.cpp b/src/set.cpp index 941a57db75..2a4c25731b 100644 --- a/src/set.cpp +++ b/src/set.cpp @@ -19,6 +19,8 @@ #include "atom.h" #include "atom_vec.h" #include "atom_vec_ellipsoid.h" +#include "atom_vec_line.h" +#include "atom_vec_tri.h" #include "domain.h" #include "region.h" #include "group.h" @@ -28,33 +30,29 @@ #include "pair.h" #include "random_park.h" #include "math_extra.h" +#include "math_const.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; enum{ATOM_SELECT,MOL_SELECT,TYPE_SELECT,GROUP_SELECT,REGION_SELECT}; -enum{TYPE,TYPE_FRACTION,MOLECULE,X,Y,Z,CHARGE,MASS,SHAPE, - DIPOLE,DIPOLE_RANDOM,QUAT,QUAT_RANDOM, - DIAMETER,DENSITY,VOLUME,IMAGE,BOND,ANGLE,DIHEDRAL,IMPROPER}; +enum{TYPE,TYPE_FRACTION,MOLECULE,X,Y,Z,CHARGE,MASS,SHAPE,LENGTH,TRI, + DIPOLE,DIPOLE_RANDOM,QUAT,QUAT_RANDOM,THETA,ANGMOM, + DIAMETER,DENSITY,VOLUME,IMAGE,BOND,ANGLE,DIHEDRAL,IMPROPER, + MESO_E,MESO_CV,MESO_RHO}; #define BIG INT_MAX /* ---------------------------------------------------------------------- */ -Set::Set(LAMMPS *lmp) : Pointers(lmp) -{ - PI = 4.0*atan(1.0); -} - -/* ---------------------------------------------------------------------- */ - void Set::command(int narg, char **arg) { if (domain->box_exist == 0) - error->all("Set command before simulation box is defined"); + error->all(FLERR,"Set command before simulation box is defined"); if (atom->natoms == 0) - error->all("Set command with no atoms existing"); - if (narg < 3) error->all("Illegal set command"); + error->all(FLERR,"Set command with no atoms existing"); + if (narg < 3) error->all(FLERR,"Illegal set command"); // style and ID info @@ -63,7 +61,7 @@ void Set::command(int narg, char **arg) else if (strcmp(arg[0],"type") == 0) style = TYPE_SELECT; else if (strcmp(arg[0],"group") == 0) style = GROUP_SELECT; else if (strcmp(arg[0],"region") == 0) style = REGION_SELECT; - else error->all("Illegal set command"); + else error->all(FLERR,"Illegal set command"); int n = strlen(arg[1]) + 1; id = new char[n]; @@ -83,137 +81,174 @@ void Set::command(int narg, char **arg) origarg = iarg; if (strcmp(arg[iarg],"type") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); ivalue = atoi(arg[iarg+1]); if (ivalue <= 0 || ivalue > atom->ntypes) - error->all("Invalid value in set command"); + error->all(FLERR,"Invalid value in set command"); set(TYPE); iarg += 2; } else if (strcmp(arg[iarg],"type/fraction") == 0) { - if (iarg+4 > narg) error->all("Illegal set command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal set command"); newtype = atoi(arg[iarg+1]); fraction = atof(arg[iarg+2]); ivalue = atoi(arg[iarg+3]); if (newtype <= 0 || newtype > atom->ntypes) - error->all("Invalid value in set command"); + error->all(FLERR,"Invalid value in set command"); if (fraction < 0.0 || fraction > 1.0) - error->all("Invalid value in set command"); - if (ivalue <= 0) error->all("Invalid random number seed in set command"); + error->all(FLERR,"Invalid value in set command"); + if (ivalue <= 0) + error->all(FLERR,"Invalid random number seed in set command"); setrandom(TYPE_FRACTION); iarg += 4; } else if (strcmp(arg[iarg],"mol") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); ivalue = atoi(arg[iarg+1]); if (!atom->molecule_flag) - error->all("Cannot set this attribute for this atom style"); + error->all(FLERR,"Cannot set this attribute for this atom style"); set(MOLECULE); iarg += 2; } else if (strcmp(arg[iarg],"x") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); dvalue = atof(arg[iarg+1]); set(X); iarg += 2; } else if (strcmp(arg[iarg],"y") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); dvalue = atof(arg[iarg+1]); set(Y); iarg += 2; } else if (strcmp(arg[iarg],"z") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); dvalue = atof(arg[iarg+1]); set(Z); iarg += 2; } else if (strcmp(arg[iarg],"charge") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); dvalue = atof(arg[iarg+1]); if (!atom->q_flag) - error->all("Cannot set this attribute for this atom style"); + error->all(FLERR,"Cannot set this attribute for this atom style"); set(CHARGE); iarg += 2; } else if (strcmp(arg[iarg],"mass") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); dvalue = atof(arg[iarg+1]); if (!atom->rmass_flag) - error->all("Cannot set this attribute for this atom style"); - if (dvalue <= 0.0) error->all("Invalid mass in set command"); + error->all(FLERR,"Cannot set this attribute for this atom style"); + if (dvalue <= 0.0) error->all(FLERR,"Invalid mass in set command"); set(MASS); iarg += 2; } else if (strcmp(arg[iarg],"shape") == 0) { - if (iarg+4 > narg) error->all("Illegal set command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal set command"); xvalue = atof(arg[iarg+1]); yvalue = atof(arg[iarg+2]); zvalue = atof(arg[iarg+3]); if (!atom->ellipsoid_flag) - error->all("Cannot set this attribute for this atom style"); + error->all(FLERR,"Cannot set this attribute for this atom style"); if (xvalue < 0.0 || yvalue < 0.0 || zvalue < 0.0) - error->all("Invalid shape in set command"); + error->all(FLERR,"Invalid shape in set command"); if (xvalue > 0.0 || yvalue > 0.0 || zvalue > 0.0) { if (xvalue == 0.0 || yvalue == 0.0 || zvalue == 0.0) - error->one("Invalid shape in set command"); + error->one(FLERR,"Invalid shape in set command"); } set(SHAPE); iarg += 4; + } else if (strcmp(arg[iarg],"length") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); + dvalue = atof(arg[iarg+1]); + if (!atom->line_flag) + error->all(FLERR,"Cannot set this attribute for this atom style"); + if (dvalue < 0.0) error->all(FLERR,"Invalid length in set command"); + set(LENGTH); + iarg += 2; + } else if (strcmp(arg[iarg],"tri") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); + dvalue = atof(arg[iarg+1]); + if (!atom->tri_flag) + error->all(FLERR,"Cannot set this attribute for this atom style"); + if (dvalue < 0.0) error->all(FLERR,"Invalid length in set command"); + set(TRI); + iarg += 2; } else if (strcmp(arg[iarg],"dipole") == 0) { - if (iarg+4 > narg) error->all("Illegal set command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal set command"); xvalue = atof(arg[iarg+1]); yvalue = atof(arg[iarg+2]); zvalue = atof(arg[iarg+3]); if (!atom->mu_flag) - error->all("Cannot set this attribute for this atom style"); + error->all(FLERR,"Cannot set this attribute for this atom style"); set(DIPOLE); iarg += 4; } else if (strcmp(arg[iarg],"dipole/random") == 0) { - if (iarg+3 > narg) error->all("Illegal set command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal set command"); ivalue = atoi(arg[iarg+1]); dvalue = atof(arg[iarg+2]); if (!atom->mu_flag) - error->all("Cannot set this attribute for this atom style"); - if (ivalue <= 0) error->all("Invalid random number seed in set command"); - if (dvalue <= 0.0) error->all("Invalid dipole length in set command"); + error->all(FLERR,"Cannot set this attribute for this atom style"); + if (ivalue <= 0) + error->all(FLERR,"Invalid random number seed in set command"); + if (dvalue <= 0.0) + error->all(FLERR,"Invalid dipole length in set command"); setrandom(DIPOLE_RANDOM); iarg += 3; } else if (strcmp(arg[iarg],"quat") == 0) { - if (iarg+5 > narg) error->all("Illegal set command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal set command"); xvalue = atof(arg[iarg+1]); yvalue = atof(arg[iarg+2]); zvalue = atof(arg[iarg+3]); wvalue = atof(arg[iarg+4]); - if (!atom->ellipsoid_flag) - error->all("Cannot set this attribute for this atom style"); + if (!atom->ellipsoid_flag && !atom->tri_flag) + error->all(FLERR,"Cannot set this attribute for this atom style"); set(QUAT); iarg += 5; } else if (strcmp(arg[iarg],"quat/random") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); ivalue = atoi(arg[iarg+1]); - if (!atom->ellipsoid_flag) - error->all("Cannot set this attribute for this atom style"); - if (ivalue <= 0) error->all("Invalid random number seed in set command"); + if (!atom->ellipsoid_flag && !atom->tri_flag) + error->all(FLERR,"Cannot set this attribute for this atom style"); + if (ivalue <= 0) + error->all(FLERR,"Invalid random number seed in set command"); setrandom(QUAT_RANDOM); iarg += 2; + } else if (strcmp(arg[iarg],"theta") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); + dvalue = atof(arg[iarg+1]); + dvalue *= MY_PI/180.0; + if (!atom->line_flag) + error->all(FLERR,"Cannot set this attribute for this atom style"); + set(THETA); + iarg += 2; + } else if (strcmp(arg[iarg],"angmom") == 0) { + if (iarg+4 > narg) error->all(FLERR,"Illegal set command"); + xvalue = atof(arg[iarg+1]); + yvalue = atof(arg[iarg+2]); + zvalue = atof(arg[iarg+3]); + if (!atom->ellipsoid_flag && !atom->tri_flag) + error->all(FLERR,"Cannot set this attribute for this atom style"); + set(ANGMOM); + iarg += 4; } else if (strcmp(arg[iarg],"diameter") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); dvalue = atof(arg[iarg+1]); if (!atom->radius_flag) - error->all("Cannot set this attribute for this atom style"); - if (dvalue < 0.0) error->all("Invalid diameter in set command"); + error->all(FLERR,"Cannot set this attribute for this atom style"); + if (dvalue < 0.0) error->all(FLERR,"Invalid diameter in set command"); set(DIAMETER); iarg += 2; } else if (strcmp(arg[iarg],"density") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); dvalue = atof(arg[iarg+1]); if (!atom->rmass_flag) - error->all("Cannot set this attribute for this atom style"); + error->all(FLERR,"Cannot set this attribute for this atom style"); set(DENSITY); iarg += 2; } else if (strcmp(arg[iarg],"volume") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); dvalue = atof(arg[iarg+1]); if (!atom->vfrac_flag) - error->all("Cannot set this attribute for this atom style"); + error->all(FLERR,"Cannot set this attribute for this atom style"); set(VOLUME); iarg += 2; } else if (strcmp(arg[iarg],"image") == 0) { - if (iarg+4 > narg) error->all("Illegal set command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal set command"); ximageflag = yimageflag = zimageflag = 0; if (strcmp(arg[iarg+1],"NULL") != 0) { ximageflag = 1; @@ -228,50 +263,74 @@ void Set::command(int narg, char **arg) zimage = atoi(arg[iarg+3]); } if (ximageflag && ximage && !domain->xperiodic) - error->all("Cannot set non-zero image flag for non-periodic dimension"); + error->all(FLERR, + "Cannot set non-zero image flag for non-periodic dimension"); if (yimageflag && yimage && !domain->yperiodic) - error->all("Cannot set non-zero image flag for non-periodic dimension"); + error->all(FLERR, + "Cannot set non-zero image flag for non-periodic dimension"); if (zimageflag && zimage && !domain->zperiodic) - error->all("Cannot set non-zero image flag for non-periodic dimension"); + error->all(FLERR, + "Cannot set non-zero image flag for non-periodic dimension"); set(IMAGE); iarg += 4; } else if (strcmp(arg[iarg],"bond") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); ivalue = atoi(arg[iarg+1]); if (atom->avec->bonds_allow == 0) - error->all("Cannot set this attribute for this atom style"); + error->all(FLERR,"Cannot set this attribute for this atom style"); if (ivalue <= 0 || ivalue > atom->nbondtypes) - error->all("Invalid value in set command"); + error->all(FLERR,"Invalid value in set command"); topology(BOND); iarg += 2; } else if (strcmp(arg[iarg],"angle") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); ivalue = atoi(arg[iarg+1]); if (atom->avec->angles_allow == 0) - error->all("Cannot set this attribute for this atom style"); + error->all(FLERR,"Cannot set this attribute for this atom style"); if (ivalue <= 0 || ivalue > atom->nangletypes) - error->all("Invalid value in set command"); + error->all(FLERR,"Invalid value in set command"); topology(ANGLE); iarg += 2; } else if (strcmp(arg[iarg],"dihedral") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); ivalue = atoi(arg[iarg+1]); if (atom->avec->dihedrals_allow == 0) - error->all("Cannot set this attribute for this atom style"); + error->all(FLERR,"Cannot set this attribute for this atom style"); if (ivalue <= 0 || ivalue > atom->ndihedraltypes) - error->all("Invalid value in set command"); + error->all(FLERR,"Invalid value in set command"); topology(DIHEDRAL); iarg += 2; } else if (strcmp(arg[iarg],"improper") == 0) { - if (iarg+2 > narg) error->all("Illegal set command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); ivalue = atoi(arg[iarg+1]); if (atom->avec->impropers_allow == 0) - error->all("Cannot set this attribute for this atom style"); + error->all(FLERR,"Cannot set this attribute for this atom style"); if (ivalue <= 0 || ivalue > atom->nimpropertypes) - error->all("Invalid value in set command"); + error->all(FLERR,"Invalid value in set command"); topology(IMPROPER); iarg += 2; - } else error->all("Illegal set command"); + } else if (strcmp(arg[iarg],"meso_e") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); + dvalue = atof(arg[iarg+1]); + if (!atom->e_flag) + error->all(FLERR,"Cannot set this attribute for this atom style"); + set(MESO_E); + iarg += 2; + } else if (strcmp(arg[iarg],"meso_cv") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); + dvalue = atof(arg[iarg+1]); + if (!atom->cv_flag) + error->all(FLERR,"Cannot set this attribute for this atom style"); + set(MESO_CV); + iarg += 2; + } else if (strcmp(arg[iarg],"meso_rho") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); + dvalue = atof(arg[iarg+1]); + if (!atom->rho_flag) + error->all(FLERR,"Cannot set meso_rho for this atom style"); + set(MESO_RHO); + iarg += 2; + } else error->all(FLERR,"Illegal set command"); // statistics @@ -304,7 +363,7 @@ void Set::selection(int n) if (style == ATOM_SELECT) { if (atom->tag_enable == 0) - error->all("Cannot use set atom with no atom IDs defined"); + error->all(FLERR,"Cannot use set atom with no atom IDs defined"); force->bounds(id,BIG,nlo,nhi); int *tag = atom->tag; @@ -314,7 +373,7 @@ void Set::selection(int n) } else if (style == MOL_SELECT) { if (atom->molecule_flag == 0) - error->all("Cannot use set mol with no molecule IDs defined"); + error->all(FLERR,"Cannot use set mol with no molecule IDs defined"); if (strcmp(id,"0") == 0) nlo = nhi = 0; else force->bounds(id,BIG,nlo,nhi); @@ -333,7 +392,7 @@ void Set::selection(int n) } else if (style == GROUP_SELECT) { int igroup = group->find(id); - if (igroup == -1) error->all("Could not find set group ID"); + if (igroup == -1) error->all(FLERR,"Could not find set group ID"); int groupbit = group->bitmask[igroup]; int *mask = atom->mask; @@ -343,7 +402,7 @@ void Set::selection(int n) } else if (style == REGION_SELECT) { int iregion = domain->find_region(id); - if (iregion == -1) error->all("Set region ID does not exist"); + if (iregion == -1) error->all(FLERR,"Set region ID does not exist"); double **x = atom->x; for (int i = 0; i < n; i++) @@ -361,6 +420,8 @@ void Set::set(int keyword) { AtomVecEllipsoid *avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + AtomVecLine *avec_line = (AtomVecLine *) atom->style_match("line"); + AtomVecTri *avec_tri = (AtomVecTri *) atom->style_match("tri"); selection(atom->nlocal); @@ -377,24 +438,53 @@ void Set::set(int keyword) else if (keyword == MASS) atom->rmass[i] = dvalue; else if (keyword == DIAMETER) atom->radius[i] = 0.5 * dvalue; else if (keyword == VOLUME) atom->vfrac[i] = dvalue; - - // set shape + else if (keyword == MESO_E) atom->e[i] = dvalue; + else if (keyword == MESO_CV) atom->cv[i] = dvalue; + else if (keyword == MESO_RHO) atom->rho[i] = dvalue; + + // set shape of ellipsoidal particle else if (keyword == SHAPE) avec_ellipsoid->set_shape(i,0.5*xvalue,0.5*yvalue,0.5*zvalue); + // set length of line particle + + else if (keyword == LENGTH) + avec_line->set_length(i,dvalue); + + // set corners of tri particle + + else if (keyword == TRI) + avec_tri->set_equilateral(i,dvalue); + // set rmass via density // if radius > 0.0, treat as sphere // if shape > 0.0, treat as ellipsoid + // if length > 0.0, treat as line + // if area > 0.0, treat as tri // else set rmass to density directly else if (keyword == DENSITY) { if (atom->radius_flag && atom->radius[i] > 0.0) - atom->rmass[i] = 4.0*PI/3.0 * + atom->rmass[i] = 4.0*MY_PI/3.0 * atom->radius[i]*atom->radius[i]*atom->radius[i] * dvalue; else if (atom->ellipsoid_flag && atom->ellipsoid[i] >= 0) { double *shape = avec_ellipsoid->bonus[atom->ellipsoid[i]].shape; - atom->rmass[i] = 4.0*PI/3.0 * shape[0]*shape[1]*shape[2] * dvalue; + atom->rmass[i] = 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2] * dvalue; + } else if (atom->line_flag && atom->line[i] >= 0) { + double length = avec_line->bonus[atom->line[i]].length; + atom->rmass[i] = length * dvalue; + } else if (atom->tri_flag && atom->tri[i] >= 0) { + double *c1 = avec_tri->bonus[atom->tri[i]].c1; + double *c2 = avec_tri->bonus[atom->tri[i]].c2; + double *c3 = avec_tri->bonus[atom->tri[i]].c3; + double c2mc1[2],c3mc1[3]; + MathExtra::sub3(c2,c1,c2mc1); + MathExtra::sub3(c3,c1,c3mc1); + double norm[3]; + MathExtra::cross3(c2mc1,c3mc1,norm); + double area = 0.5 * MathExtra::len3(norm); + atom->rmass[i] = area * dvalue; } else atom->rmass[i] = dvalue; // reset any or all of 3 image flags @@ -419,20 +509,40 @@ void Set::set(int keyword) mu[i][3] = sqrt(mu[i][0]*mu[i][0] + mu[i][1]*mu[i][1] + mu[i][2]*mu[i][2]); - // set quaternion orientation + // set quaternion orientation of ellipsoid or tri particle } else if (keyword == QUAT) { - if (atom->ellipsoid[i] < 0) - error->one("Cannot set quaternion for atom that is not an ellipsoid"); - double *quat = avec_ellipsoid->bonus[atom->ellipsoid[i]].quat; - double theta2 = 0.5 * PI * wvalue/180.0; + double *quat; + if (avec_ellipsoid && atom->ellipsoid[i] >= 0) + quat = avec_ellipsoid->bonus[atom->ellipsoid[i]].quat; + else if (avec_tri && atom->tri[i] >= 0) + quat = avec_tri->bonus[atom->tri[i]].quat; + else + error->one(FLERR,"Cannot set quaternion for atom that has none"); + + double theta2 = MY_PI2 * wvalue/180.0; double sintheta2 = sin(theta2); quat[0] = cos(theta2); quat[1] = xvalue * sintheta2; quat[2] = yvalue * sintheta2; quat[3] = zvalue * sintheta2; MathExtra::qnormalize(quat); + + // set theta of line particle + + } else if (keyword == THETA) { + if (atom->line[i] < 0) + error->one(FLERR,"Cannot set theta for atom that is not a line"); + avec_line->bonus[atom->line[i]].theta = dvalue; + + // set angmom of ellipsoidal or tri particle + + } else if (keyword == ANGMOM) { + atom->angmom[i][0] = xvalue; + atom->angmom[i][1] = yvalue; + atom->angmom[i][2] = zvalue; } + count++; } } @@ -447,6 +557,11 @@ void Set::setrandom(int keyword) { int i; + AtomVecEllipsoid *avec_ellipsoid = + (AtomVecEllipsoid *) atom->style_match("ellipsoid"); + AtomVecLine *avec_line = (AtomVecLine *) atom->style_match("line"); + AtomVecTri *avec_tri = (AtomVecTri *) atom->style_match("tri"); + selection(atom->nlocal); RanPark *random = new RanPark(lmp,1); double **x = atom->x; @@ -507,13 +622,10 @@ void Set::setrandom(int keyword) } // set quaternions to random orientations in 3d or 2d - // no need to normalize quats since creations algorithms already do } else if (keyword == QUAT_RANDOM) { - AtomVecEllipsoid *avec_ellipsoid = - (AtomVecEllipsoid *) atom->style_match("ellipsoid"); - AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus; int *ellipsoid = atom->ellipsoid; + int *tri = atom->tri; int nlocal = atom->nlocal; double *quat; @@ -521,16 +633,19 @@ void Set::setrandom(int keyword) double s,t1,t2,theta1,theta2; for (i = 0; i < nlocal; i++) if (select[i]) { - if (ellipsoid[i] < 0) - error->one("Cannot set quaternion for atom " - "that is not an ellipsoid"); - quat = bonus[ellipsoid[i]].quat; + if (avec_ellipsoid && atom->ellipsoid[i] >= 0) + quat = avec_ellipsoid->bonus[atom->ellipsoid[i]].quat; + else if (avec_tri && atom->tri[i] >= 0) + quat = avec_tri->bonus[atom->tri[i]].quat; + else + error->one(FLERR,"Cannot set quaternion for atom that has none"); + random->reset(seed,x[i]); s = random->uniform(); t1 = sqrt(1.0-s); t2 = sqrt(s); - theta1 = 2.0*PI*random->uniform(); - theta2 = 2.0*PI*random->uniform(); + theta1 = 2.0*MY_PI*random->uniform(); + theta2 = 2.0*MY_PI*random->uniform(); quat[0] = cos(theta2)*t2; quat[1] = sin(theta1)*t1; quat[2] = cos(theta1)*t1; @@ -542,12 +657,13 @@ void Set::setrandom(int keyword) double theta2; for (i = 0; i < nlocal; i++) if (select[i]) { - if (ellipsoid[i] < 0) - error->one("Cannot set quaternion for atom " - "that is not an ellipsoid"); - quat = bonus[ellipsoid[i]].quat; + if (avec_ellipsoid && atom->ellipsoid[i] >= 0) + quat = avec_ellipsoid->bonus[atom->ellipsoid[i]].quat; + else + error->one(FLERR,"Cannot set quaternion for atom that has none"); + random->reset(seed,x[i]); - theta2 = PI*random->uniform(); + theta2 = MY_PI*random->uniform(); quat[0] = cos(theta2); quat[1] = 0.0; quat[2] = 0.0; @@ -593,7 +709,7 @@ void Set::topology(int keyword) for (int i = 0; i < nlocal; i++) for (m = 0; m < atom->num_bond[i]; m++) { atom1 = atom->map(atom->bond_atom[i][m]); - if (atom1 == -1) error->one("Bond atom missing in set command"); + if (atom1 == -1) error->one(FLERR,"Bond atom missing in set command"); if (select[i] && select[atom1]) { atom->bond_type[i][m] = ivalue; count++; @@ -611,7 +727,7 @@ void Set::topology(int keyword) atom2 = atom->map(atom->angle_atom2[i][m]); atom3 = atom->map(atom->angle_atom3[i][m]); if (atom1 == -1 || atom2 == -1 || atom3 == -1) - error->one("Angle atom missing in set command"); + error->one(FLERR,"Angle atom missing in set command"); if (select[atom1] && select[atom2] && select[atom3]) { atom->angle_type[i][m] = ivalue; count++; @@ -630,7 +746,7 @@ void Set::topology(int keyword) atom3 = atom->map(atom->dihedral_atom3[i][m]); atom4 = atom->map(atom->dihedral_atom4[i][m]); if (atom1 == -1 || atom2 == -1 || atom3 == -1 || atom4 == -1) - error->one("Dihedral atom missing in set command"); + error->one(FLERR,"Dihedral atom missing in set command"); if (select[atom1] && select[atom2] && select[atom3] && select[atom4]) { atom->dihedral_type[i][m] = ivalue; count++; @@ -649,7 +765,7 @@ void Set::topology(int keyword) atom3 = atom->map(atom->improper_atom3[i][m]); atom4 = atom->map(atom->improper_atom4[i][m]); if (atom1 == -1 || atom2 == -1 || atom3 == -1 || atom4 == -1) - error->one("Improper atom missing in set command"); + error->one(FLERR,"Improper atom missing in set command"); if (select[atom1] && select[atom2] && select[atom3] && select[atom4]) { atom->improper_type[i][m] = ivalue; count++; diff --git a/src/set.h b/src/set.h index b49040f8ec..00e0c77de1 100644 --- a/src/set.h +++ b/src/set.h @@ -26,7 +26,7 @@ namespace LAMMPS_NS { class Set : protected Pointers { public: - Set(class LAMMPS *); + Set(class LAMMPS *lmp) : Pointers(lmp) {}; void command(int, char **); private: @@ -35,7 +35,6 @@ class Set : protected Pointers { int style,ivalue,newtype,count; int ximage,yimage,zimage,ximageflag,yimageflag,zimageflag; double dvalue,xvalue,yvalue,zvalue,wvalue,fraction; - double PI; void selection(int); void set(int); diff --git a/src/special.cpp b/src/special.cpp index e0ec4ce317..189b2374fb 100644 --- a/src/special.cpp +++ b/src/special.cpp @@ -22,9 +22,6 @@ using namespace LAMMPS_NS; -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ Special::Special(LAMMPS *lmp) : Pointers(lmp) @@ -374,7 +371,7 @@ void Special::build() j = 0; for (i = 0; i < nlocal; i++) { if (buf[j+3] != nspecial[i][1]) - error->one("1-3 bond count is inconsistent"); + error->one(FLERR,"1-3 bond count is inconsistent"); j += 4 + nspecial[i][0]; for (k = 0; k < nspecial[i][1]; k++) onethree[i][k] = buf[j++]; @@ -537,7 +534,7 @@ void Special::build() j = 0; for (i = 0; i < nlocal; i++) { if (buf[j+2] != nspecial[i][2]) - error->one("1-4 bond count is inconsistent"); + error->one(FLERR,"1-4 bond count is inconsistent"); j += 3 + nspecial[i][1]; for (k = 0; k < nspecial[i][2]; k++) onefour[i][k] = buf[j++]; diff --git a/src/thermo.cpp b/src/thermo.cpp index 1653de8f42..b52a5f3c9c 100644 --- a/src/thermo.cpp +++ b/src/thermo.cpp @@ -36,10 +36,12 @@ #include "kspace.h" #include "output.h" #include "timer.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; // customize a new keyword by adding to this list: @@ -68,9 +70,6 @@ enum{SCALAR,VECTOR,ARRAY}; #define MAXLINE 8192 // make this 4x longer than Input::MAXLINE #define DELTA 8 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - /* ---------------------------------------------------------------------- */ Thermo::Thermo(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) @@ -103,7 +102,7 @@ Thermo::Thermo(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) lineflag = MULTILINE; } else if (strcmp(style,"custom") == 0) { - if (narg == 1) error->all("Illegal thermo style custom command"); + if (narg == 1) error->all(FLERR,"Illegal thermo style custom command"); line[0] = '\0'; for (int iarg = 1; iarg < narg; iarg++) { strcat(line,arg[iarg]); @@ -111,7 +110,7 @@ Thermo::Thermo(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) } line[strlen(line)-1] = '\0'; - } else error->all("Illegal thermo style command"); + } else error->all(FLERR,"Illegal thermo style command"); // ptrs, flags, IDs for compute objects thermo may use or create @@ -150,8 +149,6 @@ Thermo::Thermo(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) format_float_user = NULL; format_int_user = NULL; format_bigint_user = NULL; - - PI = 4.0*atan(1.0); } /* ---------------------------------------------------------------------- */ @@ -229,7 +226,7 @@ void Thermo::init() int icompute; for (i = 0; i < ncompute; i++) { icompute = modify->find_compute(id_compute[i]); - if (icompute < 0) error->all("Could not find thermo compute ID"); + if (icompute < 0) error->all(FLERR,"Could not find thermo compute ID"); computes[i] = modify->compute[icompute]; cudable = cudable && computes[i]->cudable; } @@ -240,10 +237,10 @@ void Thermo::init() int ifix; for (i = 0; i < nfix; i++) { ifix = modify->find_fix(id_fix[i]); - if (ifix < 0) error->all("Could not find thermo fix ID"); + if (ifix < 0) error->all(FLERR,"Could not find thermo fix ID"); fixes[i] = modify->fix[ifix]; if (output->thermo_every % fixes[i]->global_freq) - error->all("Thermo and fix not computed at compatible times"); + error->all(FLERR,"Thermo and fix not computed at compatible times"); } // find current ptr for each Variable ID @@ -252,7 +249,7 @@ void Thermo::init() for (i = 0; i < nvariable; i++) { ivariable = input->variable->find(id_variable[i]); if (ivariable < 0) - error->all("Could not find thermo custom variable name"); + error->all(FLERR,"Could not find thermo custom variable name"); variables[i] = ivariable; } @@ -366,7 +363,7 @@ bigint Thermo::lost_check() bigint ntotal; bigint nblocal = atom->nlocal; MPI_Allreduce(&nblocal,&ntotal,1,MPI_LMP_BIGINT,MPI_SUM,world); - if (ntotal < 0 || ntotal > MAXBIGINT) error->all("Too many total atoms"); + if (ntotal < 0 || ntotal > MAXBIGINT) error->all(FLERR,"Too many total atoms"); if (ntotal == atom->natoms) return ntotal; // if not checking or already warned, just return @@ -385,7 +382,7 @@ bigint Thermo::lost_check() sprintf(str, "Lost atoms: original " BIGINT_FORMAT " current " BIGINT_FORMAT, atom->natoms,ntotal); - error->all(str); + error->all(FLERR,str); } // warning message @@ -394,7 +391,7 @@ bigint Thermo::lost_check() sprintf(str, "Lost atoms: original " BIGINT_FORMAT " current " BIGINT_FORMAT, atom->natoms,ntotal); - if (me == 0) error->warning(str,0); + if (me == 0) error->warning(FLERR,str,0); // reset total atom count @@ -409,25 +406,25 @@ bigint Thermo::lost_check() void Thermo::modify_params(int narg, char **arg) { - if (narg == 0) error->all("Illegal thermo_modify command"); + if (narg == 0) error->all(FLERR,"Illegal thermo_modify command"); modified = 1; int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"every") == 0) { - if (iarg+2 > narg) error->all("Illegal thermo_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { delete [] output->var_thermo; int n = strlen(&arg[iarg+1][2]) + 1; output->var_thermo = new char[n]; strcpy(output->var_thermo,&arg[iarg+1][2]); - } else error->all("Illegal thermo_modify command"); + } else error->all(FLERR,"Illegal thermo_modify command"); output->thermo_every = 0; iarg += 2; } else if (strcmp(arg[iarg],"temp") == 0) { - if (iarg+2 > narg) error->all("Illegal thermo_modify command"); - if (index_temp < 0) error->all("Thermo style does not use temp"); + if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); + if (index_temp < 0) error->all(FLERR,"Thermo style does not use temp"); delete [] id_compute[index_temp]; int n = strlen(arg[iarg+1]) + 1; id_compute[index_temp] = new char[n]; @@ -435,24 +432,24 @@ void Thermo::modify_params(int narg, char **arg) int icompute = modify->find_compute(arg[iarg+1]); if (icompute < 0) - error->all("Could not find thermo_modify temperature ID"); + error->all(FLERR,"Could not find thermo_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Thermo_modify temperature ID does not " + error->all(FLERR,"Thermo_modify temperature ID does not " "compute temperature"); if (temperature->igroup != 0 && comm->me == 0) - error->warning("Temperature for thermo pressure is not for group all"); + error->warning(FLERR,"Temperature for thermo pressure is not for group all"); // reset id_temp of pressure to new temperature ID // either pressure currently being used by thermo or "thermo_press" if (index_press_scalar >= 0) { icompute = modify->find_compute(id_compute[index_press_scalar]); - if (icompute < 0) error->all("Pressure ID for thermo does not exist"); + if (icompute < 0) error->all(FLERR,"Pressure ID for thermo does not exist"); } else if (index_press_vector >= 0) { icompute = modify->find_compute(id_compute[index_press_vector]); - if (icompute < 0) error->all("Pressure ID for thermo does not exist"); + if (icompute < 0) error->all(FLERR,"Pressure ID for thermo does not exist"); } else icompute = modify->find_compute((char *) "thermo_press"); modify->compute[icompute]->reset_extra_compute_fix(arg[iarg+1]); @@ -460,9 +457,9 @@ void Thermo::modify_params(int narg, char **arg) iarg += 2; } else if (strcmp(arg[iarg],"press") == 0) { - if (iarg+2 > narg) error->all("Illegal thermo_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (index_press_scalar < 0 && index_press_vector < 0) - error->all("Thermo style does not use press"); + error->all(FLERR,"Thermo style does not use press"); if (index_press_scalar >= 0) { delete [] id_compute[index_press_scalar]; @@ -478,46 +475,46 @@ void Thermo::modify_params(int narg, char **arg) } int icompute = modify->find_compute(arg[iarg+1]); - if (icompute < 0) error->all("Could not find thermo_modify pressure ID"); + if (icompute < 0) error->all(FLERR,"Could not find thermo_modify pressure ID"); pressure = modify->compute[icompute]; if (pressure->pressflag == 0) - error->all("Thermo_modify pressure ID does not compute pressure"); + error->all(FLERR,"Thermo_modify pressure ID does not compute pressure"); iarg += 2; } else if (strcmp(arg[iarg],"lost") == 0) { - if (iarg+2 > narg) error->all("Illegal thermo_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (strcmp(arg[iarg+1],"ignore") == 0) lostflag = IGNORE; else if (strcmp(arg[iarg+1],"warn") == 0) lostflag = WARN; else if (strcmp(arg[iarg+1],"error") == 0) lostflag = ERROR; - else error->all("Illegal thermo_modify command"); + else error->all(FLERR,"Illegal thermo_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"norm") == 0) { - if (iarg+2 > narg) error->all("Illegal thermo_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); normuserflag = 1; if (strcmp(arg[iarg+1],"no") == 0) normuser = 0; else if (strcmp(arg[iarg+1],"yes") == 0) normuser = 1; - else error->all("Illegal thermo_modify command"); + else error->all(FLERR,"Illegal thermo_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"flush") == 0) { - if (iarg+2 > narg) error->all("Illegal thermo_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (strcmp(arg[iarg+1],"no") == 0) flushflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) flushflag = 1; - else error->all("Illegal thermo_modify command"); + else error->all(FLERR,"Illegal thermo_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"line") == 0) { - if (iarg+2 > narg) error->all("Illegal thermo_modify command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (strcmp(arg[iarg+1],"one") == 0) lineflag = ONELINE; else if (strcmp(arg[iarg+1],"multi") == 0) lineflag = MULTILINE; - else error->all("Illegal thermo_modify command"); + else error->all(FLERR,"Illegal thermo_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"format") == 0) { - if (iarg+3 > narg) error->all("Illegal thermo_modify command"); + if (iarg+3 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (strcmp(arg[iarg+1],"int") == 0) { if (format_int_user) delete [] format_int_user; int n = strlen(arg[iarg+2]) + 1; @@ -528,7 +525,7 @@ void Thermo::modify_params(int narg, char **arg) format_bigint_user = new char[n]; char *ptr = strchr(format_int_user,'d'); if (ptr == NULL) - error->all("Thermo_modify int format does not contain d character"); + error->all(FLERR,"Thermo_modify int format does not contain d character"); *ptr = '\0'; sprintf(format_bigint_user,"%s%s%s",format_int_user, BIGINT_FORMAT,ptr+1); @@ -541,7 +538,7 @@ void Thermo::modify_params(int narg, char **arg) } else { int i = atoi(arg[iarg+1]) - 1; if (i < 0 || i >= nfield_initial) - error->all("Illegal thermo_modify command"); + error->all(FLERR,"Illegal thermo_modify command"); if (format_user[i]) delete [] format_user[i]; int n = strlen(arg[iarg+2]) + 1; format_user[i] = new char[n]; @@ -549,7 +546,7 @@ void Thermo::modify_params(int narg, char **arg) } iarg += 3; - } else error->all("Illegal thermo_modify command"); + } else error->all(FLERR,"Illegal thermo_modify command"); } } @@ -744,15 +741,15 @@ void Thermo::parse_fields(char *str) } else if (strcmp(word,"xlat") == 0) { if (domain->lattice == NULL) - error->all("Thermo keyword requires lattice be defined"); + error->all(FLERR,"Thermo keyword requires lattice be defined"); addfield("Xlat",&Thermo::compute_xlat,FLOAT); } else if (strcmp(word,"ylat") == 0) { if (domain->lattice == NULL) - error->all("Thermo keyword requires lattice be defined"); + error->all(FLERR,"Thermo keyword requires lattice be defined"); addfield("Ylat",&Thermo::compute_ylat,FLOAT); } else if (strcmp(word,"zlat") == 0) { if (domain->lattice == NULL) - error->all("Thermo keyword requires lattice be defined"); + error->all(FLERR,"Thermo keyword requires lattice be defined"); addfield("Zlat",&Thermo::compute_zlat,FLOAT); } else if (strcmp(word,"pxx") == 0) { @@ -823,21 +820,21 @@ void Thermo::parse_fields(char *str) if (word[0] == 'c') { n = modify->find_compute(id); - if (n < 0) error->all("Could not find thermo custom compute ID"); + if (n < 0) error->all(FLERR,"Could not find thermo custom compute ID"); if (argindex1[nfield] == 0 && modify->compute[n]->scalar_flag == 0) - error->all("Thermo compute does not compute scalar"); + error->all(FLERR,"Thermo compute does not compute scalar"); if (argindex1[nfield] > 0 && argindex2[nfield] == 0) { if (modify->compute[n]->vector_flag == 0) - error->all("Thermo compute does not compute vector"); + error->all(FLERR,"Thermo compute does not compute vector"); if (argindex1[nfield] > modify->compute[n]->size_vector) - error->all("Thermo compute vector is accessed out-of-range"); + error->all(FLERR,"Thermo compute vector is accessed out-of-range"); } if (argindex1[nfield] > 0 && argindex2[nfield] > 0) { if (modify->compute[n]->array_flag == 0) - error->all("Thermo compute does not compute array"); + error->all(FLERR,"Thermo compute does not compute array"); if (argindex1[nfield] > modify->compute[n]->size_array_rows || argindex2[nfield] > modify->compute[n]->size_array_cols) - error->all("Thermo compute array is accessed out-of-range"); + error->all(FLERR,"Thermo compute array is accessed out-of-range"); } if (argindex1[nfield] == 0) @@ -850,21 +847,21 @@ void Thermo::parse_fields(char *str) } else if (word[0] == 'f') { n = modify->find_fix(id); - if (n < 0) error->all("Could not find thermo custom fix ID"); + if (n < 0) error->all(FLERR,"Could not find thermo custom fix ID"); if (argindex1[nfield] == 0 && modify->fix[n]->scalar_flag == 0) - error->all("Thermo fix does not compute scalar"); + error->all(FLERR,"Thermo fix does not compute scalar"); if (argindex1[nfield] > 0 && argindex2[nfield] == 0) { if (modify->fix[n]->vector_flag == 0) - error->all("Thermo fix does not compute vector"); + error->all(FLERR,"Thermo fix does not compute vector"); if (argindex1[nfield] > modify->fix[n]->size_vector) - error->all("Thermo fix vector is accessed out-of-range"); + error->all(FLERR,"Thermo fix vector is accessed out-of-range"); } if (argindex1[nfield] > 0 && argindex2[nfield] > 0) { if (modify->fix[n]->array_flag == 0) - error->all("Thermo fix does not compute array"); + error->all(FLERR,"Thermo fix does not compute array"); if (argindex1[nfield] > modify->fix[n]->size_array_rows || argindex2[nfield] > modify->fix[n]->size_array_cols) - error->all("Thermo fix array is accessed out-of-range"); + error->all(FLERR,"Thermo fix array is accessed out-of-range"); } field2index[nfield] = add_fix(id); @@ -872,11 +869,11 @@ void Thermo::parse_fields(char *str) } else if (word[0] == 'v') { n = input->variable->find(id); - if (n < 0) error->all("Could not find thermo custom variable name"); + if (n < 0) error->all(FLERR,"Could not find thermo custom variable name"); if (input->variable->equalstyle(n) == 0) - error->all("Thermo custom variable is not equal-style variable"); + error->all(FLERR,"Thermo custom variable is not equal-style variable"); if (argindex1[nfield]) - error->all("Thermo custom variable cannot be indexed"); + error->all(FLERR,"Thermo custom variable cannot be indexed"); field2index[nfield] = add_variable(id); addfield(copy,&Thermo::compute_variable,FLOAT); @@ -884,7 +881,7 @@ void Thermo::parse_fields(char *str) delete [] id; - } else error->all("Invalid keyword in thermo_style custom command"); + } else error->all(FLERR,"Invalid keyword in thermo_style custom command"); word = strtok(NULL," \0"); } @@ -974,13 +971,13 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"elapsed") == 0) { if (update->whichflag == 0) - error->all("This variable thermo keyword cannot be used between runs"); + error->all(FLERR,"This variable thermo keyword cannot be used between runs"); compute_elapsed(); dvalue = bivalue; } else if (strcmp(word,"elaplong") == 0) { if (update->whichflag == 0) - error->all("This variable thermo keyword cannot be used between runs"); + error->all(FLERR,"This variable thermo keyword cannot be used between runs"); compute_elapsed_long(); dvalue = bivalue; @@ -989,17 +986,17 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"cpu") == 0) { if (update->whichflag == 0) - error->all("This variable thermo keyword cannot be used between runs"); + error->all(FLERR,"This variable thermo keyword cannot be used between runs"); compute_cpu(); } else if (strcmp(word,"tpcpu") == 0) { if (update->whichflag == 0) - error->all("This variable thermo keyword cannot be used between runs"); + error->all(FLERR,"This variable thermo keyword cannot be used between runs"); compute_tpcpu(); } else if (strcmp(word,"spcpu") == 0) { if (update->whichflag == 0) - error->all("This variable thermo keyword cannot be used between runs"); + error->all(FLERR,"This variable thermo keyword cannot be used between runs"); compute_spcpu(); } else if (strcmp(word,"atoms") == 0) { @@ -1008,11 +1005,11 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"temp") == 0) { if (!temperature) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init temp"); if (update->whichflag == 0) { if (temperature->invoked_scalar != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(temperature->invoked_flag & INVOKED_SCALAR)) { temperature->compute_scalar(); @@ -1022,11 +1019,11 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"press") == 0) { if (!pressure) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_scalar != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_SCALAR)) { pressure->compute_scalar(); @@ -1036,10 +1033,10 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"pe") == 0) { if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); if (update->whichflag == 0) { if (pe->invoked_scalar != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pe->invoked_flag & INVOKED_SCALAR)) { pe->compute_scalar(); @@ -1049,11 +1046,11 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"ke") == 0) { if (!temperature) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init temp"); if (update->whichflag == 0) { if (temperature->invoked_scalar != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(temperature->invoked_flag & INVOKED_SCALAR)) { temperature->compute_scalar(); @@ -1063,21 +1060,21 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"etotal") == 0) { if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); if (update->whichflag == 0) { if (pe->invoked_scalar != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pe->invoked_flag & INVOKED_SCALAR)) { pe->compute_scalar(); pe->invoked_flag |= INVOKED_SCALAR; } if (!temperature) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init temp"); if (update->whichflag == 0) { if (temperature->invoked_scalar != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(temperature->invoked_flag & INVOKED_SCALAR)) { temperature->compute_scalar(); @@ -1087,32 +1084,32 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"enthalpy") == 0) { if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); if (update->whichflag == 0) { if (pe->invoked_scalar != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pe->invoked_flag & INVOKED_SCALAR)) { pe->compute_scalar(); pe->invoked_flag |= INVOKED_SCALAR; } if (!temperature) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init temp"); if (update->whichflag == 0) { if (temperature->invoked_scalar != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(temperature->invoked_flag & INVOKED_SCALAR)) { temperature->compute_scalar(); temperature->invoked_flag |= INVOKED_SCALAR; } if (!pressure) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_scalar != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_SCALAR)) { pressure->compute_scalar(); @@ -1122,81 +1119,81 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"evdwl") == 0) { if (update->eflag_global != update->ntimestep) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_evdwl(); } else if (strcmp(word,"ecoul") == 0) { if (update->eflag_global != update->ntimestep) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_ecoul(); } else if (strcmp(word,"epair") == 0) { if (update->eflag_global != update->ntimestep) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_epair(); } else if (strcmp(word,"ebond") == 0) { if (update->eflag_global != update->ntimestep) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_ebond(); } else if (strcmp(word,"eangle") == 0) { if (update->eflag_global != update->ntimestep) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_eangle(); } else if (strcmp(word,"edihed") == 0) { if (update->eflag_global != update->ntimestep) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_edihed(); } else if (strcmp(word,"eimp") == 0) { if (update->eflag_global != update->ntimestep) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_eimp(); } else if (strcmp(word,"emol") == 0) { if (update->eflag_global != update->ntimestep) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_emol(); } else if (strcmp(word,"elong") == 0) { if (update->eflag_global != update->ntimestep) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_elong(); } else if (strcmp(word,"etail") == 0) { if (update->eflag_global != update->ntimestep) - error->all("Energy was not tallied on needed timestep"); + error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) - error->all("Thermo keyword in variable requires thermo to use/init pe"); + error->all(FLERR,"Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_etail(); @@ -1218,24 +1215,24 @@ int Thermo::evaluate_keyword(char *word, double *answer) else if (strcmp(word,"xlat") == 0) { if (domain->lattice == NULL) - error->all("Thermo keyword in variable requires lattice be defined"); + error->all(FLERR,"Thermo keyword in variable requires lattice be defined"); compute_xlat(); } else if (strcmp(word,"ylat") == 0) { if (domain->lattice == NULL) - error->all("Thermo keyword in variable requires lattice be defined"); + error->all(FLERR,"Thermo keyword in variable requires lattice be defined"); compute_ylat(); } else if (strcmp(word,"zlat") == 0) { if (domain->lattice == NULL) - error->all("Thermo keyword in variable requires lattice be defined"); + error->all(FLERR,"Thermo keyword in variable requires lattice be defined"); compute_zlat(); } else if (strcmp(word,"pxx") == 0) { if (!pressure) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); @@ -1245,11 +1242,11 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"pyy") == 0) { if (!pressure) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); @@ -1259,11 +1256,11 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"pzz") == 0) { if (!pressure) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); @@ -1273,11 +1270,11 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"pxy") == 0) { if (!pressure) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); @@ -1287,11 +1284,11 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"pxz") == 0) { if (!pressure) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); @@ -1301,11 +1298,11 @@ int Thermo::evaluate_keyword(char *word, double *answer) } else if (strcmp(word,"pyz") == 0) { if (!pressure) - error->all("Thermo keyword in variable requires " + error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) - error->all("Compute used in variable thermo keyword between runs " + error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); @@ -1897,7 +1894,7 @@ void Thermo::compute_cellalpha() double* h = domain->h; double cosalpha = (h[5]*h[4]+h[1]*h[3])/ sqrt((h[1]*h[1]+h[5]*h[5])*(h[2]*h[2]+h[3]*h[3]+h[4]*h[4])); - dvalue = acos(cosalpha)*180.0/PI; + dvalue = acos(cosalpha)*180.0/MY_PI; } } @@ -1913,7 +1910,7 @@ void Thermo::compute_cellbeta() double* h = domain->h; double cosbeta = h[4]/sqrt(h[2]*h[2]+h[3]*h[3]+h[4]*h[4]); - dvalue = acos(cosbeta)*180.0/PI; + dvalue = acos(cosbeta)*180.0/MY_PI; } } @@ -1929,6 +1926,6 @@ void Thermo::compute_cellgamma() double* h = domain->h; double cosgamma = h[5]/sqrt(h[1]*h[1]+h[5]*h[5]); - dvalue = acos(cosgamma)*180.0/PI; + dvalue = acos(cosgamma)*180.0/MY_PI; } } diff --git a/src/thermo.h b/src/thermo.h index 352209cb35..d68fff887f 100644 --- a/src/thermo.h +++ b/src/thermo.h @@ -38,13 +38,13 @@ class Thermo : protected Pointers { int evaluate_keyword(char *, double *); private: - int me; - char *line; - int nfield,nfield_initial; char **keyword; int *vtype; + int nfield,nfield_initial; + int me; + char **format,**format_user; char *format_float_one_def,*format_float_multi_def; char *format_int_one_def,*format_int_multi_def; @@ -96,8 +96,6 @@ class Thermo : protected Pointers { char **id_variable; // list of variable names int *variables; // list of Variable indices - double PI; - // private methods void allocate(); diff --git a/src/update.cpp b/src/update.cpp index 3320ce9d8a..1ac25170d9 100644 --- a/src/update.cpp +++ b/src/update.cpp @@ -91,10 +91,10 @@ void Update::init() if (whichflag == 1 && lmp->cuda) if (strstr(integrate_style,"cuda") == NULL) - error->all("USER-CUDA mode requires CUDA variant of run style"); + error->all(FLERR,"USER-CUDA mode requires CUDA variant of run style"); if (whichflag == 2 && lmp->cuda) if (strstr(minimize_style,"cuda") == NULL) - error->all("USER-CUDA mode requires CUDA variant of min style"); + error->all(FLERR,"USER-CUDA mode requires CUDA variant of min style"); // init the appropriate integrate and/or minimize class // if neither (e.g. from write_restart) then just return @@ -118,6 +118,7 @@ void Update::set_units(const char *style) if (strcmp(style,"lj") == 0) { force->boltz = 1.0; + force->hplanck = 0.18292026; // using LJ parameters for argon force->mvv2e = 1.0; force->ftm2v = 1.0; force->mv2d = 1.0; @@ -135,6 +136,7 @@ void Update::set_units(const char *style) } else if (strcmp(style,"real") == 0) { force->boltz = 0.0019872067; + force->hplanck = 95.306976368; force->mvv2e = 48.88821291 * 48.88821291; force->ftm2v = 1.0 / 48.88821291 / 48.88821291; force->mv2d = 1.0 / 0.602214179; @@ -152,6 +154,7 @@ void Update::set_units(const char *style) } else if (strcmp(style,"metal") == 0) { force->boltz = 8.617343e-5; + force->hplanck = 4.135667403e-3; force->mvv2e = 1.0364269e-4; force->ftm2v = 1.0 / 1.0364269e-4; force->mv2d = 1.0 / 0.602214179; @@ -169,6 +172,7 @@ void Update::set_units(const char *style) } else if (strcmp(style,"si") == 0) { force->boltz = 1.3806504e-23; + force->hplanck = 6.62606896e-34; force->mvv2e = 1.0; force->ftm2v = 1.0; force->mv2d = 1.0; @@ -186,6 +190,7 @@ void Update::set_units(const char *style) } else if (strcmp(style,"cgs") == 0) { force->boltz = 1.3806504e-16; + force->hplanck = 6.62606896e-27; force->mvv2e = 1.0; force->ftm2v = 1.0; force->mv2d = 1.0; @@ -203,6 +208,7 @@ void Update::set_units(const char *style) } else if (strcmp(style,"electron") == 0) { force->boltz = 3.16681534e-6; + force->hplanck = 0.1519829846; force->mvv2e = 1.06657236; force->ftm2v = 0.937582899; force->mv2d = 1.0; @@ -218,7 +224,7 @@ void Update::set_units(const char *style) dt = 0.001; neighbor->skin = 2.0; - } else error->all("Illegal units command"); + } else error->all(FLERR,"Illegal units command"); delete [] unit_style; int n = strlen(style) + 1; @@ -230,7 +236,7 @@ void Update::set_units(const char *style) void Update::create_integrate(int narg, char **arg, char *suffix) { - if (narg < 1) error->all("Illegal run_style command"); + if (narg < 1) error->all(FLERR,"Illegal run_style command"); delete [] integrate_style; delete integrate; @@ -290,7 +296,7 @@ void Update::new_integrate(char *style, int narg, char **arg, #undef IntegrateStyle #undef INTEGRATE_CLASS - else error->all("Illegal integrate style"); + else error->all(FLERR,"Illegal integrate style"); } } @@ -298,7 +304,7 @@ void Update::new_integrate(char *style, int narg, char **arg, void Update::create_minimize(int narg, char **arg) { - if (narg != 1) error->all("Illegal min_style command"); + if (narg != 1) error->all(FLERR,"Illegal min_style command"); delete [] minimize_style; delete minimize; @@ -311,7 +317,7 @@ void Update::create_minimize(int narg, char **arg) #include "style_minimize.h" #undef MINIMIZE_CLASS - else error->all("Illegal min_style command"); + else error->all(FLERR,"Illegal min_style command"); int n = strlen(arg[0]) + 1; minimize_style = new char[n]; @@ -331,21 +337,21 @@ void Update::create_minimize(int narg, char **arg) void Update::reset_timestep(int narg, char **arg) { - if (narg != 1) error->all("Illegal reset_timestep command"); + if (narg != 1) error->all(FLERR,"Illegal reset_timestep command"); for (int i = 0; i < output->ndump; i++) if (output->last_dump[i] >= 0) - error->all("Cannot reset timestep with dump file already written to"); + error->all(FLERR,"Cannot reset timestep with dump file already written to"); if (output->restart && output->last_restart >= 0) - error->all("Cannot reset timestep with restart file already written"); + error->all(FLERR,"Cannot reset timestep with restart file already written"); for (int i = 0; i < modify->nfix; i++) if (modify->fix[i]->time_depend) - error->all("Cannot reset timestep with a time-dependent fix defined"); + error->all(FLERR,"Cannot reset timestep with a time-dependent fix defined"); for (int i = 0; i < domain->nregion; i++) if (domain->regions[i]->dynamic_check()) - error->all("Cannot reset timestep with a dynamic region defined"); + error->all(FLERR,"Cannot reset timestep with a dynamic region defined"); eflag_global = vflag_global = -1; @@ -361,8 +367,8 @@ void Update::reset_timestep(int narg, char **arg) if (modify->compute[i]->timeflag) modify->compute[i]->clearstep(); ntimestep = ATOBIGINT(arg[0]); - if (ntimestep < 0) error->all("Timestep must be >= 0"); - if (ntimestep > MAXBIGINT) error->all("Too big a timestep"); + if (ntimestep < 0) error->all(FLERR,"Timestep must be >= 0"); + if (ntimestep > MAXBIGINT) error->all(FLERR,"Too big a timestep"); } /* ---------------------------------------------------------------------- diff --git a/src/variable.cpp b/src/variable.cpp index b8ec5e589e..c6f955f75e 100644 --- a/src/variable.cpp +++ b/src/variable.cpp @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov @@ -32,14 +32,14 @@ #include "memory.h" #include "error.h" +#include "math_const.h" + using namespace LAMMPS_NS; +using namespace MathConst; #define VARDELTA 4 #define MAXLEVEL 4 -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - #define MYROUND(a) (( a-floor(a) ) >= .5) ? ceil(a) : floor(a) enum{INDEX,LOOP,WORLD,UNIVERSE,ULOOP,STRING,EQUAL,ATOM}; @@ -91,8 +91,6 @@ Variable::Variable(LAMMPS *lmp) : Pointers(lmp) precedence[MULTIPLY] = precedence[DIVIDE] = 6; precedence[CARAT] = 7; precedence[UNARY] = precedence[NOT] = 8; - - PI = 4.0*atan(1.0); } /* ---------------------------------------------------------------------- */ @@ -122,13 +120,13 @@ Variable::~Variable() void Variable::set(int narg, char **arg) { - if (narg < 2) error->all("Illegal variable command"); + if (narg < 2) error->all(FLERR,"Illegal variable command"); // DELETE // doesn't matter if variable no longer exists if (strcmp(arg[1],"delete") == 0) { - if (narg != 2) error->all("Illegal variable command"); + if (narg != 2) error->all(FLERR,"Illegal variable command"); if (find(arg[0]) >= 0) remove(find(arg[0])); return; @@ -136,7 +134,7 @@ void Variable::set(int narg, char **arg) // num = listed args, which = 1st value, data = copied args } else if (strcmp(arg[1],"index") == 0) { - if (narg < 3) error->all("Illegal variable command"); + if (narg < 3) error->all(FLERR,"Illegal variable command"); if (find(arg[0]) >= 0) return; if (nvar == maxvar) extend(); style[nvar] = INDEX; @@ -158,7 +156,7 @@ void Variable::set(int narg, char **arg) if (narg == 3 || (narg == 4 && strcmp(arg[3],"pad") == 0)) { nfirst = 1; nlast = atoi(arg[2]); - if (nlast <= 0) error->all("Illegal variable command"); + if (nlast <= 0) error->all(FLERR,"Illegal variable command"); if (narg == 4 && strcmp(arg[3],"pad") == 0) { char digits[12]; sprintf(digits,"%d",nlast); @@ -167,13 +165,13 @@ void Variable::set(int narg, char **arg) } else if (narg == 4 || (narg == 5 && strcmp(arg[4],"pad") == 0)) { nfirst = atoi(arg[2]); nlast = atoi(arg[3]); - if (nfirst > nlast || nlast <= 0) error->all("Illegal variable command"); + if (nfirst > nlast || nlast <= 0) error->all(FLERR,"Illegal variable command"); if (narg == 5 && strcmp(arg[4],"pad") == 0) { char digits[12]; sprintf(digits,"%d",nlast); pad[nvar] = strlen(digits); } else pad[nvar] = 0; - } else error->all("Illegal variable command"); + } else error->all(FLERR,"Illegal variable command"); num[nvar] = nlast; which[nvar] = nfirst-1; data[nvar] = new char*[1]; @@ -184,13 +182,13 @@ void Variable::set(int narg, char **arg) // error check that num = # of worlds in universe } else if (strcmp(arg[1],"world") == 0) { - if (narg < 3) error->all("Illegal variable command"); + if (narg < 3) error->all(FLERR,"Illegal variable command"); if (find(arg[0]) >= 0) return; if (nvar == maxvar) extend(); style[nvar] = WORLD; num[nvar] = narg - 2; if (num[nvar] != universe->nworlds) - error->all("World variable count doesn't match # of partitions"); + error->all(FLERR,"World variable count doesn't match # of partitions"); which[nvar] = universe->iworld; pad[nvar] = 0; data[nvar] = new char*[num[nvar]]; @@ -205,7 +203,7 @@ void Variable::set(int narg, char **arg) } else if (strcmp(arg[1],"universe") == 0 || strcmp(arg[1],"uloop") == 0) { if (strcmp(arg[1],"universe") == 0) { - if (narg < 3) error->all("Illegal variable command"); + if (narg < 3) error->all(FLERR,"Illegal variable command"); if (find(arg[0]) >= 0) return; if (nvar == maxvar) extend(); style[nvar] = UNIVERSE; @@ -215,7 +213,7 @@ void Variable::set(int narg, char **arg) copy(num[nvar],&arg[2],data[nvar]); } else if (strcmp(arg[1],"uloop") == 0) { if (narg < 3 || narg > 4 || (narg == 4 && strcmp(arg[3],"pad") != 0)) - error->all("Illegal variable command"); + error->all(FLERR,"Illegal variable command"); if (find(arg[0]) >= 0) return; if (nvar == maxvar) extend(); style[nvar] = ULOOP; @@ -230,7 +228,7 @@ void Variable::set(int narg, char **arg) } if (num[nvar] < universe->nworlds) - error->all("Universe/uloop variable count < # of partitions"); + error->all(FLERR,"Universe/uloop variable count < # of partitions"); which[nvar] = universe->iworld; if (universe->me == 0) { @@ -242,7 +240,7 @@ void Variable::set(int narg, char **arg) for (int jvar = 0; jvar < nvar; jvar++) if (num[jvar] && (style[jvar] == UNIVERSE || style[jvar] == ULOOP) && num[nvar] != num[jvar]) - error->all("All universe/uloop variables must have same # of values"); + error->all(FLERR,"All universe/uloop variables must have same # of values"); // STRING // remove pre-existing var if also style STRING (allows it to be reset) @@ -250,10 +248,10 @@ void Variable::set(int narg, char **arg) // data = 1 value, string to eval } else if (strcmp(arg[1],"string") == 0) { - if (narg != 3) error->all("Illegal variable command"); + if (narg != 3) error->all(FLERR,"Illegal variable command"); if (find(arg[0]) >= 0) { if (style[find(arg[0])] != STRING) - error->all("Cannot redefine variable as a different style"); + error->all(FLERR,"Cannot redefine variable as a different style"); remove(find(arg[0])); } if (nvar == maxvar) extend(); @@ -270,10 +268,10 @@ void Variable::set(int narg, char **arg) // data = 2 values, 1st is string to eval, 2nd is filled on retrieval } else if (strcmp(arg[1],"equal") == 0) { - if (narg != 3) error->all("Illegal variable command"); + if (narg != 3) error->all(FLERR,"Illegal variable command"); if (find(arg[0]) >= 0) { if (style[find(arg[0])] != EQUAL) - error->all("Cannot redefine variable as a different style"); + error->all(FLERR,"Cannot redefine variable as a different style"); remove(find(arg[0])); } if (nvar == maxvar) extend(); @@ -291,10 +289,10 @@ void Variable::set(int narg, char **arg) // data = 1 value, string to eval } else if (strcmp(arg[1],"atom") == 0) { - if (narg != 3) error->all("Illegal variable command"); + if (narg != 3) error->all(FLERR,"Illegal variable command"); if (find(arg[0]) >= 0) { if (style[find(arg[0])] != ATOM) - error->all("Cannot redefine variable as a different style"); + error->all(FLERR,"Cannot redefine variable as a different style"); remove(find(arg[0])); } if (nvar == maxvar) extend(); @@ -305,7 +303,7 @@ void Variable::set(int narg, char **arg) data[nvar] = new char*[num[nvar]]; copy(1,&arg[2],data[nvar]); - } else error->all("Illegal variable command"); + } else error->all(FLERR,"Illegal variable command"); // set name of variable // must come at end, since STRING/EQUAL/ATOM reset may have removed name @@ -317,7 +315,7 @@ void Variable::set(int narg, char **arg) for (int i = 0; i < n-1; i++) if (!isalnum(names[nvar][i]) && names[nvar][i] != '_') - error->all("Variable name must be alphanumeric or " + error->all(FLERR,"Variable name must be alphanumeric or " "underscore characters"); nvar++; } @@ -347,25 +345,25 @@ int Variable::next(int narg, char **arg) { int ivar; - if (narg == 0) error->all("Illegal next command"); + if (narg == 0) error->all(FLERR,"Illegal next command"); // check that variables exist and are all the same style // exception: UNIVERSE and ULOOP variables can be mixed in same next command for (int iarg = 0; iarg < narg; iarg++) { ivar = find(arg[iarg]); - if (ivar == -1) error->all("Invalid variable in next command"); + if (ivar == -1) error->all(FLERR,"Invalid variable in next command"); if (style[ivar] == ULOOP && style[find(arg[0])] == UNIVERSE) continue; else if (style[ivar] == UNIVERSE && style[find(arg[0])] == ULOOP) continue; else if (style[ivar] != style[find(arg[0])]) - error->all("All variables in next command must be same style"); + error->all(FLERR,"All variables in next command must be same style"); } // invalid styles STRING or EQUAL or WORLD or ATOM int istyle = style[find(arg[0])]; if (istyle == STRING || istyle == EQUAL || istyle == WORLD || istyle == ATOM) - error->all("Invalid variable style with next command"); + error->all(FLERR,"Invalid variable style with next command"); // increment all variables in list // if any variable is exhausted, set flag = 1 and remove var to allow re-use @@ -655,7 +653,7 @@ double Variable::evaluate(char *str, Tree **tree) // ---------------- else if (onechar == '(') { - if (expect == OP) error->all("Invalid syntax in variable formula"); + if (expect == OP) error->all(FLERR,"Invalid syntax in variable formula"); expect = OP; char *contents; @@ -677,7 +675,7 @@ double Variable::evaluate(char *str, Tree **tree) // ---------------- } else if (isdigit(onechar) || onechar == '.') { - if (expect == OP) error->all("Invalid syntax in variable formula"); + if (expect == OP) error->all(FLERR,"Invalid syntax in variable formula"); expect = OP; // istop = end of number, including scientific notation @@ -712,7 +710,7 @@ double Variable::evaluate(char *str, Tree **tree) // ---------------- } else if (isalpha(onechar)) { - if (expect == OP) error->all("Invalid syntax in variable formula"); + if (expect == OP) error->all(FLERR,"Invalid syntax in variable formula"); expect = OP; // istop = end of word @@ -733,14 +731,14 @@ double Variable::evaluate(char *str, Tree **tree) if (strncmp(word,"c_",2) == 0) { if (domain->box_exist == 0) - error->all("Variable evaluation before simulation box is defined"); + error->all(FLERR,"Variable evaluation before simulation box is defined"); n = strlen(word) - 2 + 1; char *id = new char[n]; strcpy(id,&word[2]); int icompute = modify->find_compute(id); - if (icompute < 0) error->all("Invalid compute ID in variable formula"); + if (icompute < 0) error->all(FLERR,"Invalid compute ID in variable formula"); Compute *compute = modify->compute[icompute]; delete [] id; @@ -770,7 +768,7 @@ double Variable::evaluate(char *str, Tree **tree) if (update->whichflag == 0) { if (compute->invoked_scalar != update->ntimestep) - error->all("Compute used in variable between runs " + error->all(FLERR,"Compute used in variable between runs " "is not current"); } else if (!(compute->invoked_flag & INVOKED_SCALAR)) { compute->compute_scalar(); @@ -791,11 +789,11 @@ double Variable::evaluate(char *str, Tree **tree) } else if (nbracket == 1 && compute->vector_flag) { if (index1 > compute->size_vector) - error->all("Variable formula compute vector " + error->all(FLERR,"Variable formula compute vector " "is accessed out-of-range"); if (update->whichflag == 0) { if (compute->invoked_vector != update->ntimestep) - error->all("Compute used in variable between runs " + error->all(FLERR,"Compute used in variable between runs " "is not current"); } else if (!(compute->invoked_flag & INVOKED_VECTOR)) { compute->compute_vector(); @@ -816,14 +814,14 @@ double Variable::evaluate(char *str, Tree **tree) } else if (nbracket == 2 && compute->array_flag) { if (index1 > compute->size_array_rows) - error->all("Variable formula compute array " + error->all(FLERR,"Variable formula compute array " "is accessed out-of-range"); if (index2 > compute->size_array_cols) - error->all("Variable formula compute array " + error->all(FLERR,"Variable formula compute array " "is accessed out-of-range"); if (update->whichflag == 0) { if (compute->invoked_array != update->ntimestep) - error->all("Compute used in variable between runs " + error->all(FLERR,"Compute used in variable between runs " "is not current"); } else if (!(compute->invoked_flag & INVOKED_ARRAY)) { compute->compute_array(); @@ -846,7 +844,7 @@ double Variable::evaluate(char *str, Tree **tree) if (update->whichflag == 0) { if (compute->invoked_peratom != update->ntimestep) - error->all("Compute used in variable between runs " + error->all(FLERR,"Compute used in variable between runs " "is not current"); } else if (!(compute->invoked_flag & INVOKED_PERATOM)) { compute->compute_peratom(); @@ -862,11 +860,11 @@ double Variable::evaluate(char *str, Tree **tree) compute->size_peratom_cols > 0) { if (index2 > compute->size_peratom_cols) - error->all("Variable formula compute array " + error->all(FLERR,"Variable formula compute array " "is accessed out-of-range"); if (update->whichflag == 0) { if (compute->invoked_peratom != update->ntimestep) - error->all("Compute used in variable between runs " + error->all(FLERR,"Compute used in variable between runs " "is not current"); } else if (!(compute->invoked_flag & INVOKED_PERATOM)) { compute->compute_peratom(); @@ -883,10 +881,10 @@ double Variable::evaluate(char *str, Tree **tree) compute->size_peratom_cols == 0) { if (tree == NULL) - error->all("Per-atom compute in equal-style variable formula"); + error->all(FLERR,"Per-atom compute in equal-style variable formula"); if (update->whichflag == 0) { if (compute->invoked_peratom != update->ntimestep) - error->all("Compute used in variable between runs " + error->all(FLERR,"Compute used in variable between runs " "is not current"); } else if (!(compute->invoked_flag & INVOKED_PERATOM)) { compute->compute_peratom(); @@ -906,13 +904,13 @@ double Variable::evaluate(char *str, Tree **tree) compute->size_peratom_cols > 0) { if (tree == NULL) - error->all("Per-atom compute in equal-style variable formula"); + error->all(FLERR,"Per-atom compute in equal-style variable formula"); if (index1 > compute->size_peratom_cols) - error->all("Variable formula compute array " + error->all(FLERR,"Variable formula compute array " "is accessed out-of-range"); if (update->whichflag == 0) { if (compute->invoked_peratom != update->ntimestep) - error->all("Compute used in variable between runs " + error->all(FLERR,"Compute used in variable between runs " "is not current"); } else if (!(compute->invoked_flag & INVOKED_PERATOM)) { compute->compute_peratom(); @@ -926,7 +924,7 @@ double Variable::evaluate(char *str, Tree **tree) newtree->left = newtree->middle = newtree->right = NULL; treestack[ntreestack++] = newtree; - } else error->all("Mismatched compute in variable formula"); + } else error->all(FLERR,"Mismatched compute in variable formula"); // ---------------- // fix @@ -934,14 +932,14 @@ double Variable::evaluate(char *str, Tree **tree) } else if (strncmp(word,"f_",2) == 0) { if (domain->box_exist == 0) - error->all("Variable evaluation before simulation box is defined"); + error->all(FLERR,"Variable evaluation before simulation box is defined"); n = strlen(word) - 2 + 1; char *id = new char[n]; strcpy(id,&word[2]); int ifix = modify->find_fix(id); - if (ifix < 0) error->all("Invalid fix ID in variable formula"); + if (ifix < 0) error->all(FLERR,"Invalid fix ID in variable formula"); Fix *fix = modify->fix[ifix]; delete [] id; @@ -970,7 +968,7 @@ double Variable::evaluate(char *str, Tree **tree) if (nbracket == 0 && fix->scalar_flag) { if (update->whichflag > 0 && update->ntimestep % fix->global_freq) - error->all("Fix in variable not computed at compatible time"); + error->all(FLERR,"Fix in variable not computed at compatible time"); value1 = fix->compute_scalar(); if (tree) { @@ -986,9 +984,9 @@ double Variable::evaluate(char *str, Tree **tree) } else if (nbracket == 1 && fix->vector_flag) { if (index1 > fix->size_vector) - error->all("Variable formula fix vector is accessed out-of-range"); + error->all(FLERR,"Variable formula fix vector is accessed out-of-range"); if (update->whichflag > 0 && update->ntimestep % fix->global_freq) - error->all("Fix in variable not computed at compatible time"); + error->all(FLERR,"Fix in variable not computed at compatible time"); value1 = fix->compute_vector(index1-1); if (tree) { @@ -1004,11 +1002,11 @@ double Variable::evaluate(char *str, Tree **tree) } else if (nbracket == 2 && fix->array_flag) { if (index1 > fix->size_array_rows) - error->all("Variable formula fix array is accessed out-of-range"); + error->all(FLERR,"Variable formula fix array is accessed out-of-range"); if (index2 > fix->size_array_cols) - error->all("Variable formula fix array is accessed out-of-range"); + error->all(FLERR,"Variable formula fix array is accessed out-of-range"); if (update->whichflag > 0 && update->ntimestep % fix->global_freq) - error->all("Fix in variable not computed at compatible time"); + error->all(FLERR,"Fix in variable not computed at compatible time"); value1 = fix->compute_array(index1-1,index2-1); if (tree) { @@ -1026,7 +1024,7 @@ double Variable::evaluate(char *str, Tree **tree) if (update->whichflag > 0 && update->ntimestep % fix->peratom_freq) - error->all("Fix in variable not computed at compatible time"); + error->all(FLERR,"Fix in variable not computed at compatible time"); peratom2global(1,NULL,fix->vector_atom,1,index1, tree,treestack,ntreestack,argstack,nargstack); @@ -1037,10 +1035,10 @@ double Variable::evaluate(char *str, Tree **tree) fix->size_peratom_cols > 0) { if (index2 > fix->size_peratom_cols) - error->all("Variable formula fix array is accessed out-of-range"); + error->all(FLERR,"Variable formula fix array is accessed out-of-range"); if (update->whichflag > 0 && update->ntimestep % fix->peratom_freq) - error->all("Fix in variable not computed at compatible time"); + error->all(FLERR,"Fix in variable not computed at compatible time"); peratom2global(1,NULL,&fix->array_atom[0][index2-1], fix->size_peratom_cols,index1, @@ -1052,10 +1050,10 @@ double Variable::evaluate(char *str, Tree **tree) fix->size_peratom_cols == 0) { if (tree == NULL) - error->all("Per-atom fix in equal-style variable formula"); + error->all(FLERR,"Per-atom fix in equal-style variable formula"); if (update->whichflag > 0 && update->ntimestep % fix->peratom_freq) - error->all("Fix in variable not computed at compatible time"); + error->all(FLERR,"Fix in variable not computed at compatible time"); Tree *newtree = new Tree(); newtree->type = ATOMARRAY; @@ -1070,12 +1068,12 @@ double Variable::evaluate(char *str, Tree **tree) fix->size_peratom_cols > 0) { if (tree == NULL) - error->all("Per-atom fix in equal-style variable formula"); + error->all(FLERR,"Per-atom fix in equal-style variable formula"); if (index1 > fix->size_peratom_cols) - error->all("Variable formula fix array is accessed out-of-range"); + error->all(FLERR,"Variable formula fix array is accessed out-of-range"); if (update->whichflag > 0 && update->ntimestep % fix->peratom_freq) - error->all("Fix in variable not computed at compatible time"); + error->all(FLERR,"Fix in variable not computed at compatible time"); Tree *newtree = new Tree(); newtree->type = ATOMARRAY; @@ -1085,7 +1083,7 @@ double Variable::evaluate(char *str, Tree **tree) treestack[ntreestack++] = newtree; - } else error->all("Mismatched fix in variable formula"); + } else error->all(FLERR,"Mismatched fix in variable formula"); // ---------------- // variable @@ -1097,7 +1095,7 @@ double Variable::evaluate(char *str, Tree **tree) strcpy(id,&word[2]); int ivar = find(id); - if (ivar < 0) error->all("Invalid variable name in variable formula"); + if (ivar < 0) error->all(FLERR,"Invalid variable name in variable formula"); // parse zero or one trailing brackets // point i beyond last bracket @@ -1119,7 +1117,7 @@ double Variable::evaluate(char *str, Tree **tree) char *var = retrieve(id); if (var == NULL) - error->all("Invalid variable evaluation in variable formula"); + error->all(FLERR,"Invalid variable evaluation in variable formula"); if (tree) { Tree *newtree = new Tree(); newtree->type = VALUE; @@ -1133,7 +1131,7 @@ double Variable::evaluate(char *str, Tree **tree) } else if (nbracket == 0 && style[ivar] == ATOM) { if (tree == NULL) - error->all("Atom-style variable in equal-style variable formula"); + error->all(FLERR,"Atom-style variable in equal-style variable formula"); Tree *newtree; evaluate(data[ivar][0],&newtree); treestack[ntreestack++] = newtree; @@ -1151,7 +1149,7 @@ double Variable::evaluate(char *str, Tree **tree) tree,treestack,ntreestack,argstack,nargstack); memory->destroy(result); - } else error->all("Mismatched variable in variable formula"); + } else error->all(FLERR,"Mismatched variable in variable formula"); delete [] id; @@ -1177,7 +1175,7 @@ double Variable::evaluate(char *str, Tree **tree) treestack,ntreestack,argstack,nargstack)); else if (special_function(word,contents,tree, treestack,ntreestack,argstack,nargstack)); - else error->all("Invalid math/group/special function " + else error->all(FLERR,"Invalid math/group/special function " "in variable formula"); delete [] contents; @@ -1187,7 +1185,7 @@ double Variable::evaluate(char *str, Tree **tree) } else if (str[i] == '[') { if (domain->box_exist == 0) - error->all("Variable evaluation before simulation box is defined"); + error->all(FLERR,"Variable evaluation before simulation box is defined"); ptr = &str[i]; int id = int_between_brackets(ptr); @@ -1202,7 +1200,7 @@ double Variable::evaluate(char *str, Tree **tree) } else if (is_atom_vector(word)) { if (domain->box_exist == 0) - error->all("Variable evaluation before simulation box is defined"); + error->all(FLERR,"Variable evaluation before simulation box is defined"); atom_vector(word,tree,treestack,ntreestack); @@ -1226,10 +1224,10 @@ double Variable::evaluate(char *str, Tree **tree) } else { if (domain->box_exist == 0) - error->all("Variable evaluation before simulation box is defined"); + error->all(FLERR,"Variable evaluation before simulation box is defined"); int flag = output->thermo->evaluate_keyword(word,&value1); - if (flag) error->all("Invalid thermo keyword in variable formula"); + if (flag) error->all(FLERR,"Invalid thermo keyword in variable formula"); if (tree) { Tree *newtree = new Tree(); newtree->type = VALUE; @@ -1253,7 +1251,7 @@ double Variable::evaluate(char *str, Tree **tree) else if (onechar == '/') op = DIVIDE; else if (onechar == '^') op = CARAT; else if (onechar == '=') { - if (str[i+1] != '=') error->all("Invalid syntax in variable formula"); + if (str[i+1] != '=') error->all(FLERR,"Invalid syntax in variable formula"); op = EQ; i++; } else if (onechar == '!') { @@ -1274,11 +1272,11 @@ double Variable::evaluate(char *str, Tree **tree) i++; } } else if (onechar == '&') { - if (str[i+1] != '&') error->all("Invalid syntax in variable formula"); + if (str[i+1] != '&') error->all(FLERR,"Invalid syntax in variable formula"); op = AND; i++; } else if (onechar == '|') { - if (str[i+1] != '|') error->all("Invalid syntax in variable formula"); + if (str[i+1] != '|') error->all(FLERR,"Invalid syntax in variable formula"); op = OR; i++; } else op = DONE; @@ -1294,7 +1292,7 @@ double Variable::evaluate(char *str, Tree **tree) continue; } - if (expect == ARG) error->all("Invalid syntax in variable formula"); + if (expect == ARG) error->all(FLERR,"Invalid syntax in variable formula"); expect = ARG; // evaluate stack as deep as possible while respecting precedence @@ -1328,10 +1326,10 @@ double Variable::evaluate(char *str, Tree **tree) else if (opprevious == MULTIPLY) argstack[nargstack++] = value1 * value2; else if (opprevious == DIVIDE) { - if (value2 == 0.0) error->all("Divide by 0 in variable formula"); + if (value2 == 0.0) error->all(FLERR,"Divide by 0 in variable formula"); argstack[nargstack++] = value1 / value2; } else if (opprevious == CARAT) { - if (value2 == 0.0) error->all("Power by 0 in variable formula"); + if (value2 == 0.0) error->all(FLERR,"Power by 0 in variable formula"); argstack[nargstack++] = pow(value1,value2); } else if (opprevious == UNARY) { argstack[nargstack++] = -value2; @@ -1374,20 +1372,20 @@ double Variable::evaluate(char *str, Tree **tree) opstack[nopstack++] = op; - } else error->all("Invalid syntax in variable formula"); + } else error->all(FLERR,"Invalid syntax in variable formula"); } - if (nopstack) error->all("Invalid syntax in variable formula"); + if (nopstack) error->all(FLERR,"Invalid syntax in variable formula"); // for atom-style variable, return remaining tree // for equal-style variable, return remaining arg if (tree) { - if (ntreestack != 1) error->all("Invalid syntax in variable formula"); + if (ntreestack != 1) error->all(FLERR,"Invalid syntax in variable formula"); *tree = treestack[0]; return 0.0; } else { - if (nargstack != 1) error->all("Invalid syntax in variable formula"); + if (nargstack != 1) error->all(FLERR,"Invalid syntax in variable formula"); return argstack[0]; } } @@ -1447,7 +1445,7 @@ double Variable::collapse_tree(Tree *tree) arg2 = collapse_tree(tree->right); if (tree->left->type != VALUE || tree->right->type != VALUE) return 0.0; tree->type = VALUE; - if (arg2 == 0.0) error->one("Divide by 0 in variable formula"); + if (arg2 == 0.0) error->one(FLERR,"Divide by 0 in variable formula"); tree->value = arg1 / arg2; return tree->value; } @@ -1457,7 +1455,7 @@ double Variable::collapse_tree(Tree *tree) arg2 = collapse_tree(tree->right); if (tree->left->type != VALUE || tree->right->type != VALUE) return 0.0; tree->type = VALUE; - if (arg2 == 0.0) error->one("Power by 0 in variable formula"); + if (arg2 == 0.0) error->one(FLERR,"Power by 0 in variable formula"); tree->value = pow(arg1,arg2); return tree->value; } @@ -1563,7 +1561,7 @@ double Variable::collapse_tree(Tree *tree) arg1 = collapse_tree(tree->left); if (tree->left->type != VALUE) return 0.0; tree->type = VALUE; - if (arg1 < 0.0) error->one("Sqrt of negative value in variable formula"); + if (arg1 < 0.0) error->one(FLERR,"Sqrt of negative value in variable formula"); tree->value = sqrt(arg1); return tree->value; } @@ -1581,7 +1579,7 @@ double Variable::collapse_tree(Tree *tree) if (tree->left->type != VALUE) return 0.0; tree->type = VALUE; if (arg1 <= 0.0) - error->one("Log of zero/negative value in variable formula"); + error->one(FLERR,"Log of zero/negative value in variable formula"); tree->value = log(arg1); return tree->value; } @@ -1591,7 +1589,7 @@ double Variable::collapse_tree(Tree *tree) if (tree->left->type != VALUE) return 0.0; tree->type = VALUE; if (arg1 <= 0.0) - error->one("Log of zero/negative value in variable formula"); + error->one(FLERR,"Log of zero/negative value in variable formula"); tree->value = log10(arg1); return tree->value; } @@ -1625,7 +1623,7 @@ double Variable::collapse_tree(Tree *tree) if (tree->left->type != VALUE) return 0.0; tree->type = VALUE; if (arg1 < -1.0 || arg1 > 1.0) - error->one("Arcsin of invalid value in variable formula"); + error->one(FLERR,"Arcsin of invalid value in variable formula"); tree->value = asin(arg1); return tree->value; } @@ -1635,7 +1633,7 @@ double Variable::collapse_tree(Tree *tree) if (tree->left->type != VALUE) return 0.0; tree->type = VALUE; if (arg1 < -1.0 || arg1 > 1.0) - error->one("Arccos of invalid value in variable formula"); + error->one(FLERR,"Arccos of invalid value in variable formula"); tree->value = acos(arg1); return tree->value; } @@ -1664,7 +1662,7 @@ double Variable::collapse_tree(Tree *tree) collapse_tree(tree->middle); if (randomatom == NULL) { int seed = static_cast (collapse_tree(tree->right)); - if (seed <= 0) error->one("Invalid math function in variable formula"); + if (seed <= 0) error->one(FLERR,"Invalid math function in variable formula"); randomatom = new RanMars(lmp,seed+me); } return 0.0; @@ -1673,10 +1671,10 @@ double Variable::collapse_tree(Tree *tree) if (tree->type == NORMAL) { collapse_tree(tree->left); double sigma = collapse_tree(tree->middle); - if (sigma < 0.0) error->one("Invalid math function in variable formula"); + if (sigma < 0.0) error->one(FLERR,"Invalid math function in variable formula"); if (randomatom == NULL) { int seed = static_cast (collapse_tree(tree->right)); - if (seed <= 0) error->one("Invalid math function in variable formula"); + if (seed <= 0) error->one(FLERR,"Invalid math function in variable formula"); randomatom = new RanMars(lmp,seed+me); } return 0.0; @@ -1723,7 +1721,7 @@ double Variable::collapse_tree(Tree *tree) if (tree->left->type != VALUE || tree->right->type != VALUE) return 0.0; tree->type = VALUE; if (ivalue1 <= 0 || ivalue2 <= 0 || ivalue1 <= ivalue2) - error->one("Invalid math function in variable formula"); + error->one(FLERR,"Invalid math function in variable formula"); int lower = update->ntimestep/ivalue1 * ivalue1; int delta = update->ntimestep - lower; if (delta < ivalue2) tree->value = lower+ivalue2; @@ -1739,7 +1737,7 @@ double Variable::collapse_tree(Tree *tree) tree->right->type != VALUE) return 0.0; tree->type = VALUE; if (ivalue1 <= 0 || ivalue2 <= 0 || ivalue3 <= 0 || ivalue2 >= ivalue3) - error->one("Invalid math function in variable formula"); + error->one(FLERR,"Invalid math function in variable formula"); if (update->ntimestep < ivalue1) tree->value = ivalue1; else { int lower = ivalue1; @@ -1768,9 +1766,9 @@ double Variable::collapse_tree(Tree *tree) if (tree->left->type != VALUE || tree->middle->type != VALUE || tree->right->type != VALUE) return 0.0; tree->type = VALUE; - if (arg3 == 0.0) error->one("Invalid math function in variable formula"); + if (arg3 == 0.0) error->one(FLERR,"Invalid math function in variable formula"); double delta = update->ntimestep - update->beginstep; - double omega = 2.0*PI/arg3; + double omega = 2.0*MY_PI/arg3; tree->value = arg1 + arg2*sin(omega*delta*update->dt); return tree->value; } @@ -1782,9 +1780,9 @@ double Variable::collapse_tree(Tree *tree) if (tree->left->type != VALUE || tree->middle->type != VALUE || tree->right->type != VALUE) return 0.0; tree->type = VALUE; - if (arg3 == 0.0) error->one("Invalid math function in variable formula"); + if (arg3 == 0.0) error->one(FLERR,"Invalid math function in variable formula"); double delta = update->ntimestep - update->beginstep; - double omega = 2.0*PI/arg3; + double omega = 2.0*MY_PI/arg3; tree->value = arg1 + arg2*(1.0-cos(omega*delta*update->dt)); return tree->value; } @@ -1826,12 +1824,12 @@ double Variable::eval_tree(Tree *tree, int i) return eval_tree(tree->left,i) * eval_tree(tree->right,i); if (tree->type == DIVIDE) { double denom = eval_tree(tree->right,i); - if (denom == 0.0) error->one("Divide by 0 in variable formula"); + if (denom == 0.0) error->one(FLERR,"Divide by 0 in variable formula"); return eval_tree(tree->left,i) / denom; } if (tree->type == CARAT) { double exponent = eval_tree(tree->right,i); - if (exponent == 0.0) error->one("Power by 0 in variable formula"); + if (exponent == 0.0) error->one(FLERR,"Power by 0 in variable formula"); return pow(eval_tree(tree->left,i),exponent); } if (tree->type == UNARY) return -eval_tree(tree->left,i); @@ -1877,7 +1875,7 @@ double Variable::eval_tree(Tree *tree, int i) if (tree->type == SQRT) { arg1 = eval_tree(tree->left,i); - if (arg1 < 0.0) error->one("Sqrt of negative value in variable formula"); + if (arg1 < 0.0) error->one(FLERR,"Sqrt of negative value in variable formula"); return sqrt(arg1); } if (tree->type == EXP) @@ -1885,13 +1883,13 @@ double Variable::eval_tree(Tree *tree, int i) if (tree->type == LN) { arg1 = eval_tree(tree->left,i); if (arg1 <= 0.0) - error->one("Log of zero/negative value in variable formula"); + error->one(FLERR,"Log of zero/negative value in variable formula"); return log(arg1); } if (tree->type == LOG) { arg1 = eval_tree(tree->left,i); if (arg1 <= 0.0) - error->one("Log of zero/negative value in variable formula"); + error->one(FLERR,"Log of zero/negative value in variable formula"); return log10(arg1); } @@ -1905,13 +1903,13 @@ double Variable::eval_tree(Tree *tree, int i) if (tree->type == ASIN) { arg1 = eval_tree(tree->left,i); if (arg1 < -1.0 || arg1 > 1.0) - error->one("Arcsin of invalid value in variable formula"); + error->one(FLERR,"Arcsin of invalid value in variable formula"); return asin(arg1); } if (tree->type == ACOS) { arg1 = eval_tree(tree->left,i); if (arg1 < -1.0 || arg1 > 1.0) - error->one("Arccos of invalid value in variable formula"); + error->one(FLERR,"Arccos of invalid value in variable formula"); return acos(arg1); } if (tree->type == ATAN) @@ -1924,7 +1922,7 @@ double Variable::eval_tree(Tree *tree, int i) double upper = eval_tree(tree->middle,i); if (randomatom == NULL) { int seed = static_cast (eval_tree(tree->right,i)); - if (seed <= 0) error->one("Invalid math function in variable formula"); + if (seed <= 0) error->one(FLERR,"Invalid math function in variable formula"); randomatom = new RanMars(lmp,seed+me); } return randomatom->uniform()*(upper-lower)+lower; @@ -1932,10 +1930,10 @@ double Variable::eval_tree(Tree *tree, int i) if (tree->type == NORMAL) { double mu = eval_tree(tree->left,i); double sigma = eval_tree(tree->middle,i); - if (sigma < 0.0) error->one("Invalid math function in variable formula"); + if (sigma < 0.0) error->one(FLERR,"Invalid math function in variable formula"); if (randomatom == NULL) { int seed = static_cast (eval_tree(tree->right,i)); - if (seed <= 0) error->one("Invalid math function in variable formula"); + if (seed <= 0) error->one(FLERR,"Invalid math function in variable formula"); randomatom = new RanMars(lmp,seed+me); } return mu + sigma*randomatom->gaussian(); @@ -1961,7 +1959,7 @@ double Variable::eval_tree(Tree *tree, int i) int ivalue1 = static_cast (eval_tree(tree->left,i)); int ivalue2 = static_cast (eval_tree(tree->right,i)); if (ivalue1 <= 0 || ivalue2 <= 0 || ivalue1 <= ivalue2) - error->one("Invalid math function in variable formula"); + error->one(FLERR,"Invalid math function in variable formula"); int lower = update->ntimestep/ivalue1 * ivalue1; int delta = update->ntimestep - lower; if (delta < ivalue2) arg = lower+ivalue2; @@ -1974,7 +1972,7 @@ double Variable::eval_tree(Tree *tree, int i) int ivalue2 = static_cast (eval_tree(tree->middle,i)); int ivalue3 = static_cast (eval_tree(tree->right,i)); if (ivalue1 <= 0 || ivalue2 <= 0 || ivalue3 <= 0 || ivalue2 >= ivalue3) - error->one("Invalid math function in variable formula"); + error->one(FLERR,"Invalid math function in variable formula"); if (update->ntimestep < ivalue1) arg = ivalue1; else { int lower = ivalue1; @@ -1998,9 +1996,9 @@ double Variable::eval_tree(Tree *tree, int i) arg1 = eval_tree(tree->left,i); arg2 = eval_tree(tree->middle,i); arg3 = eval_tree(tree->right,i); - if (arg3 == 0.0) error->one("Invalid math function in variable formula"); + if (arg3 == 0.0) error->one(FLERR,"Invalid math function in variable formula"); double delta = update->ntimestep - update->beginstep; - double omega = 2.0*PI/arg3; + double omega = 2.0*MY_PI/arg3; arg = arg1 + arg2*sin(omega*delta*update->dt); return arg; } @@ -2009,9 +2007,9 @@ double Variable::eval_tree(Tree *tree, int i) arg1 = eval_tree(tree->left,i); arg2 = eval_tree(tree->middle,i); arg3 = eval_tree(tree->right,i); - if (arg3 == 0.0) error->one("Invalid math function in variable formula"); + if (arg3 == 0.0) error->one(FLERR,"Invalid math function in variable formula"); double delta = update->ntimestep - update->beginstep; - double omega = 2.0*PI/arg3; + double omega = 2.0*MY_PI/arg3; arg = arg1 + arg2*(1.0-cos(omega*delta*update->dt)); return arg; } @@ -2068,7 +2066,7 @@ int Variable::find_matching_paren(char *str, int i,char *&contents) else if (str[i] == ')' && ilevel) ilevel--; else if (str[i] == ')') break; } - if (!str[i]) error->all("Invalid syntax in variable formula"); + if (!str[i]) error->all(FLERR,"Invalid syntax in variable formula"); int istop = i; int n = istop - istart - 1; @@ -2093,19 +2091,19 @@ int Variable::int_between_brackets(char *&ptr) while (*ptr && *ptr != ']') { if (!isdigit(*ptr)) - error->all("Non digit character between brackets in variable"); + error->all(FLERR,"Non digit character between brackets in variable"); ptr++; } - if (*ptr != ']') error->all("Mismatched brackets in variable"); - if (ptr == start) error->all("Empty brackets in variable"); + if (*ptr != ']') error->all(FLERR,"Mismatched brackets in variable"); + if (ptr == start) error->all(FLERR,"Empty brackets in variable"); *ptr = '\0'; int index = atoi(start); *ptr = ']'; if (index == 0) - error->all("Index between variable brackets must be positive"); + error->all(FLERR,"Index between variable brackets must be positive"); return index; } @@ -2212,117 +2210,117 @@ int Variable::math_function(char *word, char *contents, Tree **tree, } if (strcmp(word,"sqrt") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = SQRT; else { if (value1 < 0.0) - error->all("Sqrt of negative value in variable formula"); + error->all(FLERR,"Sqrt of negative value in variable formula"); argstack[nargstack++] = sqrt(value1); } } else if (strcmp(word,"exp") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = EXP; else argstack[nargstack++] = exp(value1); } else if (strcmp(word,"ln") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = LN; else { if (value1 <= 0.0) - error->all("Log of zero/negative value in variable formula"); + error->all(FLERR,"Log of zero/negative value in variable formula"); argstack[nargstack++] = log(value1); } } else if (strcmp(word,"log") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = LOG; else { if (value1 <= 0.0) - error->all("Log of zero/negative value in variable formula"); + error->all(FLERR,"Log of zero/negative value in variable formula"); argstack[nargstack++] = log10(value1); } } else if (strcmp(word,"sin") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = SIN; else argstack[nargstack++] = sin(value1); } else if (strcmp(word,"cos") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = COS; else argstack[nargstack++] = cos(value1); } else if (strcmp(word,"tan") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = TAN; else argstack[nargstack++] = tan(value1); } else if (strcmp(word,"asin") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = ASIN; else { if (value1 < -1.0 || value1 > 1.0) - error->all("Arcsin of invalid value in variable formula"); + error->all(FLERR,"Arcsin of invalid value in variable formula"); argstack[nargstack++] = asin(value1); } } else if (strcmp(word,"acos") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = ACOS; else { if (value1 < -1.0 || value1 > 1.0) - error->all("Arccos of invalid value in variable formula"); + error->all(FLERR,"Arccos of invalid value in variable formula"); argstack[nargstack++] = acos(value1); } } else if (strcmp(word,"atan") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = ATAN; else argstack[nargstack++] = atan(value1); } else if (strcmp(word,"atan2") == 0) { - if (narg != 2) error->all("Invalid math function in variable formula"); + if (narg != 2) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = ATAN2; else argstack[nargstack++] = atan2(value1,value2); } else if (strcmp(word,"random") == 0) { - if (narg != 3) error->all("Invalid math function in variable formula"); + if (narg != 3) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = RANDOM; else { if (randomequal == NULL) { int seed = static_cast (value3); - if (seed <= 0) error->all("Invalid math function in variable formula"); + if (seed <= 0) error->all(FLERR,"Invalid math function in variable formula"); randomequal = new RanMars(lmp,seed); } argstack[nargstack++] = randomequal->uniform()*(value2-value1) + value1; } } else if (strcmp(word,"normal") == 0) { - if (narg != 3) error->all("Invalid math function in variable formula"); + if (narg != 3) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = NORMAL; else { if (value2 < 0.0) - error->all("Invalid math function in variable formula"); + error->all(FLERR,"Invalid math function in variable formula"); if (randomequal == NULL) { int seed = static_cast (value3); - if (seed <= 0) error->all("Invalid math function in variable formula"); + if (seed <= 0) error->all(FLERR,"Invalid math function in variable formula"); randomequal = new RanMars(lmp,seed); } argstack[nargstack++] = value1 + value2*randomequal->gaussian(); } } else if (strcmp(word,"ceil") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = CEIL; else argstack[nargstack++] = ceil(value1); } else if (strcmp(word,"floor") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = FLOOR; else argstack[nargstack++] = floor(value1); } else if (strcmp(word,"round") == 0) { - if (narg != 1) error->all("Invalid math function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = ROUND; else argstack[nargstack++] = MYROUND(value1); } else if (strcmp(word,"ramp") == 0) { - if (narg != 2) error->all("Invalid math function in variable formula"); + if (narg != 2) error->all(FLERR,"Invalid math function in variable formula"); if (update->whichflag == 0) - error->all("Cannot use ramp in variable formula between runs"); + error->all(FLERR,"Cannot use ramp in variable formula between runs"); if (tree) newtree->type = RAMP; else { double delta = update->ntimestep - update->beginstep; @@ -2332,13 +2330,13 @@ int Variable::math_function(char *word, char *contents, Tree **tree, } } else if (strcmp(word,"stagger") == 0) { - if (narg != 2) error->all("Invalid math function in variable formula"); + if (narg != 2) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = STAGGER; else { int ivalue1 = static_cast (value1); int ivalue2 = static_cast (value2); if (ivalue1 <= 0 || ivalue2 <= 0 || ivalue1 <= ivalue2) - error->all("Invalid math function in variable formula"); + error->all(FLERR,"Invalid math function in variable formula"); int lower = update->ntimestep/ivalue1 * ivalue1; int delta = update->ntimestep - lower; double value; @@ -2348,14 +2346,14 @@ int Variable::math_function(char *word, char *contents, Tree **tree, } } else if (strcmp(word,"logfreq") == 0) { - if (narg != 3) error->all("Invalid math function in variable formula"); + if (narg != 3) error->all(FLERR,"Invalid math function in variable formula"); if (tree) newtree->type = LOGFREQ; else { int ivalue1 = static_cast (value1); int ivalue2 = static_cast (value2); int ivalue3 = static_cast (value3); if (ivalue1 <= 0 || ivalue2 <= 0 || ivalue3 <= 0 || ivalue2 >= ivalue3) - error->all("Invalid math function in variable formula"); + error->all(FLERR,"Invalid math function in variable formula"); double value; if (update->ntimestep < ivalue1) value = ivalue1; else { @@ -2369,9 +2367,9 @@ int Variable::math_function(char *word, char *contents, Tree **tree, } } else if (strcmp(word,"vdisplace") == 0) { - if (narg != 2) error->all("Invalid math function in variable formula"); + if (narg != 2) error->all(FLERR,"Invalid math function in variable formula"); if (update->whichflag == 0) - error->all("Cannot use vdisplace in variable formula between runs"); + error->all(FLERR,"Cannot use vdisplace in variable formula between runs"); if (tree) newtree->type = VDISPLACE; else { double delta = update->ntimestep - update->beginstep; @@ -2380,29 +2378,29 @@ int Variable::math_function(char *word, char *contents, Tree **tree, } } else if (strcmp(word,"swiggle") == 0) { - if (narg != 3) error->all("Invalid math function in variable formula"); + if (narg != 3) error->all(FLERR,"Invalid math function in variable formula"); if (update->whichflag == 0) - error->all("Cannot use swiggle in variable formula between runs"); + error->all(FLERR,"Cannot use swiggle in variable formula between runs"); if (tree) newtree->type = CWIGGLE; else { if (value3 == 0.0) - error->all("Invalid math function in variable formula"); + error->all(FLERR,"Invalid math function in variable formula"); double delta = update->ntimestep - update->beginstep; - double omega = 2.0*PI/value3; + double omega = 2.0*MY_PI/value3; double value = value1 + value2*sin(omega*delta*update->dt); argstack[nargstack++] = value; } } else if (strcmp(word,"cwiggle") == 0) { - if (narg != 3) error->all("Invalid math function in variable formula"); + if (narg != 3) error->all(FLERR,"Invalid math function in variable formula"); if (update->whichflag == 0) - error->all("Cannot use cwiggle in variable formula between runs"); + error->all(FLERR,"Cannot use cwiggle in variable formula between runs"); if (tree) newtree->type = CWIGGLE; else { if (value3 == 0.0) - error->all("Invalid math function in variable formula"); + error->all(FLERR,"Invalid math function in variable formula"); double delta = update->ntimestep - update->beginstep; - double omega = 2.0*PI/value3; + double omega = 2.0*MY_PI/value3; double value = value1 + value2*(1.0-cos(omega*delta*update->dt)); argstack[nargstack++] = value; } @@ -2477,7 +2475,7 @@ int Variable::group_function(char *word, char *contents, Tree **tree, int igroup = group->find(arg1); if (igroup == -1) - error->all("Group ID in variable formula does not exist"); + error->all(FLERR,"Group ID in variable formula does not exist"); // match word to group function @@ -2486,17 +2484,17 @@ int Variable::group_function(char *word, char *contents, Tree **tree, if (strcmp(word,"count") == 0) { if (narg == 1) value = group->count(igroup); else if (narg == 2) value = group->count(igroup,region_function(arg2)); - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"mass") == 0) { if (narg == 1) value = group->mass(igroup); else if (narg == 2) value = group->mass(igroup,region_function(arg2)); - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"charge") == 0) { if (narg == 1) value = group->charge(igroup); else if (narg == 2) value = group->charge(igroup,region_function(arg2)); - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"xcm") == 0) { atom->check_mass(); @@ -2508,11 +2506,11 @@ int Variable::group_function(char *word, char *contents, Tree **tree, int iregion = region_function(arg3); double masstotal = group->mass(igroup,iregion); group->xcm(igroup,masstotal,xcm,iregion); - } else error->all("Invalid group function in variable formula"); + } else error->all(FLERR,"Invalid group function in variable formula"); if (strcmp(arg2,"x") == 0) value = xcm[0]; else if (strcmp(arg2,"y") == 0) value = xcm[1]; else if (strcmp(arg2,"z") == 0) value = xcm[2]; - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"vcm") == 0) { atom->check_mass(); @@ -2524,34 +2522,34 @@ int Variable::group_function(char *word, char *contents, Tree **tree, int iregion = region_function(arg3); double masstotal = group->mass(igroup,iregion); group->vcm(igroup,masstotal,vcm,iregion); - } else error->all("Invalid group function in variable formula"); + } else error->all(FLERR,"Invalid group function in variable formula"); if (strcmp(arg2,"x") == 0) value = vcm[0]; else if (strcmp(arg2,"y") == 0) value = vcm[1]; else if (strcmp(arg2,"z") == 0) value = vcm[2]; - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"fcm") == 0) { double fcm[3]; if (narg == 2) group->fcm(igroup,fcm); else if (narg == 3) group->fcm(igroup,fcm,region_function(arg3)); - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); if (strcmp(arg2,"x") == 0) value = fcm[0]; else if (strcmp(arg2,"y") == 0) value = fcm[1]; else if (strcmp(arg2,"z") == 0) value = fcm[2]; - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"bound") == 0) { double minmax[6]; if (narg == 2) group->bounds(igroup,minmax); else if (narg == 3) group->bounds(igroup,minmax,region_function(arg3)); - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); if (strcmp(arg2,"xmin") == 0) value = minmax[0]; else if (strcmp(arg2,"xmax") == 0) value = minmax[1]; else if (strcmp(arg2,"ymin") == 0) value = minmax[2]; else if (strcmp(arg2,"ymax") == 0) value = minmax[3]; else if (strcmp(arg2,"zmin") == 0) value = minmax[4]; else if (strcmp(arg2,"zmax") == 0) value = minmax[5]; - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"gyration") == 0) { atom->check_mass(); @@ -2565,12 +2563,12 @@ int Variable::group_function(char *word, char *contents, Tree **tree, double masstotal = group->mass(igroup,iregion); group->xcm(igroup,masstotal,xcm,iregion); value = group->gyration(igroup,masstotal,xcm,iregion); - } else error->all("Invalid group function in variable formula"); + } else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"ke") == 0) { if (narg == 1) value = group->ke(igroup); else if (narg == 2) value = group->ke(igroup,region_function(arg2)); - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"angmom") == 0) { atom->check_mass(); @@ -2584,11 +2582,11 @@ int Variable::group_function(char *word, char *contents, Tree **tree, double masstotal = group->mass(igroup,iregion); group->xcm(igroup,masstotal,xcm,iregion); group->angmom(igroup,xcm,lmom,iregion); - } else error->all("Invalid group function in variable formula"); + } else error->all(FLERR,"Invalid group function in variable formula"); if (strcmp(arg2,"x") == 0) value = lmom[0]; else if (strcmp(arg2,"y") == 0) value = lmom[1]; else if (strcmp(arg2,"z") == 0) value = lmom[2]; - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"torque") == 0) { atom->check_mass(); @@ -2602,11 +2600,11 @@ int Variable::group_function(char *word, char *contents, Tree **tree, double masstotal = group->mass(igroup,iregion); group->xcm(igroup,masstotal,xcm,iregion); group->torque(igroup,xcm,tq,iregion); - } else error->all("Invalid group function in variable formula"); + } else error->all(FLERR,"Invalid group function in variable formula"); if (strcmp(arg2,"x") == 0) value = tq[0]; else if (strcmp(arg2,"y") == 0) value = tq[1]; else if (strcmp(arg2,"z") == 0) value = tq[2]; - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"inertia") == 0) { atom->check_mass(); @@ -2620,14 +2618,14 @@ int Variable::group_function(char *word, char *contents, Tree **tree, double masstotal = group->mass(igroup,iregion); group->xcm(igroup,masstotal,xcm,iregion); group->inertia(igroup,xcm,inertia,iregion); - } else error->all("Invalid group function in variable formula"); + } else error->all(FLERR,"Invalid group function in variable formula"); if (strcmp(arg2,"xx") == 0) value = inertia[0][0]; else if (strcmp(arg2,"yy") == 0) value = inertia[1][1]; else if (strcmp(arg2,"zz") == 0) value = inertia[2][2]; else if (strcmp(arg2,"xy") == 0) value = inertia[0][1]; else if (strcmp(arg2,"yz") == 0) value = inertia[1][2]; else if (strcmp(arg2,"xz") == 0) value = inertia[0][2]; - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } else if (strcmp(word,"omega") == 0) { atom->check_mass(); @@ -2645,11 +2643,11 @@ int Variable::group_function(char *word, char *contents, Tree **tree, group->angmom(igroup,xcm,angmom,iregion); group->inertia(igroup,xcm,inertia,iregion); group->omega(angmom,inertia,omega); - } else error->all("Invalid group function in variable formula"); + } else error->all(FLERR,"Invalid group function in variable formula"); if (strcmp(arg2,"x") == 0) value = omega[0]; else if (strcmp(arg2,"y") == 0) value = omega[1]; else if (strcmp(arg2,"z") == 0) value = omega[2]; - else error->all("Invalid group function in variable formula"); + else error->all(FLERR,"Invalid group function in variable formula"); } delete [] arg1; @@ -2675,7 +2673,7 @@ int Variable::region_function(char *id) { int iregion = domain->find_region(id); if (iregion == -1) - error->all("Region ID in variable formula does not exist"); + error->all(FLERR,"Region ID in variable formula does not exist"); return iregion; } @@ -2743,7 +2741,7 @@ int Variable::special_function(char *word, char *contents, Tree **tree, else if (strcmp(word,"ave") == 0) method = AVE; else if (strcmp(word,"trap") == 0) method = TRAP; - if (narg != 1) error->all("Invalid special function in variable formula"); + if (narg != 1) error->all(FLERR,"Invalid special function in variable formula"); Compute *compute = NULL; Fix *fix = NULL; @@ -2758,12 +2756,12 @@ int Variable::special_function(char *word, char *contents, Tree **tree, } else index = 0; int icompute = modify->find_compute(&arg1[2]); - if (icompute < 0) error->all("Invalid compute ID in variable formula"); + if (icompute < 0) error->all(FLERR,"Invalid compute ID in variable formula"); compute = modify->compute[icompute]; if (index == 0 && compute->vector_flag) { if (update->whichflag == 0) { if (compute->invoked_vector != update->ntimestep) - error->all("Compute used in variable between runs is not current"); + error->all(FLERR,"Compute used in variable between runs is not current"); } else if (!(compute->invoked_flag & INVOKED_VECTOR)) { compute->compute_vector(); compute->invoked_flag |= INVOKED_VECTOR; @@ -2772,18 +2770,18 @@ int Variable::special_function(char *word, char *contents, Tree **tree, nstride = 1; } else if (index && compute->array_flag) { if (index > compute->size_array_cols) - error->all("Variable formula compute array " + error->all(FLERR,"Variable formula compute array " "is accessed out-of-range"); if (update->whichflag == 0) { if (compute->invoked_array != update->ntimestep) - error->all("Compute used in variable between runs is not current"); + error->all(FLERR,"Compute used in variable between runs is not current"); } else if (!(compute->invoked_flag & INVOKED_ARRAY)) { compute->compute_array(); compute->invoked_flag |= INVOKED_ARRAY; } nvec = compute->size_array_rows; nstride = compute->size_array_cols; - } else error->all("Mismatched compute in variable formula"); + } else error->all(FLERR,"Mismatched compute in variable formula"); } else if (strstr(arg1,"f_") == arg1) { ptr1 = strchr(arg1,'['); @@ -2794,23 +2792,23 @@ int Variable::special_function(char *word, char *contents, Tree **tree, } else index = 0; int ifix = modify->find_fix(&arg1[2]); - if (ifix < 0) error->all("Invalid fix ID in variable formula"); + if (ifix < 0) error->all(FLERR,"Invalid fix ID in variable formula"); fix = modify->fix[ifix]; if (index == 0 && fix->vector_flag) { if (update->whichflag > 0 && update->ntimestep % fix->global_freq) - error->all("Fix in variable not computed at compatible time"); + error->all(FLERR,"Fix in variable not computed at compatible time"); nvec = fix->size_vector; nstride = 1; } else if (index && fix->array_flag) { if (index > fix->size_array_cols) - error->all("Variable formula fix array is accessed out-of-range"); + error->all(FLERR,"Variable formula fix array is accessed out-of-range"); if (update->whichflag > 0 && update->ntimestep % fix->global_freq) - error->all("Fix in variable not computed at compatible time"); + error->all(FLERR,"Fix in variable not computed at compatible time"); nvec = fix->size_array_rows; nstride = fix->size_array_cols; - } else error->all("Mismatched fix in variable formula"); + } else error->all(FLERR,"Mismatched fix in variable formula"); - } else error->all("Invalid special function in variable formula"); + } else error->all(FLERR,"Invalid special function in variable formula"); double value = 0.0; if (method == XMIN) value = BIG; @@ -2871,12 +2869,12 @@ int Variable::special_function(char *word, char *contents, Tree **tree, } else if (strcmp(word,"gmask") == 0) { if (tree == NULL) - error->all("Gmask function in equal-style variable formula"); - if (narg != 1) error->all("Invalid special function in variable formula"); + error->all(FLERR,"Gmask function in equal-style variable formula"); + if (narg != 1) error->all(FLERR,"Invalid special function in variable formula"); int igroup = group->find(arg1); if (igroup == -1) - error->all("Group ID in variable formula does not exist"); + error->all(FLERR,"Group ID in variable formula does not exist"); Tree *newtree = new Tree(); newtree->type = GMASK; @@ -2886,8 +2884,8 @@ int Variable::special_function(char *word, char *contents, Tree **tree, } else if (strcmp(word,"rmask") == 0) { if (tree == NULL) - error->all("Rmask function in equal-style variable formula"); - if (narg != 1) error->all("Invalid special function in variable formula"); + error->all(FLERR,"Rmask function in equal-style variable formula"); + if (narg != 1) error->all(FLERR,"Invalid special function in variable formula"); int iregion = region_function(arg1); @@ -2899,12 +2897,12 @@ int Variable::special_function(char *word, char *contents, Tree **tree, } else if (strcmp(word,"grmask") == 0) { if (tree == NULL) - error->all("Grmask function in equal-style variable formula"); - if (narg != 2) error->all("Invalid special function in variable formula"); + error->all(FLERR,"Grmask function in equal-style variable formula"); + if (narg != 2) error->all(FLERR,"Invalid special function in variable formula"); int igroup = group->find(arg1); if (igroup == -1) - error->all("Group ID in variable formula does not exist"); + error->all(FLERR,"Group ID in variable formula does not exist"); int iregion = region_function(arg2); Tree *newtree = new Tree(); @@ -2934,7 +2932,7 @@ void Variable::peratom2global(int flag, char *word, double *argstack, int &nargstack) { if (atom->map_style == 0) - error->all("Indexed per-atom vector in variable formula without atom map"); + error->all(FLERR,"Indexed per-atom vector in variable formula without atom map"); int index = atom->map(id); @@ -2957,7 +2955,7 @@ void Variable::peratom2global(int flag, char *word, else if (strcmp(word,"fy") == 0) mine = atom->f[index][1]; else if (strcmp(word,"fz") == 0) mine = atom->f[index][2]; - else error->one("Invalid atom vector in variable formula"); + else error->one(FLERR,"Invalid atom vector in variable formula"); } else mine = vector[index*nstride]; @@ -3010,7 +3008,7 @@ void Variable::atom_vector(char *word, Tree **tree, Tree **treestack, int &ntreestack) { if (tree == NULL) - error->all("Atom vector in equal-style variable formula"); + error->all(FLERR,"Atom vector in equal-style variable formula"); Tree *newtree = new Tree(); newtree->type = ATOMARRAY; @@ -3061,7 +3059,7 @@ int Variable::is_constant(char *word) double Variable::constant(char *word) { - if (strcmp(word,"PI") == 0) return PI; + if (strcmp(word,"PI") == 0) return MY_PI; return 0.0; } @@ -3077,7 +3075,7 @@ double Variable::numeric(char *str) if (isdigit(str[i])) continue; if (str[i] == '-' || str[i] == '+' || str[i] == '.') continue; if (str[i] == 'e' || str[i] == 'E') continue; - error->all("Expected floating point parameter in variable definition"); + error->all(FLERR,"Expected floating point parameter in variable definition"); } return atof(str); @@ -3093,7 +3091,7 @@ int Variable::inumeric(char *str) int n = strlen(str); for (int i = 0; i < n; i++) { if (isdigit(str[i]) || str[i] == '-' || str[i] == '+') continue; - error->all("Expected integer parameter in variable definition"); + error->all(FLERR,"Expected integer parameter in variable definition"); } return atoi(str); @@ -3163,7 +3161,7 @@ double Variable::evaluate_boolean(char *str) // ---------------- else if (onechar == '(') { - if (expect == OP) error->all("Invalid Boolean syntax in if command"); + if (expect == OP) error->all(FLERR,"Invalid Boolean syntax in if command"); expect = OP; char *contents; @@ -3181,7 +3179,7 @@ double Variable::evaluate_boolean(char *str) // ---------------- } else if (isdigit(onechar) || onechar == '.' || onechar == '-') { - if (expect == OP) error->all("Invalid Boolean syntax in if command"); + if (expect == OP) error->all(FLERR,"Invalid Boolean syntax in if command"); expect = OP; // istop = end of number, including scientific notation @@ -3211,7 +3209,7 @@ double Variable::evaluate_boolean(char *str) } else if (strchr("<>=!&|\0",onechar)) { if (onechar == '=') { if (str[i+1] != '=') - error->all("Invalid Boolean syntax in if command"); + error->all(FLERR,"Invalid Boolean syntax in if command"); op = EQ; i++; } else if (onechar == '!') { @@ -3233,12 +3231,12 @@ double Variable::evaluate_boolean(char *str) } } else if (onechar == '&') { if (str[i+1] != '&') - error->all("Invalid Boolean syntax in if command"); + error->all(FLERR,"Invalid Boolean syntax in if command"); op = AND; i++; } else if (onechar == '|') { if (str[i+1] != '|') - error->all("Invalid Boolean syntax in if command"); + error->all(FLERR,"Invalid Boolean syntax in if command"); op = OR; i++; } else op = DONE; @@ -3250,7 +3248,7 @@ double Variable::evaluate_boolean(char *str) continue; } - if (expect == ARG) error->all("Invalid Boolean syntax in if command"); + if (expect == ARG) error->all(FLERR,"Invalid Boolean syntax in if command"); expect = ARG; // evaluate stack as deep as possible while respecting precedence @@ -3300,10 +3298,10 @@ double Variable::evaluate_boolean(char *str) opstack[nopstack++] = op; - } else error->all("Invalid Boolean syntax in if command"); + } else error->all(FLERR,"Invalid Boolean syntax in if command"); } - if (nopstack) error->all("Invalid Boolean syntax in if command"); - if (nargstack != 1) error->all("Invalid Boolean syntax in if command"); + if (nopstack) error->all(FLERR,"Invalid Boolean syntax in if command"); + if (nargstack != 1) error->all(FLERR,"Invalid Boolean syntax in if command"); return argstack[0]; } diff --git a/src/variable.h b/src/variable.h index 3d2c75e027..aa8ef616fe 100644 --- a/src/variable.h +++ b/src/variable.h @@ -35,7 +35,6 @@ class Variable : protected Pointers { double evaluate_boolean(char *); private: - int me; int nvar; // # of defined variables int maxvar; // max # of variables arrays can hold char **names; // name of each variable @@ -44,13 +43,13 @@ class Variable : protected Pointers { int *which; // next available value for each variable int *pad; // 1 = pad loop/uloop variables with 0s, 0 = no pad char ***data; // str value of each variable's values - double PI; class RanMars *randomequal; // random number generator for equal-style vars class RanMars *randomatom; // random number generator for atom-style vars int precedence[16]; // precedence level of math operators // set length to include OR in enum + int me; struct Tree { // parse tree for atom-style variables double value; diff --git a/src/velocity.cpp b/src/velocity.cpp index c590ece9db..ef95a873a7 100644 --- a/src/velocity.cpp +++ b/src/velocity.cpp @@ -43,9 +43,6 @@ enum{NONE,CONSTANT,EQUAL,ATOM}; #define WARMUP 100 #define SMALL 0.001 -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - /* ---------------------------------------------------------------------- */ Velocity::Velocity(LAMMPS *lmp) : Pointers(lmp) {} @@ -54,12 +51,12 @@ Velocity::Velocity(LAMMPS *lmp) : Pointers(lmp) {} void Velocity::command(int narg, char **arg) { - if (narg < 2) error->all("Illegal velocity command"); + if (narg < 2) error->all(FLERR,"Illegal velocity command"); if (domain->box_exist == 0) - error->all("Velocity command before simulation box is defined"); + error->all(FLERR,"Velocity command before simulation box is defined"); if (atom->natoms == 0) - error->all("Velocity command with no atoms existing"); + error->all(FLERR,"Velocity command with no atoms existing"); // atom masses must all be set @@ -68,7 +65,7 @@ void Velocity::command(int narg, char **arg) // identify group igroup = group->find(arg[0]); - if (igroup == -1) error->all("Could not find velocity group ID"); + if (igroup == -1) error->all(FLERR,"Could not find velocity group ID"); groupbit = group->bitmask[igroup]; // identify style @@ -78,7 +75,7 @@ void Velocity::command(int narg, char **arg) else if (strcmp(arg[1],"scale") == 0) style = SCALE; else if (strcmp(arg[1],"ramp") == 0) style = RAMP; else if (strcmp(arg[1],"zero") == 0) style = ZERO; - else error->all("Illegal velocity command"); + else error->all(FLERR,"Illegal velocity command"); // set defaults @@ -120,7 +117,7 @@ void Velocity::command(int narg, char **arg) void Velocity::init_external(char *extgroup) { igroup = group->find(extgroup); - if (igroup == -1) error->all("Could not find velocity group ID"); + if (igroup == -1) error->all(FLERR,"Could not find velocity group ID"); groupbit = group->bitmask[igroup]; temperature = NULL; @@ -138,7 +135,7 @@ void Velocity::create(double t_desired, int seed) { int i; - if (seed <= 0) error->all("Illegal velocity create command"); + if (seed <= 0) error->all(FLERR,"Illegal velocity create command"); // if temperature = NULL, create a new ComputeTemp with the velocity group @@ -157,7 +154,7 @@ void Velocity::create(double t_desired, int seed) // warn if groups don't match if (igroup != temperature->igroup && comm->me == 0) - error->warning("Mismatch between velocity and compute groups"); + error->warning(FLERR,"Mismatch between velocity and compute groups"); temperature->init(); // store a copy of current velocities @@ -214,11 +211,11 @@ void Velocity::create(double t_desired, int seed) // error check if (atom->natoms > MAXSMALLINT) - error->all("Too big a problem to use velocity create loop all"); + error->all(FLERR,"Too big a problem to use velocity create loop all"); if (atom->tag_enable == 0) - error->all("Cannot use velocity create loop all unless atoms have IDs"); + error->all(FLERR,"Cannot use velocity create loop all unless atoms have IDs"); if (atom->tag_consecutive() == 0) - error->all("Atom IDs must be consecutive for velocity create loop all"); + error->all(FLERR,"Atom IDs must be consecutive for velocity create loop all"); // loop over all atoms in system // generate RNGs for all atoms, only assign to ones I own @@ -379,19 +376,19 @@ void Velocity::set(int narg, char **arg) if (xstyle && !xstr) { if (scale_flag && domain->lattice == NULL) - error->all("Use of velocity with undefined lattice"); + error->all(FLERR,"Use of velocity with undefined lattice"); if (scale_flag) xscale = domain->lattice->xlattice; vx *= xscale; } if (ystyle && !ystr) { if (scale_flag && domain->lattice == NULL) - error->all("Use of velocity with undefined lattice"); + error->all(FLERR,"Use of velocity with undefined lattice"); if (scale_flag) yscale = domain->lattice->ylattice; vy *= yscale; } if (zstyle && !zstr) { if (scale_flag && domain->lattice == NULL) - error->all("Use of velocity with undefined lattice"); + error->all(FLERR,"Use of velocity with undefined lattice"); if (scale_flag) zscale = domain->lattice->zlattice; vz *= zscale; } @@ -400,24 +397,24 @@ void Velocity::set(int narg, char **arg) if (xstr) { xvar = input->variable->find(xstr); - if (xvar < 0) error->all("Variable name for velocity set does not exist"); + if (xvar < 0) error->all(FLERR,"Variable name for velocity set does not exist"); if (input->variable->equalstyle(xvar)) xstyle = EQUAL; else if (input->variable->atomstyle(xvar)) xstyle = ATOM; - else error->all("Variable for velocity set is invalid style"); + else error->all(FLERR,"Variable for velocity set is invalid style"); } if (ystr) { yvar = input->variable->find(ystr); - if (yvar < 0) error->all("Variable name for velocity set does not exist"); + if (yvar < 0) error->all(FLERR,"Variable name for velocity set does not exist"); if (input->variable->equalstyle(yvar)) ystyle = EQUAL; else if (input->variable->atomstyle(yvar)) ystyle = ATOM; - else error->all("Variable for velocity set is invalid style"); + else error->all(FLERR,"Variable for velocity set is invalid style"); } if (zstr) { zvar = input->variable->find(zstr); - if (zvar < 0) error->all("Variable name for velocity set does not exist"); + if (zvar < 0) error->all(FLERR,"Variable name for velocity set does not exist"); if (input->variable->equalstyle(zvar)) zstyle = EQUAL; else if (input->variable->atomstyle(zvar)) zstyle = ATOM; - else error->all("Variable for velocity set is invalid style"); + else error->all(FLERR,"Variable for velocity set is invalid style"); } if (xstyle == ATOM || ystyle == ATOM || zstyle == ATOM) @@ -430,9 +427,9 @@ void Velocity::set(int narg, char **arg) if (domain->dimension == 2) { if (zstyle == CONSTANT && vz != 0.0) - error->all("Cannot set non-zero z velocity for 2d simulation"); + error->all(FLERR,"Cannot set non-zero z velocity for 2d simulation"); if (zstyle == EQUAL || zstyle == ATOM) - error->all("Cannot set variable z velocity for 2d simulation"); + error->all(FLERR,"Cannot set variable z velocity for 2d simulation"); } // allocate vfield array if necessary @@ -527,7 +524,7 @@ void Velocity::scale(int narg, char **arg) // warn if groups don't match if (igroup != temperature->igroup && comm->me == 0) - error->warning("Mismatch between velocity and compute groups"); + error->warning(FLERR,"Mismatch between velocity and compute groups"); temperature->init(); // scale temp to desired value @@ -549,7 +546,7 @@ void Velocity::ramp(int narg, char **arg) // set scale factors if (scale_flag && domain->lattice == NULL) - error->all("Use of velocity with undefined lattice"); + error->all(FLERR,"Use of velocity with undefined lattice"); if (scale_flag) { xscale = domain->lattice->xlattice; @@ -564,10 +561,10 @@ void Velocity::ramp(int narg, char **arg) if (strcmp(arg[0],"vx") == 0) v_dim = 0; else if (strcmp(arg[0],"vy") == 0) v_dim = 1; else if (strcmp(arg[0],"vz") == 0) v_dim = 2; - else error->all("Illegal velocity command"); + else error->all(FLERR,"Illegal velocity command"); if (v_dim == 2 && domain->dimension == 2) - error->all("Velocity ramp in z for a 2d problem"); + error->all(FLERR,"Velocity ramp in z for a 2d problem"); double v_lo,v_hi; if (v_dim == 0) { @@ -585,7 +582,7 @@ void Velocity::ramp(int narg, char **arg) if (strcmp(arg[3],"x") == 0) coord_dim = 0; else if (strcmp(arg[3],"y") == 0) coord_dim = 1; else if (strcmp(arg[3],"z") == 0) coord_dim = 2; - else error->all("Illegal velocity command"); + else error->all(FLERR,"Illegal velocity command"); double coord_lo,coord_hi; if (coord_dim == 0) { @@ -628,7 +625,7 @@ void Velocity::zero(int narg, char **arg) { if (strcmp(arg[0],"linear") == 0) zero_momentum(); else if (strcmp(arg[0],"angular") == 0) zero_rotation(); - else error->all("Illegal velocity command"); + else error->all(FLERR,"Illegal velocity command"); } /* ---------------------------------------------------------------------- @@ -637,7 +634,7 @@ void Velocity::zero(int narg, char **arg) void Velocity::rescale(double t_old, double t_new) { - if (t_old == 0.0) error->all("Attempting to rescale a 0.0 temperature"); + if (t_old == 0.0) error->all(FLERR,"Attempting to rescale a 0.0 temperature"); double factor = sqrt(t_new/t_old); @@ -662,7 +659,7 @@ void Velocity::zero_momentum() // cannot have 0 atoms in group if (group->count(igroup) == 0) - error->all("Cannot zero momentum of 0 atoms"); + error->all(FLERR,"Cannot zero momentum of 0 atoms"); // compute velocity of center-of-mass of group @@ -695,7 +692,7 @@ void Velocity::zero_rotation() // cannot have 0 atoms in group if (group->count(igroup) == 0) - error->all("Cannot zero momentum of 0 atoms"); + error->all(FLERR,"Cannot zero momentum of 0 atoms"); // compute omega (angular velocity) of group around center-of-mass @@ -742,58 +739,58 @@ void Velocity::zero_rotation() void Velocity::options(int narg, char **arg) { - if (narg < 0) error->all("Illegal velocity command"); + if (narg < 0) error->all(FLERR,"Illegal velocity command"); int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"dist") == 0) { - if (iarg+2 > narg) error->all("Illegal velocity command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal velocity command"); if (strcmp(arg[iarg+1],"uniform") == 0) dist_flag = 0; else if (strcmp(arg[iarg+1],"gaussian") == 0) dist_flag = 1; - else error->all("Illegal velocity command"); + else error->all(FLERR,"Illegal velocity command"); iarg += 2; } else if (strcmp(arg[iarg],"sum") == 0) { - if (iarg+2 > narg) error->all("Illegal velocity command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal velocity command"); if (strcmp(arg[iarg+1],"no") == 0) sum_flag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) sum_flag = 1; - else error->all("Illegal velocity command"); + else error->all(FLERR,"Illegal velocity command"); iarg += 2; } else if (strcmp(arg[iarg],"mom") == 0) { - if (iarg+2 > narg) error->all("Illegal velocity command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal velocity command"); if (strcmp(arg[iarg+1],"no") == 0) momentum_flag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) momentum_flag = 1; - else error->all("Illegal velocity command"); + else error->all(FLERR,"Illegal velocity command"); iarg += 2; } else if (strcmp(arg[iarg],"rot") == 0) { - if (iarg+2 > narg) error->all("Illegal velocity command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal velocity command"); if (strcmp(arg[iarg+1],"no") == 0) rotation_flag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) rotation_flag = 1; - else error->all("Illegal velocity command"); + else error->all(FLERR,"Illegal velocity command"); iarg += 2; } else if (strcmp(arg[iarg],"temp") == 0) { - if (iarg+2 > narg) error->all("Illegal velocity command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal velocity command"); int icompute; for (icompute = 0; icompute < modify->ncompute; icompute++) if (strcmp(arg[iarg+1],modify->compute[icompute]->id) == 0) break; if (icompute == modify->ncompute) - error->all("Could not find velocity temperature ID"); + error->all(FLERR,"Could not find velocity temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) - error->all("Velocity temperature ID does not compute temperature"); + error->all(FLERR,"Velocity temperature ID does not compute temperature"); iarg += 2; } else if (strcmp(arg[iarg],"loop") == 0) { - if (iarg+2 > narg) error->all("Illegal velocity command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal velocity command"); if (strcmp(arg[iarg+1],"all") == 0) loop_flag = ALL; else if (strcmp(arg[iarg+1],"local") == 0) loop_flag = LOCAL; else if (strcmp(arg[iarg+1],"geom") == 0) loop_flag = GEOM; - else error->all("Illegal velocity command"); + else error->all(FLERR,"Illegal velocity command"); iarg += 2; } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all("Illegal velocity command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal velocity command"); if (strcmp(arg[iarg+1],"box") == 0) scale_flag = 0; else if (strcmp(arg[iarg+1],"lattice") == 0) scale_flag = 1; - else error->all("Illegal velocity command"); + else error->all(FLERR,"Illegal velocity command"); iarg += 2; - } else error->all("Illegal velocity command"); + } else error->all(FLERR,"Illegal velocity command"); } } diff --git a/src/verlet.cpp b/src/verlet.cpp index d23b7d738a..c6d53e5240 100644 --- a/src/verlet.cpp +++ b/src/verlet.cpp @@ -49,7 +49,7 @@ void Verlet::init() // warn if no fixes if (modify->nfix == 0 && comm->me == 0) - error->warning("No fixes defined, atoms won't move"); + error->warning(FLERR,"No fixes defined, atoms won't move"); // virial_style: // 1 if computed explicitly by pair->compute via sum over pair interactions @@ -63,12 +63,16 @@ void Verlet::init() ev_setup(); // set flags for what arrays to clear in force_clear() - // need to clear torques,erforce if arrays exists + // need to clear additionals arrays if they exist torqueflag = 0; if (atom->torque_flag) torqueflag = 1; erforceflag = 0; if (atom->erforce_flag) erforceflag = 1; + e_flag = 0; + if (atom->e_flag) e_flag = 1; + rho_flag = 0; + if (atom->rho_flag) rho_flag = 1; // orthogonal vs triclinic simulation box @@ -304,6 +308,8 @@ void Verlet::force_clear() { int i; + if (external_force_clear) return; + // clear force on all particles // if either newton flag is set, also include ghosts @@ -311,9 +317,10 @@ void Verlet::force_clear() int nall; if (force->newton) nall = atom->nlocal + atom->nghost; else nall = atom->nlocal; + int ntot = nall * comm->nthreads; double **f = atom->f; - for (i = 0; i < nall; i++) { + for (i = 0; i < ntot; i++) { f[i][0] = 0.0; f[i][1] = 0.0; f[i][2] = 0.0; @@ -330,8 +337,17 @@ void Verlet::force_clear() if (erforceflag) { double *erforce = atom->erforce; - for (i = 0; i < nall; i++) - erforce[i] = 0.0; + for (i = 0; i < nall; i++) erforce[i] = 0.0; + } + + if (e_flag) { + double *de = atom->de; + for (i = 0; i < nall; i++) de[i] = 0.0; + } + + if (rho_flag) { + double *drho = atom->drho; + for (i = 0; i < nall; i++) drho[i] = 0.0; } // neighbor includegroup flag is set @@ -359,8 +375,17 @@ void Verlet::force_clear() if (erforceflag) { double *erforce = atom->erforce; - for (i = 0; i < nall; i++) - erforce[i] = 0.0; + for (i = 0; i < nall; i++) erforce[i] = 0.0; + } + + if (e_flag) { + double *de = atom->de; + for (i = 0; i < nall; i++) de[i] = 0.0; + } + + if (rho_flag) { + double *drho = atom->drho; + for (i = 0; i < nall; i++) drho[i] = 0.0; } if (force->newton) { @@ -383,8 +408,17 @@ void Verlet::force_clear() if (erforceflag) { double *erforce = atom->erforce; - for (i = atom->nlocal; i < nall; i++) - erforce[i] = 0.0; + for (i = atom->nlocal; i < nall; i++) erforce[i] = 0.0; + } + + if (e_flag) { + double *de = atom->de; + for (i = 0; i < nall; i++) de[i] = 0.0; + } + + if (rho_flag) { + double *drho = atom->drho; + for (i = 0; i < nall; i++) drho[i] = 0.0; } } } diff --git a/src/verlet.h b/src/verlet.h index 8b8c90b7a9..327f72b833 100644 --- a/src/verlet.h +++ b/src/verlet.h @@ -36,8 +36,8 @@ class Verlet : public Integrate { protected: int triclinic; // 0 if domain is orthog, 1 if triclinic - int torqueflag; // zero out arrays every step - int erforceflag; + int torqueflag,erforceflag; + int e_flag,rho_flag; void force_clear(); }; diff --git a/src/version.h b/src/version.h index c6703557dd..0e3e8cc989 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "20 Aug 2011" +#define LAMMPS_VERSION "25 Oct 2011" diff --git a/src/write_restart.cpp b/src/write_restart.cpp index 260dcbe3da..6a909ae107 100644 --- a/src/write_restart.cpp +++ b/src/write_restart.cpp @@ -38,9 +38,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B)) ? (A) : (B) -#define MAX(A,B) ((A) > (B)) ? (A) : (B) - // same as read_restart.cpp and tools/restart2data.cpp enum{VERSION,SMALLINT,TAGINT,BIGINT, @@ -76,8 +73,8 @@ WriteRestart::WriteRestart(LAMMPS *lmp) : Pointers(lmp) void WriteRestart::command(int narg, char **arg) { if (domain->box_exist == 0) - error->all("Write_restart command before simulation box is defined"); - if (narg != 1) error->all("Illegal write_restart command"); + error->all(FLERR,"Write_restart command before simulation box is defined"); + if (narg != 1) error->all(FLERR,"Illegal write_restart command"); // if filename contains a "*", replace with current timestep @@ -135,7 +132,7 @@ void WriteRestart::write(char *file) bigint nblocal = atom->nlocal; MPI_Allreduce(&nblocal,&natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); if (natoms != atom->natoms && output->thermo->lostflag == ERROR) - error->all("Atom count is inconsistent, cannot write restart file"); + error->all(FLERR,"Atom count is inconsistent, cannot write restart file"); // check if filename contains "%" @@ -158,7 +155,7 @@ void WriteRestart::write(char *file) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open restart file %s",hfile); - error->one(str); + error->one(FLERR,str); } if (multiproc) delete [] hfile; } @@ -284,7 +281,7 @@ void WriteRestart::write(char *file) if (fp == NULL) { char str[128]; sprintf(str,"Cannot open restart file %s",perproc); - error->one(str); + error->one(FLERR,str); } delete [] perproc; fwrite(&send_size,sizeof(int),1,fp); diff --git a/tools/amber2lmp/amber2lammps.py b/tools/amber2lmp/amber2lammps.py index c47a17cfe6..08bdf38d9e 100644 --- a/tools/amber2lmp/amber2lammps.py +++ b/tools/amber2lmp/amber2lammps.py @@ -1,993 +1,993 @@ -#! /usr/bin/python - -# -# This is amber2lammps, a program written by Keir E. Novik to convert -# Amber files to Lammps files. -# -# Copyright 1999, 2000 Keir E. Novik; all rights reserved. -# -# Modified by Vikas Varshney, U Akron, 5 July 2005, as described in README -# - -#============================================================ - -def Pop(S, I=-1): - 'Pop item I from list' - X = S[I] - del S[I] - return X - -#============================================================ - -class Lammps: - - #-------------------------------------------------------- - - def Dump(self): - 'Write out contents of self (intended for debugging)' - Name_list = self.__dict__.keys() - Name_list.sort() - for Name in Name_list: - print Name + ':', self.__dict__[Name] - - #-------------------------------------------------------- - - def Write_data(self, Basename, Item_list): - 'Write the Lammps data to file (used by Write_Lammps)' - import os, sys - - Filename = 'data.' + Basename - - Dir_list = os.listdir('.') - i = 1 - while Filename in Dir_list: - Filename = 'data' + `i` + '.' + Basename - i = i +1 - del i - - print 'Writing', Filename + '...', - sys.stdout.flush() - - try: - F = open(Filename, 'w') - except IOError, Detail: - print '(error:', Detail[1] + '!)' - return - - try: - F.writelines(Item_list) - except IOError, Detail: - print '(error:', Detail[1] + '!)' - F.close() - return - - F.close() - print 'done.' - - #-------------------------------------------------------- - - def Write_Lammps(self, Basename): - 'Write the Lammps data file, ignoring blank sections' - import string - L = [] - - L.append('LAMMPS data file for ' + self.name + '\n\n') - - L.append(`self.atoms` + ' atoms\n') - L.append(`self.bonds` + ' bonds\n') - L.append(`self.angles` + ' angles\n') - L.append(`self.dihedrals` + ' dihedrals\n') - L.append(`self.impropers` + ' impropers\n\n') - - L.append(`self.atom_types` + ' atom types\n') - if self.bonds > 0: - L.append(`self.bond_types` + ' bond types\n') - if self.angles > 0: - L.append(`self.angle_types` + ' angle types\n') - if self.dihedrals > 0: - L.append(`self.dihedral_types` + ' dihedral types\n') - L.append('\n') - - L.append(`self.xlo` + ' ' + `self.xhi` + ' xlo xhi\n') - L.append(`self.ylo` + ' ' + `self.yhi` + ' ylo yhi\n') - L.append(`self.zlo` + ' ' + `self.zhi` + ' zlo zhi\n\n') - - if self.atom_types != 0: - L.append('Masses\n\n') - for i in range(self.atom_types): - L.append(`i+1` + ' ' + `self.Masses[i]` + '\n') - L.append('\n') - - L.append('Pair Coeffs\n\n') - for i in range(self.atom_types): - L.append(`i+1`) - for j in range(len(self.Nonbond_Coeffs[0])): - L.append(' ' + `self.Nonbond_Coeffs[i][j]`) - L.append('\n') - L.append('\n') - - if self.bonds != 0 and self.bond_types != 0: - L.append('Bond Coeffs\n\n') - for i in range(self.bond_types): - L.append(`i+1`) - for j in range(len(self.Bond_Coeffs[0])): - L.append(' ' + `self.Bond_Coeffs[i][j]`) - L.append('\n') - L.append('\n') - - if self.angles != 0 and self.angle_types != 0: - L.append('Angle Coeffs\n\n') - for i in range(self.angle_types): - L.append(`i+1`) - for j in range(len(self.Angle_Coeffs[0])): - L.append(' ' + `self.Angle_Coeffs[i][j]`) - L.append('\n') - L.append('\n') - - if self.dihedrals != 0 and self.dihedral_types != 0: - L.append('Dihedral Coeffs\n\n') - for i in range(self.dihedral_types): - L.append(`i+1`) - for j in range(len(self.Dihedral_Coeffs[0])): - L.append(' ' + `self.Dihedral_Coeffs[i][j]`) - L.append('\n') - L.append('\n') - - if self.atoms != 0: - L.append('Atoms\n\n') - for i in range(self.atoms): - L.append(`i+1`) - for j in range(len(self.Atoms[0])): - L.append(' ' + `self.Atoms[i][j]`) - L.append('\n') - L.append('\n') - - if self.bonds != 0 and self.bond_types != 0: - L.append('Bonds\n\n') - for i in range(self.bonds): - L.append(`i+1`) - for j in range(len(self.Bonds[0])): - L.append(' ' + `self.Bonds[i][j]`) - L.append('\n') - L.append('\n') - - if self.angles != 0 and self.angle_types != 0: - L.append('Angles\n\n') - for i in range(self.angles): - L.append(`i+1`) - for j in range(len(self.Angles[0])): - L.append(' ' + `self.Angles[i][j]`) - L.append('\n') - L.append('\n') - - if self.dihedrals != 0 and self.dihedral_types != 0: - L.append('Dihedrals\n\n') - for i in range(self.dihedrals): - L.append(`i+1`) - for j in range(len(self.Dihedrals[0])): - L.append(' ' + `self.Dihedrals[i][j]`) - L.append('\n') - L.append('\n') - - self.Write_data(Basename, L) - -#============================================================ - -class Amber: - def __init__(self): - 'Initialise the Amber class' - self.CRD_is_read = 0 - self.TOP_is_read = 0 - - #-------------------------------------------------------- - - def Dump(self): - 'Write out contents of self (intended for debugging)' - Name_list = self.__dict__.keys() - Name_list.sort() - for Name in Name_list: - print Name + ':', self.__dict__[Name] - - #-------------------------------------------------------- - - def Coerce_to_Lammps(self): - 'Return the Amber data converted to Lammps format' - - import math - - if self.CRD_is_read and self.TOP_is_read: - l = Lammps() - print 'Converting...', - - l.name = self.ITITL - l.atoms = self.NATOM - l.bonds = self.NBONH + self.MBONA - l.angles = self.NTHETH + self.MTHETA - l.dihedrals = self.NPHIH + self.MPHIA - l.impropers = 0 - l.atom_types = self.NTYPES - l.bond_types = self.NUMBND - l.angle_types = self.NUMANG - l.dihedral_types = self.NPTRA - - Shift = 0 - if self.__dict__.has_key('BOX'): - l.xlo = 0.0 - l.xhi = self.BOX[0] - l.ylo = 0.0 - l.yhi = self.BOX[1] - l.zlo = 0.0 - l.zhi = self.BOX[2] - if (l.xlo > min(self.X)) or (l.xhi < max(self.X)) or \ - (l.ylo > min(self.Y)) or (l.yhi < max(self.Y)) or \ - (l.zlo > min(self.Z)) or (l.zhi < max(self.Z)): - # Vikas Modification: Disabling Shifting. This means I am intend to send exact coordinates of each atom and let LAMMPS - # take care of imaging into periodic image cells. If one wants to shift all atoms in the periodic box, - # please uncomment the below 2 lines. - print '(warning: Currently not shifting the atoms to the periodic box)' - #Shift = 1 - else: - print '(warning: Guessing at periodic box!)', - l.xlo = min(self.X) - l.xhi = max(self.X) - l.ylo = min(self.Y) - l.yhi = max(self.Y) - l.zlo = min(self.Z) - l.zhi = max(self.Z) - - # This doesn't check duplicate values - l.Masses = [] - for i in range(l.atom_types): - l.Masses.append(0) - for i in range(self.NATOM): - l.Masses[self.IAC[i] - 1] = self.AMASS[i] - - l.Nonbond_Coeffs = [] - for i in range(self.NTYPES): - l.Nonbond_Coeffs.append([0,0]) - for i in range(self.NTYPES): - j = self.ICO[i * (self.NTYPES + 1)] - 1 - if self.CN1[j] == 0.0: - l.Nonbond_Coeffs[i][0] = 0.0 - else: - l.Nonbond_Coeffs[i][0] = \ - 0.25 * (self.CN2[j])**2 / self.CN1[j] - if self.CN2[j] == 0.0: - l.Nonbond_Coeffs[i][1] = 0.0 - else: - l.Nonbond_Coeffs[i][1] = \ - (self.CN1[j] / self.CN2[j])**(1.0/6.0) - - l.Bond_Coeffs = [] - for i in range(self.NUMBND): - l.Bond_Coeffs.append([0,0]) - for i in range(self.NUMBND): - l.Bond_Coeffs[i][0] = self.RK[i] - l.Bond_Coeffs[i][1] = self.REQ[i] - - l.Angle_Coeffs = [] - for i in range(self.NUMANG): - l.Angle_Coeffs.append([0,0]) - for i in range(self.NUMANG): - l.Angle_Coeffs[i][0] = self.TK[i] - l.Angle_Coeffs[i][1] = (180/math.pi) * self.TEQ[i] - - l.Dihedral_Coeffs = [] - for i in range(self.NPTRA): - l.Dihedral_Coeffs.append([0,0,0]) - for i in range(self.NPTRA): - l.Dihedral_Coeffs[i][0] = self.PK[i] - if self.PHASE[i] == 0: - l.Dihedral_Coeffs[i][1] = 1 - else: - l.Dihedral_Coeffs[i][1] = -1 - l.Dihedral_Coeffs[i][2] = int(self.PN[i]) - - l.Atoms = [] - for i in range(self.NATOM): - x = self.X[i] - y = self.Y[i] - z = self.Z[i] - if Shift: - while x < l.xlo: - x = x + self.BOX[0] - while x > l.xhi: - x = x - self.BOX[0] - while y < l.ylo: - y = y + self.BOX[1] - while y > l.yhi: - y = y - self.BOX[1] - while z < l.zlo: - z = z + self.BOX[2] - while z > l.zhi: - z = z - self.BOX[2] - l.Atoms.append([0, self.IAC[i], self.CHRG[i]/18.2223, \ - x, y, z]) - - l.Bonds = [] - for i in range(l.bonds): - l.Bonds.append([0,0,0]) - for i in range(self.NBONH): - l.Bonds[i][0] = self.ICBH[i] - l.Bonds[i][1] = abs(self.IBH[i])/3 + 1 - l.Bonds[i][2] = abs(self.JBH[i])/3 + 1 - for i in range(self.NBONA): - l.Bonds[self.NBONH + i][0] = self.ICB[i] - l.Bonds[self.NBONH + i][1] = abs(self.IB[i])/3 + 1 - l.Bonds[self.NBONH + i][2] = abs(self.JB[i])/3 + 1 - - l.Angles = [] - for i in range(l.angles): - l.Angles.append([0,0,0,0]) - for i in range(self.NTHETH): - l.Angles[i][0] = self.ICTH[i] - l.Angles[i][1] = abs(self.ITH[i])/3 + 1 - l.Angles[i][2] = abs(self.JTH[i])/3 + 1 - l.Angles[i][3] = abs(self.KTH[i])/3 + 1 - for i in range(self.NTHETA): - l.Angles[self.NTHETH + i][0] = self.ICT[i] - l.Angles[self.NTHETH + i][1] = abs(self.IT[i])/3 + 1 - l.Angles[self.NTHETH + i][2] = abs(self.JT[i])/3 + 1 - l.Angles[self.NTHETH + i][3] = abs(self.KT[i])/3 + 1 - - l.Dihedrals = [] - for i in range(l.dihedrals): - l.Dihedrals.append([0,0,0,0,0]) - for i in range(self.NPHIH): - l.Dihedrals[i][0] = self.ICPH[i] - l.Dihedrals[i][1] = abs(self.IPH[i])/3 + 1 - l.Dihedrals[i][2] = abs(self.JPH[i])/3 + 1 - l.Dihedrals[i][3] = abs(self.KPH[i])/3 + 1 - l.Dihedrals[i][4] = abs(self.LPH[i])/3 + 1 - for i in range(self.NPHIA): - l.Dihedrals[self.NPHIH + i][0] = self.ICP[i] - l.Dihedrals[self.NPHIH + i][1] = abs(self.IP[i])/3 + 1 - l.Dihedrals[self.NPHIH + i][2] = abs(self.JP[i])/3 + 1 - l.Dihedrals[self.NPHIH + i][3] = abs(self.KP[i])/3 + 1 - l.Dihedrals[self.NPHIH + i][4] = abs(self.LP[i])/3 + 1 - - print 'done.' - return l - else: - print '(Error: Not all the Amber data has been read!)' - - #-------------------------------------------------------- - - def Read_data(self, Filename): - 'Read the filename, returning a list of strings' - - import string, sys - - print 'Reading', Filename + '...', - sys.stdout.flush() - - try: - F = open(Filename) - except IOError, Detail: - print '(error:', Detail[1] + '!)' - return - - try: - Lines = F.readlines() - except IOError, Detail: - print '(error:', Detail[1] + '!)' - F.close() - return - - F.close() - - # If the first line is empty, use the Basename - if Filename[-4:] == '.crd': - if string.split(Lines[0]) == []: # This line corresponds to TITLE name in CRD file - Basename = Filename[:string.find(Filename, '.')] - Item_list = [Basename] - print 'Warning: Title not present... Assigning Basename as Title' - else: - Item_list = [] - else: - if string.split(Lines[3]) == []: # This line corresponds to TITLE name in TOPOLOGY file - Basename = Filename[:string.find(Filename, '.')] - Item_list = [Basename] - print 'Warning: Title not present... Assigning Basename as Title' - else: - Item_list = [] - - for Line in Lines: - if Line[0]!='%': #Vikas' Modification: This condition ignores all the lines starting with % in the topology file. - Item_list.extend(string.split(Line)) - - return Item_list - - #-------------------------------------------------------- - - def Read_CRD(self, Basename): - 'Read the Amber coordinate/restart (.crd) file' - - # The optional velocities and periodic box size are not yet parsed. - - Item_list = self.Read_data(Basename + '.crd') - - if Item_list == None: - return - elif len(Item_list) < 2: - print '(error: File too short!)' - return - - # Parse the data - if self.__dict__.has_key('ITITL'): - if Pop(Item_list,0) != self.ITITL: - print '(warning: ITITL differs!)', - else: - self.ITITL = Pop(Item_list,0) - print self.ITITL #Vikas Modification : Priting the Title - - if self.__dict__.has_key('NATOM'): - if eval(Pop(Item_list,0)) != self.NATOM: - print '(error: NATOM differs!)' - return - else: - self.NATOM = eval(Pop(Item_list,0)) - print self.NATOM # Vikas' Modification: Printing number of atoms just to make sure that the program is reading the correct value. - - #if len(Item_list) == 1 + 3 * self.NATOM: - # Vikas' Modification: I changed the condition. - if (len(Item_list)%3) != 0: - self.TIME = eval(Pop(Item_list,0)) - else: - self.TIME = 0 - print self.TIME # Vikas' Modification : Printing simulation time, just to make sure that the program is readint the correct value. - if len(Item_list) < 3 * self.NATOM: - print '(error: File too short!)' - return - - self.X = [] - self.Y = [] - self.Z = [] - for i in range(self.NATOM): - self.X.append(eval(Pop(Item_list,0))) - self.Y.append(eval(Pop(Item_list,0))) - self.Z.append(eval(Pop(Item_list,0))) - - if (self.NATOM == 1) and len(Item_list): - print '(warning: Ambiguity!)', - - if len(Item_list) >= 3 * self.NATOM: - self.VX = [] - self.VY = [] - self.VZ = [] - for i in range(self.NATOM): - self.VX.append(eval(Pop(Item_list,0))) - self.VY.append(eval(Pop(Item_list,0))) - self.VZ.append(eval(Pop(Item_list,0))) - - if len(Item_list) >= 3: - self.BOX = [] - for i in range(3): - self.BOX.append(eval(Pop(Item_list,0))) - - if len(Item_list): - print '(warning: File too large!)', - - print 'done.' - self.CRD_is_read = 1 - - #-------------------------------------------------------- - - def Read_TOP(self, Basename): - 'Read the Amber parameter/topology (.top) file' - Item_list = self.Read_data(Basename + '.top') - - if Item_list == None: - return - elif len(Item_list) < 31: - print '(error: File too short!)' - return - - # Parse the data - if self.__dict__.has_key('ITITL'): - if Pop(Item_list,0) != self.ITITL: - print '(warning: ITITL differs!)' - else: - self.ITITL = Pop(Item_list,0) - print self.ITITL # Printing Self Title - - if self.__dict__.has_key('NATOM'): - if eval(Pop(Item_list,0)) != self.NATOM: - print '(error: NATOM differs!)' - return - else: - self.NATOM = eval(Pop(Item_list,0)) - print self.NATOM # Printing total number of atoms just to make sure that thing are going right - self.NTYPES = eval(Pop(Item_list,0)) - self.NBONH = eval(Pop(Item_list,0)) - self.MBONA = eval(Pop(Item_list,0)) - self.NTHETH = eval(Pop(Item_list,0)) - self.MTHETA = eval(Pop(Item_list,0)) - self.NPHIH = eval(Pop(Item_list,0)) - self.MPHIA = eval(Pop(Item_list,0)) - self.NHPARM = eval(Pop(Item_list,0)) - self.NPARM = eval(Pop(Item_list,0)) - self.NEXT = eval(Pop(Item_list,0)) - self.NRES = eval(Pop(Item_list,0)) - self.NBONA = eval(Pop(Item_list,0)) - self.NTHETA = eval(Pop(Item_list,0)) - self.NPHIA = eval(Pop(Item_list,0)) - self.NUMBND = eval(Pop(Item_list,0)) - self.NUMANG = eval(Pop(Item_list,0)) - self.NPTRA = eval(Pop(Item_list,0)) - self.NATYP = eval(Pop(Item_list,0)) - self.NPHB = eval(Pop(Item_list,0)) - self.IFPERT = eval(Pop(Item_list,0)) - self.NBPER = eval(Pop(Item_list,0)) - self.NGPER = eval(Pop(Item_list,0)) - self.NDPER = eval(Pop(Item_list,0)) - self.MBPER = eval(Pop(Item_list,0)) - self.MGPER = eval(Pop(Item_list,0)) - self.MDPER = eval(Pop(Item_list,0)) - self.IFBOX = eval(Pop(Item_list,0)) - self.NMXRS = eval(Pop(Item_list,0)) - self.IFCAP = eval(Pop(Item_list,0)) - - #.................................................... - - if len(Item_list) < 5 * self.NATOM + self.NTYPES**2 + \ - 2*(self.NRES + self.NUMBND + self.NUMANG) + \ - 3*self.NPTRA + self.NATYP: - print '(error: File too short!)' - return -1 - - self.IGRAPH = [] - Pop(Item_list,0) - - # A little kludge is needed here, since the IGRAPH strings are - # not separated by spaces if 4 characters in length. - for i in range(self.NATOM): - if len(Item_list[0]) > 4: - Item_list.insert(1, Item_list[0][4:]) - Item_list.insert(1, Item_list[0][0:4]) - del Item_list[0] - self.IGRAPH.append(Pop(Item_list,0)) - - # Vikas' Modification : In the following section, I am printing out each quantity which is currently being read from the topology file. - print 'Reading Charges...' - self.CHRG = [] - for i in range(self.NATOM): - self.CHRG.append(eval(Pop(Item_list,0))) - - print 'Reading Atomic Masses...' - self.AMASS = [] - for i in range(self.NATOM): - self.AMASS.append(eval(Pop(Item_list,0))) - - print 'Reading Atom Types...' - self.IAC = [] - for i in range(self.NATOM): - self.IAC.append(eval(Pop(Item_list,0))) - - print 'Reading Excluded Atoms...' - self.NUMEX = [] - for i in range(self.NATOM): - self.NUMEX.append(eval(Pop(Item_list,0))) - - print 'Reading Non-bonded Parameter Index...' - self.ICO = [] - for i in range(self.NTYPES**2): - self.ICO.append(eval(Pop(Item_list,0))) - - print 'Reading Residue Labels...' - self.LABRES = [] - for i in range(self.NRES): - self.LABRES.append(Pop(Item_list,0)) - - print 'Reading Residues Starting Pointers...' - self.IPRES = [] - for i in range(self.NRES): - self.IPRES.append(eval(Pop(Item_list,0))) - - print 'Reading Bond Force Constants...' - self.RK = [] - for i in range(self.NUMBND): - self.RK.append(eval(Pop(Item_list,0))) - - print 'Reading Equilibrium Bond Values...' - self.REQ = [] - for i in range(self.NUMBND): - self.REQ.append(eval(Pop(Item_list,0))) - - print 'Reading Angle Force Constants...' - self.TK = [] - for i in range(self.NUMANG): - self.TK.append(eval(Pop(Item_list,0))) - - print 'Reading Equilibrium Angle Values...' - self.TEQ = [] - for i in range(self.NUMANG): - self.TEQ.append(eval(Pop(Item_list,0))) - - print 'Reading Dihedral Force Constants...' - self.PK = [] - for i in range(self.NPTRA): - self.PK.append(eval(Pop(Item_list,0))) - - print 'Reading Dihedral Periodicity...' - self.PN = [] - for i in range(self.NPTRA): - self.PN.append(eval(Pop(Item_list,0))) - - print 'Reading Dihedral Phase...' - self.PHASE = [] - for i in range(self.NPTRA): - self.PHASE.append(eval(Pop(Item_list,0))) - - print 'Reading Solty...' #I think this is currently not used in AMBER. Check it out, though - self.SOLTY = [] - for i in range(self.NATYP): - self.SOLTY.append(eval(Pop(Item_list,0))) - - #.................................................... - - if len(Item_list) < 2 * self.NTYPES * (self.NTYPES + 1) / 2: - print '(error: File too short!)' - return -1 - - print 'Reading LJ A Coefficient...' - self.CN1 = [] - for i in range(self.NTYPES * (self.NTYPES + 1) / 2): - self.CN1.append(eval(Pop(Item_list,0))) - - print 'Reading LJ B Coefficient...' - self.CN2 = [] - for i in range(self.NTYPES * (self.NTYPES + 1) / 2): - self.CN2.append(eval(Pop(Item_list,0))) - - #.................................................... - - if len(Item_list) < 3 * (self.NBONH + self.NBONA) + \ - 4 * (self.NTHETH + self.NTHETA) + 5 * (self.NPHIH + self.NPHIA): - print '(error: File too short!)' - return -1 - - print 'Reading Bonds which include hydrogen...' - self.IBH = [] - self.JBH = [] - self.ICBH = [] - for i in range(self.NBONH): - self.IBH.append(eval(Pop(Item_list,0))) - self.JBH.append(eval(Pop(Item_list,0))) - self.ICBH.append(eval(Pop(Item_list,0))) - - print 'Reading Bonds which dont include hydrogen...' - self.IB = [] - self.JB = [] - self.ICB = [] - for i in range(self.NBONA): - self.IB.append(eval(Pop(Item_list,0))) - self.JB.append(eval(Pop(Item_list,0))) - self.ICB.append(eval(Pop(Item_list,0))) - - print 'Reading Angles which include hydrogen...' - self.ITH = [] - self.JTH = [] - self.KTH = [] - self.ICTH = [] - for i in range(self.NTHETH): - self.ITH.append(eval(Pop(Item_list,0))) - self.JTH.append(eval(Pop(Item_list,0))) - self.KTH.append(eval(Pop(Item_list,0))) - self.ICTH.append(eval(Pop(Item_list,0))) - - print 'Reading Angles which dont include hydrogen...' - self.IT = [] - self.JT = [] - self.KT = [] - self.ICT = [] - for i in range(self.NTHETA): - self.IT.append(eval(Pop(Item_list,0))) - self.JT.append(eval(Pop(Item_list,0))) - self.KT.append(eval(Pop(Item_list,0))) - self.ICT.append(eval(Pop(Item_list,0))) - - print 'Reading Dihedrals which include hydrogen...' - self.IPH = [] - self.JPH = [] - self.KPH = [] - self.LPH = [] - self.ICPH = [] - for i in range(self.NPHIH): - self.IPH.append(eval(Pop(Item_list,0))) - self.JPH.append(eval(Pop(Item_list,0))) - self.KPH.append(eval(Pop(Item_list,0))) - self.LPH.append(eval(Pop(Item_list,0))) - self.ICPH.append(eval(Pop(Item_list,0))) - - print 'Reading Dihedrals which dont include hydrogen...' - self.IP = [] - self.JP = [] - self.KP = [] - self.LP = [] - self.ICP = [] - for i in range(self.NPHIA): - self.IP.append(eval(Pop(Item_list,0))) - self.JP.append(eval(Pop(Item_list,0))) - self.KP.append(eval(Pop(Item_list,0))) - self.LP.append(eval(Pop(Item_list,0))) - self.ICP.append(eval(Pop(Item_list,0))) - - #.................................................... - - if len(Item_list) < self.NEXT + 3 * self.NPHB + 4 * self.NATOM: - print '(error: File too short!)' - return -1 - - print 'Reading Excluded Atom List...' - self.NATEX = [] - for i in range(self.NEXT): - self.NATEX.append(eval(Pop(Item_list,0))) - - print 'Reading H-Bond A Coefficient, corresponding to r**12 term for all possible types...' - self.ASOL = [] - for i in range(self.NPHB): - self.ASOL.append(eval(Pop(Item_list,0))) - - print 'Reading H-Bond B Coefficient, corresponding to r**10 term for all possible types...' - self.BSOL = [] - for i in range(self.NPHB): - self.BSOL.append(eval(Pop(Item_list,0))) - - print 'Reading H-Bond Cut...' # I think it is not being used nowadays - self.HBCUT = [] - for i in range(self.NPHB): - self.HBCUT.append(eval(Pop(Item_list,0))) - - print 'Reading Amber Atom Types for each atom...' - self.ISYMBL = [] - for i in range(self.NATOM): - self.ISYMBL.append(Pop(Item_list,0)) - - print 'Reading Tree Chain Classification...' - self.ITREE = [] - for i in range(self.NATOM): - self.ITREE.append(Pop(Item_list,0)) - - print 'Reading Join Array: Tree joining information' # Currently unused in Sander, an AMBER module - self.JOIN = [] - for i in range(self.NATOM): - self.JOIN.append(eval(Pop(Item_list,0))) - - print 'Reading IRotate...' # Currently unused in Sander and Gibbs - self.IROTAT = [] - for i in range(self.NATOM): - self.IROTAT.append(eval(Pop(Item_list,0))) - - #.................................................... - - if self.IFBOX > 0: - if len(Item_list) < 3: - print '(error: File too short!)' - return -1 - - print 'Reading final residue which is part of solute...' - self.IPTRES = eval(Pop(Item_list,0)) - print 'Reading total number of molecules...' - self.NSPM = eval(Pop(Item_list,0)) - print 'Reading first solvent moleule index...' - self.NSPSOL = eval(Pop(Item_list,0)) - - if len(Item_list) < self.NSPM + 4: - print '(error: File too short!)' - return -1 - - print 'Reading atom per molecule...' - self.NSP = [] - for i in range(self.NSPM): - self.NSP.append(eval(Pop(Item_list,0))) - - self.BETA = eval(Pop(Item_list,0)) - - print 'Reading Box Dimensions...' - if self.__dict__.has_key('BOX'): - BOX = [] - for i in range(3): - BOX.append(eval(Pop(Item_list,0))) - for i in range(3): - if BOX[i] != self.BOX[i]: - print '(warning: BOX differs!)', - break - del BOX - else: - self.BOX = [] - for i in range(3): - self.BOX.append(eval(Pop(Item_list,0))) - - #.................................................... - - if self.IFCAP > 0: - if len(Item_list) < 5: - print '(error: File too short!)' - return -1 - print 'Reading ICAP variables::: For details, refer to online AMBER format manual' - self.NATCAP = eval(Pop(Item_list,0)) - self.CUTCAP = eval(Pop(Item_list,0)) - self.XCAP = eval(Pop(Item_list,0)) - self.YCAP = eval(Pop(Item_list,0)) - self.ZCAP = eval(Pop(Item_list,0)) - - #.................................................... - - if self.IFPERT > 0: - if len(Item_list) < 4 * self.NBPER + 5 * self.NGPER + \ - 6 * self.NDPER + self.NRES + 6 * self.NATOM: - print '(error: File too short!)' - return -1 - - print 'Reading perturb variables, 1. Bond, 2. Angles, 3. Dihedrals, etc etc.::: For details, refer to online AMBER format manual' - self.IBPER = [] - self.JBPER = [] - for i in range(self.NBPER): - self.IBPER.append(eval(Pop(Item_list,0))) - self.JBPER.append(eval(Pop(Item_list,0))) - - self.ICBPER = [] - for i in range(2 * self.NBPER): - self.ICBPER.append(eval(Pop(Item_list,0))) - - self.ITPER = [] - self.JTPER = [] - self.KTPER = [] - for i in range(self.NGPER): - self.ITPER.append(eval(Pop(Item_list,0))) - self.JTPER.append(eval(Pop(Item_list,0))) - self.KTPER.append(eval(Pop(Item_list,0))) - - self.ICTPER = [] - for i in range(2 * self.NGPER): - self.ICTPER.append(eval(Pop(Item_list,0))) - - self.IPPER = [] - self.JPPER = [] - self.KPPER = [] - self.LPPER = [] - for i in range(self.NDPER): - self.IPPER.append(eval(Pop(Item_list,0))) - self.JPPER.append(eval(Pop(Item_list,0))) - self.KPPER.append(eval(Pop(Item_list,0))) - self.LPPER.append(eval(Pop(Item_list,0))) - - self.ICPPER = [] - for i in range(2 * self.NDPER): - self.ICPPER.append(eval(Pop(Item_list,0))) - - LABRES = [] - for i in range(self.NRES): - LABRES.append(Pop(Item_list,0)) - for i in range(self.NRES): - if LABRES[i] != self.LABRES[i]: - print '(warning: BOX differs!)', - break - - self.IGRPER = [] - for i in range(self.NATOM): - self.IGRPER.append(eval(Pop(Item_list,0))) - - self.ISMPER = [] - for i in range(self.NATOM): - self.ISMPER.append(eval(Pop(Item_list,0))) - - self.ALMPER = [] - for i in range(self.NATOM): - self.ALMPER.append(eval(Pop(Item_list,0))) - - self.IAPER = [] - for i in range(self.NATOM): - self.IAPER.append(eval(Pop(Item_list,0))) - - self.IACPER = [] - for i in range(self.NATOM): - self.IACPER.append(eval(Pop(Item_list,0))) - - self.CGPER = [] - for i in range(self.NATOM): - self.CGPER.append(eval(Pop(Item_list,0))) - - #.................................................... - - self.IPOL = 0 - if self.IPOL == 1: - if len(Item_list) < self.NATOM: - print '(error: File too short!)' - return -1 - print 'Reading Polarizability Data. For details, refer to online AMBER format manual' - self.ATPOL = [] - for i in range(self.NATOM): - self.ATPOL.append(eval(Pop(Item_list,0))) - - if self.IFPERT == 1: - if len(Item_list) < self.NATOM: - print '(error: File too short!)' - return -1 - self.ATPOL1 = [] - for i in range(self.NATOM): - self.ATPOL1.append(eval(Pop(Item_list,0))) - - #.................................................... - - if len(Item_list): - print '(warning: File too large!)', - - print 'done.' - self.TOP_is_read = 1 - -#============================================================ - -def Find_Amber_files(): - 'Look for sets of Amber files to process' - '''If not passed anything on the command line, look for pairs of - Amber files (.crd and .top) in the current directory. For - each set if there is no corresponding Lammps file (data.), or it is - older than any of the Amber files, add its basename to a list of - strings. This list is returned by the function''' - - # Date and existence checks not yet implemented - - import os, sys - - Basename_list = [] - - # Extract basenames from command line - for Name in sys.argv[1:]: - if Name[-4:] == '.crd': - Basename_list.append(Name[:-4]) - else: - if Name[-4:] == '.top': - Basename_list.append(Name[:-4]) - else: - Basename_list.append(Name) - - # Remove duplicate basenames - for Basename in Basename_list[:]: - while Basename_list.count(Basename) > 1: - Basename_list.remove(Basename) - - if Basename_list == []: - print 'Looking for Amber files...', - Dir_list = os.listdir('.') - Dir_list.sort() - for File in Dir_list: - if File[-4:] == '.top': - Basename = File[:-4] - if (Basename + '.crd') in Dir_list: - Basename_list.append(Basename) - if Basename_list != []: - print 'found', - for i in range(len(Basename_list)-1): - print Basename_list[i] + ',', - print Basename_list[-1] + '\n' - - if Basename_list == []: - print 'none.\n' - - return Basename_list - -#============================================================ - -def Convert_Amber_files(): - 'Handle the whole conversion process' - print - print 'Welcome to amber2lammps, a program to convert Amber files to Lammps format!' - print - Basename_list = Find_Amber_files() - for Basename in Basename_list: - a = Amber() - a.Read_CRD(Basename) - if a.CRD_is_read: - a.Read_TOP(Basename) - if a.TOP_is_read: - l = a.Coerce_to_Lammps() - l.Write_Lammps(Basename) - del l - del a - print - -#============================================================ - -Convert_Amber_files() +#! /usr/bin/python + +# +# This is amber2lammps, a program written by Keir E. Novik to convert +# Amber files to Lammps files. +# +# Copyright 1999, 2000 Keir E. Novik; all rights reserved. +# +# Modified by Vikas Varshney, U Akron, 5 July 2005, as described in README +# Bug Fixed :Third argument in Dihedral Coeffs section is an integer - Ketan S Khare September 26, 2011 + +#============================================================ + +def Pop(S, I=-1): + 'Pop item I from list' + X = S[I] + del S[I] + return X + +#============================================================ + +class Lammps: + + #-------------------------------------------------------- + + def Dump(self): + 'Write out contents of self (intended for debugging)' + Name_list = self.__dict__.keys() + Name_list.sort() + for Name in Name_list: + print Name + ':', self.__dict__[Name] + + #-------------------------------------------------------- + + def Write_data(self, Basename, Item_list): + 'Write the Lammps data to file (used by Write_Lammps)' + import os, sys + + Filename = 'data.' + Basename + + Dir_list = os.listdir('.') + i = 1 + while Filename in Dir_list: + Filename = 'data' + `i` + '.' + Basename + i = i +1 + del i + + print 'Writing', Filename + '...', + sys.stdout.flush() + + try: + F = open(Filename, 'w') + except IOError, Detail: + print '(error:', Detail[1] + '!)' + return + + try: + F.writelines(Item_list) + except IOError, Detail: + print '(error:', Detail[1] + '!)' + F.close() + return + + F.close() + print 'done.' + + #-------------------------------------------------------- + + def Write_Lammps(self, Basename): + 'Write the Lammps data file, ignoring blank sections' + import string + L = [] + + L.append('LAMMPS data file for ' + self.name + '\n\n') + + L.append(`self.atoms` + ' atoms\n') + L.append(`self.bonds` + ' bonds\n') + L.append(`self.angles` + ' angles\n') + L.append(`self.dihedrals` + ' dihedrals\n') + L.append(`self.impropers` + ' impropers\n\n') + + L.append(`self.atom_types` + ' atom types\n') + if self.bonds > 0: + L.append(`self.bond_types` + ' bond types\n') + if self.angles > 0: + L.append(`self.angle_types` + ' angle types\n') + if self.dihedrals > 0: + L.append(`self.dihedral_types` + ' dihedral types\n') + L.append('\n') + + L.append(`self.xlo` + ' ' + `self.xhi` + ' xlo xhi\n') + L.append(`self.ylo` + ' ' + `self.yhi` + ' ylo yhi\n') + L.append(`self.zlo` + ' ' + `self.zhi` + ' zlo zhi\n\n') + + if self.atom_types != 0: + L.append('Masses\n\n') + for i in range(self.atom_types): + L.append(`i+1` + ' ' + `self.Masses[i]` + '\n') + L.append('\n') + + L.append('Pair Coeffs\n\n') + for i in range(self.atom_types): + L.append(`i+1`) + for j in range(len(self.Nonbond_Coeffs[0])): + L.append(' ' + `self.Nonbond_Coeffs[i][j]`) + L.append('\n') + L.append('\n') + + if self.bonds != 0 and self.bond_types != 0: + L.append('Bond Coeffs\n\n') + for i in range(self.bond_types): + L.append(`i+1`) + for j in range(len(self.Bond_Coeffs[0])): + L.append(' ' + `self.Bond_Coeffs[i][j]`) + L.append('\n') + L.append('\n') + + if self.angles != 0 and self.angle_types != 0: + L.append('Angle Coeffs\n\n') + for i in range(self.angle_types): + L.append(`i+1`) + for j in range(len(self.Angle_Coeffs[0])): + L.append(' ' + `self.Angle_Coeffs[i][j]`) + L.append('\n') + L.append('\n') + + if self.dihedrals != 0 and self.dihedral_types != 0: + L.append('Dihedral Coeffs\n\n') + for i in range(self.dihedral_types): + L.append(`i+1`) + for j in range(len(self.Dihedral_Coeffs[0])): + L.append(' ' + `self.Dihedral_Coeffs[i][j]`) + L.append('\n') + L.append('\n') + + if self.atoms != 0: + L.append('Atoms\n\n') + for i in range(self.atoms): + L.append(`i+1`) + for j in range(len(self.Atoms[0])): + L.append(' ' + `self.Atoms[i][j]`) + L.append('\n') + L.append('\n') + + if self.bonds != 0 and self.bond_types != 0: + L.append('Bonds\n\n') + for i in range(self.bonds): + L.append(`i+1`) + for j in range(len(self.Bonds[0])): + L.append(' ' + `self.Bonds[i][j]`) + L.append('\n') + L.append('\n') + + if self.angles != 0 and self.angle_types != 0: + L.append('Angles\n\n') + for i in range(self.angles): + L.append(`i+1`) + for j in range(len(self.Angles[0])): + L.append(' ' + `self.Angles[i][j]`) + L.append('\n') + L.append('\n') + + if self.dihedrals != 0 and self.dihedral_types != 0: + L.append('Dihedrals\n\n') + for i in range(self.dihedrals): + L.append(`i+1`) + for j in range(len(self.Dihedrals[0])): + L.append(' ' + `self.Dihedrals[i][j]`) + L.append('\n') + L.append('\n') + + self.Write_data(Basename, L) + +#============================================================ + +class Amber: + def __init__(self): + 'Initialise the Amber class' + self.CRD_is_read = 0 + self.TOP_is_read = 0 + + #-------------------------------------------------------- + + def Dump(self): + 'Write out contents of self (intended for debugging)' + Name_list = self.__dict__.keys() + Name_list.sort() + for Name in Name_list: + print Name + ':', self.__dict__[Name] + + #-------------------------------------------------------- + + def Coerce_to_Lammps(self): + 'Return the Amber data converted to Lammps format' + + import math + + if self.CRD_is_read and self.TOP_is_read: + l = Lammps() + print 'Converting...', + + l.name = self.ITITL + l.atoms = self.NATOM + l.bonds = self.NBONH + self.MBONA + l.angles = self.NTHETH + self.MTHETA + l.dihedrals = self.NPHIH + self.MPHIA + l.impropers = 0 + l.atom_types = self.NTYPES + l.bond_types = self.NUMBND + l.angle_types = self.NUMANG + l.dihedral_types = self.NPTRA + + Shift = 0 + if self.__dict__.has_key('BOX'): + l.xlo = 0.0 + l.xhi = self.BOX[0] + l.ylo = 0.0 + l.yhi = self.BOX[1] + l.zlo = 0.0 + l.zhi = self.BOX[2] + if (l.xlo > min(self.X)) or (l.xhi < max(self.X)) or \ + (l.ylo > min(self.Y)) or (l.yhi < max(self.Y)) or \ + (l.zlo > min(self.Z)) or (l.zhi < max(self.Z)): + # Vikas Modification: Disabling Shifting. This means I am intend to send exact coordinates of each atom and let LAMMPS + # take care of imaging into periodic image cells. If one wants to shift all atoms in the periodic box, + # please uncomment the below 2 lines. + print '(warning: Currently not shifting the atoms to the periodic box)' + #Shift = 1 + else: + print '(warning: Guessing at periodic box!)', + l.xlo = min(self.X) + l.xhi = max(self.X) + l.ylo = min(self.Y) + l.yhi = max(self.Y) + l.zlo = min(self.Z) + l.zhi = max(self.Z) + + # This doesn't check duplicate values + l.Masses = [] + for i in range(l.atom_types): + l.Masses.append(0) + for i in range(self.NATOM): + l.Masses[self.IAC[i] - 1] = self.AMASS[i] + + l.Nonbond_Coeffs = [] + for i in range(self.NTYPES): + l.Nonbond_Coeffs.append([0,0]) + for i in range(self.NTYPES): + j = self.ICO[i * (self.NTYPES + 1)] - 1 + if self.CN1[j] == 0.0: + l.Nonbond_Coeffs[i][0] = 0.0 + else: + l.Nonbond_Coeffs[i][0] = \ + 0.25 * (self.CN2[j])**2 / self.CN1[j] + if self.CN2[j] == 0.0: + l.Nonbond_Coeffs[i][1] = 0.0 + else: + l.Nonbond_Coeffs[i][1] = \ + (self.CN1[j] / self.CN2[j])**(1.0/6.0) + + l.Bond_Coeffs = [] + for i in range(self.NUMBND): + l.Bond_Coeffs.append([0,0]) + for i in range(self.NUMBND): + l.Bond_Coeffs[i][0] = self.RK[i] + l.Bond_Coeffs[i][1] = self.REQ[i] + + l.Angle_Coeffs = [] + for i in range(self.NUMANG): + l.Angle_Coeffs.append([0,0]) + for i in range(self.NUMANG): + l.Angle_Coeffs[i][0] = self.TK[i] + l.Angle_Coeffs[i][1] = (180/math.pi) * self.TEQ[i] + + l.Dihedral_Coeffs = [] + for i in range(self.NPTRA): + l.Dihedral_Coeffs.append([0,0,0]) + for i in range(self.NPTRA): + l.Dihedral_Coeffs[i][0] = self.PK[i] + if self.PHASE[i] == 0: + l.Dihedral_Coeffs[i][1] = 1 + else: + l.Dihedral_Coeffs[i][1] = -1 + l.Dihedral_Coeffs[i][2] = int(self.PN[i]) + + l.Atoms = [] + for i in range(self.NATOM): + x = self.X[i] + y = self.Y[i] + z = self.Z[i] + if Shift: + while x < l.xlo: + x = x + self.BOX[0] + while x > l.xhi: + x = x - self.BOX[0] + while y < l.ylo: + y = y + self.BOX[1] + while y > l.yhi: + y = y - self.BOX[1] + while z < l.zlo: + z = z + self.BOX[2] + while z > l.zhi: + z = z - self.BOX[2] + l.Atoms.append([0, self.IAC[i], self.CHRG[i]/18.2223, \ + x, y, z]) + + l.Bonds = [] + for i in range(l.bonds): + l.Bonds.append([0,0,0]) + for i in range(self.NBONH): + l.Bonds[i][0] = self.ICBH[i] + l.Bonds[i][1] = abs(self.IBH[i])/3 + 1 + l.Bonds[i][2] = abs(self.JBH[i])/3 + 1 + for i in range(self.NBONA): + l.Bonds[self.NBONH + i][0] = self.ICB[i] + l.Bonds[self.NBONH + i][1] = abs(self.IB[i])/3 + 1 + l.Bonds[self.NBONH + i][2] = abs(self.JB[i])/3 + 1 + + l.Angles = [] + for i in range(l.angles): + l.Angles.append([0,0,0,0]) + for i in range(self.NTHETH): + l.Angles[i][0] = self.ICTH[i] + l.Angles[i][1] = abs(self.ITH[i])/3 + 1 + l.Angles[i][2] = abs(self.JTH[i])/3 + 1 + l.Angles[i][3] = abs(self.KTH[i])/3 + 1 + for i in range(self.NTHETA): + l.Angles[self.NTHETH + i][0] = self.ICT[i] + l.Angles[self.NTHETH + i][1] = abs(self.IT[i])/3 + 1 + l.Angles[self.NTHETH + i][2] = abs(self.JT[i])/3 + 1 + l.Angles[self.NTHETH + i][3] = abs(self.KT[i])/3 + 1 + + l.Dihedrals = [] + for i in range(l.dihedrals): + l.Dihedrals.append([0,0,0,0,0]) + for i in range(self.NPHIH): + l.Dihedrals[i][0] = self.ICPH[i] + l.Dihedrals[i][1] = abs(self.IPH[i])/3 + 1 + l.Dihedrals[i][2] = abs(self.JPH[i])/3 + 1 + l.Dihedrals[i][3] = abs(self.KPH[i])/3 + 1 + l.Dihedrals[i][4] = abs(self.LPH[i])/3 + 1 + for i in range(self.NPHIA): + l.Dihedrals[self.NPHIH + i][0] = self.ICP[i] + l.Dihedrals[self.NPHIH + i][1] = abs(self.IP[i])/3 + 1 + l.Dihedrals[self.NPHIH + i][2] = abs(self.JP[i])/3 + 1 + l.Dihedrals[self.NPHIH + i][3] = abs(self.KP[i])/3 + 1 + l.Dihedrals[self.NPHIH + i][4] = abs(self.LP[i])/3 + 1 + + print 'done.' + return l + else: + print '(Error: Not all the Amber data has been read!)' + + #-------------------------------------------------------- + + def Read_data(self, Filename): + 'Read the filename, returning a list of strings' + + import string, sys + + print 'Reading', Filename + '...', + sys.stdout.flush() + + try: + F = open(Filename) + except IOError, Detail: + print '(error:', Detail[1] + '!)' + return + + try: + Lines = F.readlines() + except IOError, Detail: + print '(error:', Detail[1] + '!)' + F.close() + return + + F.close() + + # If the first line is empty, use the Basename + if Filename[-4:] == '.crd': + if string.split(Lines[0]) == []: # This line corresponds to TITLE name in CRD file + Basename = Filename[:string.find(Filename, '.')] + Item_list = [Basename] + print 'Warning: Title not present... Assigning Basename as Title' + else: + Item_list = [] + else: + if string.split(Lines[3]) == []: # This line corresponds to TITLE name in TOPOLOGY file + Basename = Filename[:string.find(Filename, '.')] + Item_list = [Basename] + print 'Warning: Title not present... Assigning Basename as Title' + else: + Item_list = [] + + for Line in Lines: + if Line[0]!='%': #Vikas' Modification: This condition ignores all the lines starting with % in the topology file. + Item_list.extend(string.split(Line)) + + return Item_list + + #-------------------------------------------------------- + + def Read_CRD(self, Basename): + 'Read the Amber coordinate/restart (.crd) file' + + # The optional velocities and periodic box size are not yet parsed. + + Item_list = self.Read_data(Basename + '.crd') + + if Item_list == None: + return + elif len(Item_list) < 2: + print '(error: File too short!)' + return + + # Parse the data + if self.__dict__.has_key('ITITL'): + if Pop(Item_list,0) != self.ITITL: + print '(warning: ITITL differs!)', + else: + self.ITITL = Pop(Item_list,0) + print self.ITITL #Vikas Modification : Priting the Title + + if self.__dict__.has_key('NATOM'): + if eval(Pop(Item_list,0)) != self.NATOM: + print '(error: NATOM differs!)' + return + else: + self.NATOM = eval(Pop(Item_list,0)) + print self.NATOM # Vikas' Modification: Printing number of atoms just to make sure that the program is reading the correct value. + + #if len(Item_list) == 1 + 3 * self.NATOM: + # Vikas' Modification: I changed the condition. + if (len(Item_list)%3) != 0: + self.TIME = eval(Pop(Item_list,0)) + else: + self.TIME = 0 + print self.TIME # Vikas' Modification : Printing simulation time, just to make sure that the program is readint the correct value. + if len(Item_list) < 3 * self.NATOM: + print '(error: File too short!)' + return + + self.X = [] + self.Y = [] + self.Z = [] + for i in range(self.NATOM): + self.X.append(eval(Pop(Item_list,0))) + self.Y.append(eval(Pop(Item_list,0))) + self.Z.append(eval(Pop(Item_list,0))) + + if (self.NATOM == 1) and len(Item_list): + print '(warning: Ambiguity!)', + + if len(Item_list) >= 3 * self.NATOM: + self.VX = [] + self.VY = [] + self.VZ = [] + for i in range(self.NATOM): + self.VX.append(eval(Pop(Item_list,0))) + self.VY.append(eval(Pop(Item_list,0))) + self.VZ.append(eval(Pop(Item_list,0))) + + if len(Item_list) >= 3: + self.BOX = [] + for i in range(3): + self.BOX.append(eval(Pop(Item_list,0))) + + if len(Item_list): + print '(warning: File too large!)', + + print 'done.' + self.CRD_is_read = 1 + + #-------------------------------------------------------- + + def Read_TOP(self, Basename): + 'Read the Amber parameter/topology (.top) file' + Item_list = self.Read_data(Basename + '.top') + + if Item_list == None: + return + elif len(Item_list) < 31: + print '(error: File too short!)' + return + + # Parse the data + if self.__dict__.has_key('ITITL'): + if Pop(Item_list,0) != self.ITITL: + print '(warning: ITITL differs!)' + else: + self.ITITL = Pop(Item_list,0) + print self.ITITL # Printing Self Title + + if self.__dict__.has_key('NATOM'): + if eval(Pop(Item_list,0)) != self.NATOM: + print '(error: NATOM differs!)' + return + else: + self.NATOM = eval(Pop(Item_list,0)) + print self.NATOM # Printing total number of atoms just to make sure that thing are going right + self.NTYPES = eval(Pop(Item_list,0)) + self.NBONH = eval(Pop(Item_list,0)) + self.MBONA = eval(Pop(Item_list,0)) + self.NTHETH = eval(Pop(Item_list,0)) + self.MTHETA = eval(Pop(Item_list,0)) + self.NPHIH = eval(Pop(Item_list,0)) + self.MPHIA = eval(Pop(Item_list,0)) + self.NHPARM = eval(Pop(Item_list,0)) + self.NPARM = eval(Pop(Item_list,0)) + self.NEXT = eval(Pop(Item_list,0)) + self.NRES = eval(Pop(Item_list,0)) + self.NBONA = eval(Pop(Item_list,0)) + self.NTHETA = eval(Pop(Item_list,0)) + self.NPHIA = eval(Pop(Item_list,0)) + self.NUMBND = eval(Pop(Item_list,0)) + self.NUMANG = eval(Pop(Item_list,0)) + self.NPTRA = eval(Pop(Item_list,0)) + self.NATYP = eval(Pop(Item_list,0)) + self.NPHB = eval(Pop(Item_list,0)) + self.IFPERT = eval(Pop(Item_list,0)) + self.NBPER = eval(Pop(Item_list,0)) + self.NGPER = eval(Pop(Item_list,0)) + self.NDPER = eval(Pop(Item_list,0)) + self.MBPER = eval(Pop(Item_list,0)) + self.MGPER = eval(Pop(Item_list,0)) + self.MDPER = eval(Pop(Item_list,0)) + self.IFBOX = eval(Pop(Item_list,0)) + self.NMXRS = eval(Pop(Item_list,0)) + self.IFCAP = eval(Pop(Item_list,0)) + + #.................................................... + + if len(Item_list) < 5 * self.NATOM + self.NTYPES**2 + \ + 2*(self.NRES + self.NUMBND + self.NUMANG) + \ + 3*self.NPTRA + self.NATYP: + print '(error: File too short!)' + return -1 + + self.IGRAPH = [] + Pop(Item_list,0) + + # A little kludge is needed here, since the IGRAPH strings are + # not separated by spaces if 4 characters in length. + for i in range(self.NATOM): + if len(Item_list[0]) > 4: + Item_list.insert(1, Item_list[0][4:]) + Item_list.insert(1, Item_list[0][0:4]) + del Item_list[0] + self.IGRAPH.append(Pop(Item_list,0)) + + # Vikas' Modification : In the following section, I am printing out each quantity which is currently being read from the topology file. + print 'Reading Charges...' + self.CHRG = [] + for i in range(self.NATOM): + self.CHRG.append(eval(Pop(Item_list,0))) + + print 'Reading Atomic Masses...' + self.AMASS = [] + for i in range(self.NATOM): + self.AMASS.append(eval(Pop(Item_list,0))) + + print 'Reading Atom Types...' + self.IAC = [] + for i in range(self.NATOM): + self.IAC.append(eval(Pop(Item_list,0))) + + print 'Reading Excluded Atoms...' + self.NUMEX = [] + for i in range(self.NATOM): + self.NUMEX.append(eval(Pop(Item_list,0))) + + print 'Reading Non-bonded Parameter Index...' + self.ICO = [] + for i in range(self.NTYPES**2): + self.ICO.append(eval(Pop(Item_list,0))) + + print 'Reading Residue Labels...' + self.LABRES = [] + for i in range(self.NRES): + self.LABRES.append(Pop(Item_list,0)) + + print 'Reading Residues Starting Pointers...' + self.IPRES = [] + for i in range(self.NRES): + self.IPRES.append(eval(Pop(Item_list,0))) + + print 'Reading Bond Force Constants...' + self.RK = [] + for i in range(self.NUMBND): + self.RK.append(eval(Pop(Item_list,0))) + + print 'Reading Equilibrium Bond Values...' + self.REQ = [] + for i in range(self.NUMBND): + self.REQ.append(eval(Pop(Item_list,0))) + + print 'Reading Angle Force Constants...' + self.TK = [] + for i in range(self.NUMANG): + self.TK.append(eval(Pop(Item_list,0))) + + print 'Reading Equilibrium Angle Values...' + self.TEQ = [] + for i in range(self.NUMANG): + self.TEQ.append(eval(Pop(Item_list,0))) + + print 'Reading Dihedral Force Constants...' + self.PK = [] + for i in range(self.NPTRA): + self.PK.append(eval(Pop(Item_list,0))) + + print 'Reading Dihedral Periodicity...' + self.PN = [] + for i in range(self.NPTRA): + self.PN.append(eval(Pop(Item_list,0))) + + print 'Reading Dihedral Phase...' + self.PHASE = [] + for i in range(self.NPTRA): + self.PHASE.append(eval(Pop(Item_list,0))) + + print 'Reading Solty...' #I think this is currently not used in AMBER. Check it out, though + self.SOLTY = [] + for i in range(self.NATYP): + self.SOLTY.append(eval(Pop(Item_list,0))) + + #.................................................... + + if len(Item_list) < 2 * self.NTYPES * (self.NTYPES + 1) / 2: + print '(error: File too short!)' + return -1 + + print 'Reading LJ A Coefficient...' + self.CN1 = [] + for i in range(self.NTYPES * (self.NTYPES + 1) / 2): + self.CN1.append(eval(Pop(Item_list,0))) + + print 'Reading LJ B Coefficient...' + self.CN2 = [] + for i in range(self.NTYPES * (self.NTYPES + 1) / 2): + self.CN2.append(eval(Pop(Item_list,0))) + + #.................................................... + + if len(Item_list) < 3 * (self.NBONH + self.NBONA) + \ + 4 * (self.NTHETH + self.NTHETA) + 5 * (self.NPHIH + self.NPHIA): + print '(error: File too short!)' + return -1 + + print 'Reading Bonds which include hydrogen...' + self.IBH = [] + self.JBH = [] + self.ICBH = [] + for i in range(self.NBONH): + self.IBH.append(eval(Pop(Item_list,0))) + self.JBH.append(eval(Pop(Item_list,0))) + self.ICBH.append(eval(Pop(Item_list,0))) + + print 'Reading Bonds which dont include hydrogen...' + self.IB = [] + self.JB = [] + self.ICB = [] + for i in range(self.NBONA): + self.IB.append(eval(Pop(Item_list,0))) + self.JB.append(eval(Pop(Item_list,0))) + self.ICB.append(eval(Pop(Item_list,0))) + + print 'Reading Angles which include hydrogen...' + self.ITH = [] + self.JTH = [] + self.KTH = [] + self.ICTH = [] + for i in range(self.NTHETH): + self.ITH.append(eval(Pop(Item_list,0))) + self.JTH.append(eval(Pop(Item_list,0))) + self.KTH.append(eval(Pop(Item_list,0))) + self.ICTH.append(eval(Pop(Item_list,0))) + + print 'Reading Angles which dont include hydrogen...' + self.IT = [] + self.JT = [] + self.KT = [] + self.ICT = [] + for i in range(self.NTHETA): + self.IT.append(eval(Pop(Item_list,0))) + self.JT.append(eval(Pop(Item_list,0))) + self.KT.append(eval(Pop(Item_list,0))) + self.ICT.append(eval(Pop(Item_list,0))) + + print 'Reading Dihedrals which include hydrogen...' + self.IPH = [] + self.JPH = [] + self.KPH = [] + self.LPH = [] + self.ICPH = [] + for i in range(self.NPHIH): + self.IPH.append(eval(Pop(Item_list,0))) + self.JPH.append(eval(Pop(Item_list,0))) + self.KPH.append(eval(Pop(Item_list,0))) + self.LPH.append(eval(Pop(Item_list,0))) + self.ICPH.append(eval(Pop(Item_list,0))) + + print 'Reading Dihedrals which dont include hydrogen...' + self.IP = [] + self.JP = [] + self.KP = [] + self.LP = [] + self.ICP = [] + for i in range(self.NPHIA): + self.IP.append(eval(Pop(Item_list,0))) + self.JP.append(eval(Pop(Item_list,0))) + self.KP.append(eval(Pop(Item_list,0))) + self.LP.append(eval(Pop(Item_list,0))) + self.ICP.append(eval(Pop(Item_list,0))) + + #.................................................... + + if len(Item_list) < self.NEXT + 3 * self.NPHB + 4 * self.NATOM: + print '(error: File too short!)' + return -1 + + print 'Reading Excluded Atom List...' + self.NATEX = [] + for i in range(self.NEXT): + self.NATEX.append(eval(Pop(Item_list,0))) + + print 'Reading H-Bond A Coefficient, corresponding to r**12 term for all possible types...' + self.ASOL = [] + for i in range(self.NPHB): + self.ASOL.append(eval(Pop(Item_list,0))) + + print 'Reading H-Bond B Coefficient, corresponding to r**10 term for all possible types...' + self.BSOL = [] + for i in range(self.NPHB): + self.BSOL.append(eval(Pop(Item_list,0))) + + print 'Reading H-Bond Cut...' # I think it is not being used nowadays + self.HBCUT = [] + for i in range(self.NPHB): + self.HBCUT.append(eval(Pop(Item_list,0))) + + print 'Reading Amber Atom Types for each atom...' + self.ISYMBL = [] + for i in range(self.NATOM): + self.ISYMBL.append(Pop(Item_list,0)) + + print 'Reading Tree Chain Classification...' + self.ITREE = [] + for i in range(self.NATOM): + self.ITREE.append(Pop(Item_list,0)) + + print 'Reading Join Array: Tree joining information' # Currently unused in Sander, an AMBER module + self.JOIN = [] + for i in range(self.NATOM): + self.JOIN.append(eval(Pop(Item_list,0))) + + print 'Reading IRotate...' # Currently unused in Sander and Gibbs + self.IROTAT = [] + for i in range(self.NATOM): + self.IROTAT.append(eval(Pop(Item_list,0))) + + #.................................................... + + if self.IFBOX > 0: + if len(Item_list) < 3: + print '(error: File too short!)' + return -1 + + print 'Reading final residue which is part of solute...' + self.IPTRES = eval(Pop(Item_list,0)) + print 'Reading total number of molecules...' + self.NSPM = eval(Pop(Item_list,0)) + print 'Reading first solvent moleule index...' + self.NSPSOL = eval(Pop(Item_list,0)) + + if len(Item_list) < self.NSPM + 4: + print '(error: File too short!)' + return -1 + + print 'Reading atom per molecule...' + self.NSP = [] + for i in range(self.NSPM): + self.NSP.append(eval(Pop(Item_list,0))) + + self.BETA = eval(Pop(Item_list,0)) + + print 'Reading Box Dimensions...' + if self.__dict__.has_key('BOX'): + BOX = [] + for i in range(3): + BOX.append(eval(Pop(Item_list,0))) + for i in range(3): + if BOX[i] != self.BOX[i]: + print '(warning: BOX differs!)', + break + del BOX + else: + self.BOX = [] + for i in range(3): + self.BOX.append(eval(Pop(Item_list,0))) + + #.................................................... + + if self.IFCAP > 0: + if len(Item_list) < 5: + print '(error: File too short!)' + return -1 + print 'Reading ICAP variables::: For details, refer to online AMBER format manual' + self.NATCAP = eval(Pop(Item_list,0)) + self.CUTCAP = eval(Pop(Item_list,0)) + self.XCAP = eval(Pop(Item_list,0)) + self.YCAP = eval(Pop(Item_list,0)) + self.ZCAP = eval(Pop(Item_list,0)) + + #.................................................... + + if self.IFPERT > 0: + if len(Item_list) < 4 * self.NBPER + 5 * self.NGPER + \ + 6 * self.NDPER + self.NRES + 6 * self.NATOM: + print '(error: File too short!)' + return -1 + + print 'Reading perturb variables, 1. Bond, 2. Angles, 3. Dihedrals, etc etc.::: For details, refer to online AMBER format manual' + self.IBPER = [] + self.JBPER = [] + for i in range(self.NBPER): + self.IBPER.append(eval(Pop(Item_list,0))) + self.JBPER.append(eval(Pop(Item_list,0))) + + self.ICBPER = [] + for i in range(2 * self.NBPER): + self.ICBPER.append(eval(Pop(Item_list,0))) + + self.ITPER = [] + self.JTPER = [] + self.KTPER = [] + for i in range(self.NGPER): + self.ITPER.append(eval(Pop(Item_list,0))) + self.JTPER.append(eval(Pop(Item_list,0))) + self.KTPER.append(eval(Pop(Item_list,0))) + + self.ICTPER = [] + for i in range(2 * self.NGPER): + self.ICTPER.append(eval(Pop(Item_list,0))) + + self.IPPER = [] + self.JPPER = [] + self.KPPER = [] + self.LPPER = [] + for i in range(self.NDPER): + self.IPPER.append(eval(Pop(Item_list,0))) + self.JPPER.append(eval(Pop(Item_list,0))) + self.KPPER.append(eval(Pop(Item_list,0))) + self.LPPER.append(eval(Pop(Item_list,0))) + + self.ICPPER = [] + for i in range(2 * self.NDPER): + self.ICPPER.append(eval(Pop(Item_list,0))) + + LABRES = [] + for i in range(self.NRES): + LABRES.append(Pop(Item_list,0)) + for i in range(self.NRES): + if LABRES[i] != self.LABRES[i]: + print '(warning: BOX differs!)', + break + + self.IGRPER = [] + for i in range(self.NATOM): + self.IGRPER.append(eval(Pop(Item_list,0))) + + self.ISMPER = [] + for i in range(self.NATOM): + self.ISMPER.append(eval(Pop(Item_list,0))) + + self.ALMPER = [] + for i in range(self.NATOM): + self.ALMPER.append(eval(Pop(Item_list,0))) + + self.IAPER = [] + for i in range(self.NATOM): + self.IAPER.append(eval(Pop(Item_list,0))) + + self.IACPER = [] + for i in range(self.NATOM): + self.IACPER.append(eval(Pop(Item_list,0))) + + self.CGPER = [] + for i in range(self.NATOM): + self.CGPER.append(eval(Pop(Item_list,0))) + + #.................................................... + + self.IPOL = 0 + if self.IPOL == 1: + if len(Item_list) < self.NATOM: + print '(error: File too short!)' + return -1 + print 'Reading Polarizability Data. For details, refer to online AMBER format manual' + self.ATPOL = [] + for i in range(self.NATOM): + self.ATPOL.append(eval(Pop(Item_list,0))) + + if self.IFPERT == 1: + if len(Item_list) < self.NATOM: + print '(error: File too short!)' + return -1 + self.ATPOL1 = [] + for i in range(self.NATOM): + self.ATPOL1.append(eval(Pop(Item_list,0))) + + #.................................................... + + if len(Item_list): + print '(warning: File too large!)', + + print 'done.' + self.TOP_is_read = 1 + +#============================================================ + +def Find_Amber_files(): + 'Look for sets of Amber files to process' + '''If not passed anything on the command line, look for pairs of + Amber files (.crd and .top) in the current directory. For + each set if there is no corresponding Lammps file (data.), or it is + older than any of the Amber files, add its basename to a list of + strings. This list is returned by the function''' + + # Date and existence checks not yet implemented + + import os, sys + + Basename_list = [] + + # Extract basenames from command line + for Name in sys.argv[1:]: + if Name[-4:] == '.crd': + Basename_list.append(Name[:-4]) + else: + if Name[-4:] == '.top': + Basename_list.append(Name[:-4]) + else: + Basename_list.append(Name) + + # Remove duplicate basenames + for Basename in Basename_list[:]: + while Basename_list.count(Basename) > 1: + Basename_list.remove(Basename) + + if Basename_list == []: + print 'Looking for Amber files...', + Dir_list = os.listdir('.') + Dir_list.sort() + for File in Dir_list: + if File[-4:] == '.top': + Basename = File[:-4] + if (Basename + '.crd') in Dir_list: + Basename_list.append(Basename) + if Basename_list != []: + print 'found', + for i in range(len(Basename_list)-1): + print Basename_list[i] + ',', + print Basename_list[-1] + '\n' + + if Basename_list == []: + print 'none.\n' + + return Basename_list + +#============================================================ + +def Convert_Amber_files(): + 'Handle the whole conversion process' + print + print 'Welcome to amber2lammps, a program to convert Amber files to Lammps format!' + print + Basename_list = Find_Amber_files() + for Basename in Basename_list: + a = Amber() + a.Read_CRD(Basename) + if a.CRD_is_read: + a.Read_TOP(Basename) + if a.TOP_is_read: + l = a.Coerce_to_Lammps() + l.Write_Lammps(Basename) + del l + del a + print + +#============================================================ + +Convert_Amber_files() diff --git a/tools/msi2lmp/README b/tools/msi2lmp/README index a70a67b84b..ac565ce47e 100644 --- a/tools/msi2lmp/README +++ b/tools/msi2lmp/README @@ -1,3 +1,12 @@ +Stephanie Teich-McGoldrick (Sandai) is the current maintainer +of the msi2lmp tool. She can be contacted at steichm at sandia.gov + +23 Sep 2011 + +added support for triclinic boxes +see msi2lmp/TriclinicModification.pdf doc for details + +----------------------------- msi2lmp V3.6 4/10/2005 diff --git a/tools/msi2lmp/TriclinicModification.pdf b/tools/msi2lmp/TriclinicModification.pdf new file mode 100644 index 0000000000..a88bb902f0 Binary files /dev/null and b/tools/msi2lmp/TriclinicModification.pdf differ diff --git a/tools/msi2lmp/biosym_frc_files/clayff.frc b/tools/msi2lmp/biosym_frc_files/clayff.frc new file mode 100644 index 0000000000..bdc9c2c004 --- /dev/null +++ b/tools/msi2lmp/biosym_frc_files/clayff.frc @@ -0,0 +1,154 @@ +!CLAYFF forcefield + +#atom_types cvff + +!Ver Ref Type Mass Element Connections Comment +!---- --- ---- ---------- ------- ----------------------------------------- + 1.0 1 st 28.08550 Si 4 + 1.0 1 ao 26.98154 Al 6 + 1.0 1 at 26.98154 Al 4 + 1.0 1 mgo 24.30500 Mg 6 + 1.0 1 cao 40.08000 Ca 6 + 1.0 1 feo 55.84700 Fe 6 + 1.0 1 lio 6.941000 Li 6 + 1.0 1 ob 15.99940 O 2 + 1.0 1 obss 15.99940 O 3 + 1.0 1 obts 15.99940 O 2 + 1.0 1 obos 15.99940 O 2 + 1.0 1 ohs 15.99940 O 2 + 1.0 1 oh 15.99940 O 2 + 1.0 1 oh- 15.99940 O 1 + 1.0 1 o* 15.99940 O 2 + 1.0 1 ho 1.007970 H 1 + 1.0 1 h* 1.007970 H 1 + 1.0 1 Na 22.99000 Na 0 + 1.0 1 K 39.10 K 0 + 1.0 1 Cs 132.9100 Cs 0 + 1.0 1 Ca 40.07980 Ca 0 + 1.0 1 Ba 137.3300 Ba 0 + 1.0 1 Mg 24.3050 Mg 0 + 1.0 1 Sr 87.6200 Sr 0 + 1.0 1 Pb 207.2000 Pb 0 + 1.0 1 Cl 35.45300 Cl 0 + + +#equivalence cvff + +> Equivalence table for any variant of cvff + +! Equivalences +! ----------------------------------------- +!Ver Ref Type NonB Bond Angle Torsion OOP +!---- --- ---- ---- ---- ----- ------- ---- + 1.0 1 h h h h h h + + + +#auto_equivalence cvff_auto + +! Equivalences +! ----------------------------------------- +!Ver Ref Type NonB Bond Bond Angle Angle Torsion Torsion OOP OOP +! Inct End atom Apex atom End Atoms Center Atoms End Atom Center Atom +!---- --- ---- ---- ------ ---- ---------- --------- --------- ----------- -------- ----------- + 2.0 18 h h h h_ h_ h_ h_ h_ h_ h_ + + + +#hbond_definition cvff + + +#morse_bond cvff + +> E = D * (1 - exp(-ALPHA*(R - R0)))^2 + +!Ver Ref I J R0 D ALPHA +!---- --- ---- ---- ------- -------- ------- + 2.3 23 no o- 1.2178 140.2486 2.0000 + + + +#quadratic_bond cvff + +> E = K2 * (R - R0)^2 + +!Ver Ref I J R0 K2 +!---- --- ---- ---- ------- -------- + 2.1 28 oh ho 1.0000 553.9350 + 2.1 28 ohs ho 1.0000 553.9350 + + +#quadratic_angle cvff + +> E = K2 * (Theta - Theta0)^2 + +!Ver Ref I J K Theta0 K2 +!---- --- ---- ---- ---- -------- ------- + 2.3 23 cp cp c' 120.0000 34.6799 + + + +#torsion_1 cvff_auto + +> E = Kphi * [ 1 + cos(n*Phi - Phi0) ] + +!Ver Ref I J K L Kphi n Phi0 +!---- --- ---- ---- ---- ---- ------- ------ ------- + 2.0 18 * c_ n3n_ * 0.0500 3 0. + + + +#out_of_plane cvff_auto + +> E = Kchi * [ 1 + cos(n*Chi - Chi0) ] + +!Ver Ref I J K L Kchi n Chi0 +!---- --- ---- ---- ---- ---- ------- ------ ------- + 2.0 18 * c'_ * * 10.0000 2 180.0000 + + +#nonbond(12-6) cvff + +@type A-B +@combination geometric + +> E = Aij/r^12 - Bij/r^6 +> where Aij = sqrt( Ai * Aj ) +> Bij = sqrt( Bi * Bj ) + +!Ver Ref I A B +!---- --- ---- ----------- ----------- + 1.0 1 st 12.3645 0.00954 + 1.0 1 ao 196.1446 0.03230 + 1.0 1 at 12.3645 0.00954 + 1.0 1 mgo 1636.3265 0.07688 + 1.0 1 cao 17814.73 0.5987 + 1.0 1 feo 702.54 0.0504 + 1.0 1 lio 112.01 0.0201 + 1.0 1 ob 629358.0000 625.50000 + 1.0 1 obss 629358.0000 625.50000 + 1.0 1 obts 629358.0000 625.50000 + 1.0 1 obos 629358.0000 625.50000 + 1.0 1 ohs 629358.0000 625.50000 + 1.0 1 oh 629358.0000 625.50000 + 1.0 1 oh- 629358.0000 625.50000 + 1.0 1 o* 629358.0000 625.50000 + 1.0 1 ho 0.00000001 0.00000 + 1.0 1 h* 0.00000001 0.00000 + 1.0 1 Na 14763.1719 87.65132 + 1.0 1 K 754506.86 549.37 + 1.0 1 Cs 3998193.96 1264.63 + 1.0 1 Ca 125966.6068 224.46969 + 1.0 1 Ba 1799606.56 582.25 + 1.0 1 Mg 1369.00 69.22 + 1.0 1 Sr 1185860.37 688.73 + 1.0 1 Pb 861150.71 638.08 + 1.0 1 Cl 21081006.97 2905.31 + + +#bond_increments cvff + +!Ver Ref I J DeltaIJ DeltaJI +!---- --- ---- ---- ------- ------- + 2.3 23 no o- 0.1684 -0.1684 + diff --git a/tools/msi2lmp/src/GetParameters.c b/tools/msi2lmp/src/GetParameters.c index bd945a927a..cd0f3bbbfe 100644 --- a/tools/msi2lmp/src/GetParameters.c +++ b/tools/msi2lmp/src/GetParameters.c @@ -736,8 +736,8 @@ void GetParameters(int Forcefield) ooptypes[i].types[3]); ooptypes[i].angleangle_params[3] = tabc; - ooptypes[i].angleangle_params[4] = tabd; - ooptypes[i].angleangle_params[5] = tcbd; + ooptypes[i].angleangle_params[4] = tcbd; + ooptypes[i].angleangle_params[5] = tabd; k = find_angleangle_data(potential_types,ff_angang,kloc); if (k < 0) { diff --git a/tools/msi2lmp/src/Makefile b/tools/msi2lmp/src/Makefile index 21ac46268e..354246e203 100644 --- a/tools/msi2lmp/src/Makefile +++ b/tools/msi2lmp/src/Makefile @@ -18,7 +18,7 @@ OBJS = $(SRCS:.c=.o) HEADERS = Msi2LMP2.h Forcefield.h CC = gcc -CFLAGS = -O2 +CFLAGS = -O3 FRCFILE = cvff.frc FRCFILE2 = cff91.frc README = README diff --git a/tools/msi2lmp/src/Msi2LMP2.h b/tools/msi2lmp/src/Msi2LMP2.h index ed79c26117..14105a8b04 100644 --- a/tools/msi2lmp/src/Msi2LMP2.h +++ b/tools/msi2lmp/src/Msi2LMP2.h @@ -61,6 +61,8 @@ #define MAX_CONNECTIONS 6 #define MAX_STRING 50 + + struct ResidueList { int start; int end; @@ -168,6 +170,8 @@ _EX char rootname[20]; _EX char path[20]; _EX double pbc[9]; _EX int periodic _ARG( 1 ); /* 0= nonperiodic 1= 3-D periodic */ +// Added triclinic flag for non-orthogonal boxes Oct 5, 2010 SLTM +_EX int TriclinicFlag; // 1 for non-orthoganal boxes, 0 for orthogonal boxes _EX int forcefield _ARG( 0 ); /* 0= ClassI 1= ClassII */ _EX int pflag; _EX int *no_atoms; diff --git a/tools/msi2lmp/src/ReadCarFile.c b/tools/msi2lmp/src/ReadCarFile.c index 7adfe8d82e..af34c15be1 100644 --- a/tools/msi2lmp/src/ReadCarFile.c +++ b/tools/msi2lmp/src/ReadCarFile.c @@ -12,6 +12,13 @@ void ReadCarFile(void) int skip; /* lines to skip at beginning of file */ double lowest, highest; /* temp coordinate finding variables */ double total_q; + double sq_c; + double cos_alpha; // Added by SLTM Sept 13, 2010 + double cos_gamma; + double sin_gamma; + double cos_beta; + double sin_beta; + double A, B, C; /* Open .car file for reading */ @@ -39,10 +46,12 @@ void ReadCarFile(void) fgets(line,MAX_LINE_LENGTH,CarF); /* Date stamp */ fscanf(CarF,"%*s %lf %lf %lf %lf %lf %lf %*s", &pbc[0],&pbc[1],&pbc[2],&pbc[3],&pbc[4],&pbc[5]); - if(pbc[3] != 90.0 || pbc[4] != 90.0 || pbc[5] != 90.0) { - fprintf(stderr,"The system is not rectangular- LAMMPS can't handle it!!"); - exit(2); + + // Added triclinic flag for non-orthogonal boxes Oct 5, 2010 SLTM + if(pbc[3] != 90.0 || pbc[4] != 90.0 || pbc[5] != 90.0) { + TriclinicFlag = 1; } + else TriclinicFlag = 0; } else { periodic = 0; @@ -142,23 +151,59 @@ void ReadCarFile(void) /* Search coordinates to find lowest and highest for x, y, and z */ if (periodic == 0) { - for ( k = 0; k < 3; k++) { - lowest = atoms[0].x[k]; - highest = atoms[0].x[k]; + // Added if/else statment STLM Oct 5 2010 + if (TriclinicFlag == 0) + { + for ( k = 0; k < 3; k++) { + lowest = atoms[0].x[k]; + highest = atoms[0].x[k]; - for ( m = 1; m < total_no_atoms; m++) { - if (atoms[m].x[k] < lowest) lowest = atoms[m].x[k]; - if (atoms[m].x[k] > highest) highest = atoms[m].x[k]; + for ( m = 1; m < total_no_atoms; m++) { + if (atoms[m].x[k] < lowest) lowest = atoms[m].x[k]; + if (atoms[m].x[k] > highest) highest = atoms[m].x[k]; + } + pbc[k] = lowest; + pbc[k+3] = highest; } - pbc[k] = lowest; - pbc[k+3] = highest; - } + } + else { + printf("Code only works for periodic systems with triclinic boxes"); + exit(2); + } + } else { - for (k=0; k < 3; k++) { - pbc[k+3] = pbc[k]; - pbc[k] = 0.0; - } + // Modified lines 176 - 201 Oct 5th 2010 + if (TriclinicFlag == 0) { + for (k=0; k < 3; k++) { + pbc[k+3] = pbc[k]; + pbc[k] = 0.0; + } + } + else { + sq_c = pbc[2]*pbc[2]; + cos_alpha = cos(pbc[3]*3.14159265358979323846/180.0); + cos_gamma = cos(pbc[5]*3.14159265358979323846/180.0); + sin_gamma = sin(pbc[5]*3.14159265358979323846/180.0); + cos_beta = cos(pbc[4]*3.14159265358979323846/180.0); + sin_beta = sin(pbc[4]*3.14159265358979323846/180.0); + printf("pbc[3] %lf pbc[4] %lf pbc[5] %lf\n", pbc[3] ,pbc[4] ,pbc[5]); + printf("cos_alpha %lf cos_beta %lf cos_gamma %lf\n", cos_alpha ,cos_beta ,cos_gamma); + A = pbc[0]; + B = pbc[1]; + C = pbc[2]; + + + pbc[0] = A; + pbc[1] = B*sin_gamma; + pbc[2] = sqrt(sq_c * sin_beta*sin_beta - C*(cos_alpha-cos_gamma*cos_beta)/sin_gamma); + pbc[3] = B * cos_gamma; // This is xy SLTM + pbc[4] = C * cos_beta; // This is xz SLTM + pbc[5] = C*(cos_alpha-cos_gamma*cos_beta)/sin_gamma; // This is yz SLTM + } + + + } /* Close .car file */ diff --git a/tools/msi2lmp/src/WriteDataFile.c b/tools/msi2lmp/src/WriteDataFile.c index 050240dcc2..cca6db09d8 100644 --- a/tools/msi2lmp/src/WriteDataFile.c +++ b/tools/msi2lmp/src/WriteDataFile.c @@ -37,11 +37,14 @@ void WriteDataFile(FILE *DatF,char *nameroot,int forcefield) if (no_oop_types > 0) fprintf (DatF, " %3d improper types\n", no_oop_types); } - + + fprintf(DatF, "\n"); - fprintf(DatF, " %15.9f %15.9f xlo xhi\n", pbc[0], pbc[3]); - fprintf(DatF, " %15.9f %15.9f ylo yhi\n", pbc[1], pbc[4]); - fprintf(DatF, " %15.9f %15.9f zlo zhi\n", pbc[2], pbc[5]); + fprintf(DatF, " %15.9f %15.9f xlo xhi\n", 0.0, pbc[0]); + fprintf(DatF, " %15.9f %15.9f ylo yhi\n", 0.0, pbc[1]); + fprintf(DatF, " %15.9f %15.9f zlo zhi\n", 0.0, pbc[2]); + fprintf(DatF, " %15.9f %15.9f %15.9f xy xz yz\n", pbc[3], pbc[4], pbc[5]); + /* MASSES */ diff --git a/tools/msi2lmp/src/WriteDataFile05.c b/tools/msi2lmp/src/WriteDataFile05.c index ac195803b3..504314e12b 100644 --- a/tools/msi2lmp/src/WriteDataFile05.c +++ b/tools/msi2lmp/src/WriteDataFile05.c @@ -49,12 +49,25 @@ void WriteDataFile05(char *nameroot,int forcefield) if (no_oop_types > 0) fprintf (DatF, " %3d improper types\n", no_oop_types); } - - fprintf(DatF, "\n"); - fprintf(DatF, " %15.9f %15.9f xlo xhi\n", pbc[0], pbc[3]); - fprintf(DatF, " %15.9f %15.9f ylo yhi\n", pbc[1], pbc[4]); - fprintf(DatF, " %15.9f %15.9f zlo zhi\n", pbc[2], pbc[5]); - + + + // Modified by SLTM to print out triclinic box types 10/05/10 - lines 56-68 + + if (TriclinicFlag == 0) { + fprintf(DatF, "\n"); + fprintf(DatF, " %15.9f %15.9f xlo xhi\n", pbc[0], pbc[3]); + fprintf(DatF, " %15.9f %15.9f ylo yhi\n", pbc[1], pbc[4]); + fprintf(DatF, " %15.9f %15.9f zlo zhi\n", pbc[2], pbc[5]); + } + else { + fprintf(DatF, "\n"); + fprintf(DatF, " %15.9f %15.9f xlo xhi\n", 0.0, pbc[0]); + fprintf(DatF, " %15.9f %15.9f ylo yhi\n", 0.0, pbc[1]); + fprintf(DatF, " %15.9f %15.9f zlo zhi\n", 0.0, pbc[2]); + fprintf(DatF, " %15.9f %15.9f %15.9f xy xz yz\n", pbc[3], pbc[4], pbc[5]); + } + + /* MASSES */ @@ -113,7 +126,10 @@ void WriteDataFile05(char *nameroot,int forcefield) for (i=0; i < no_dihedral_types; i++) { fprintf(DatF, "%3i ", i+1); for ( j = 0; j < m; j++) - fprintf(DatF, "%10.4f ", dihedraltypes[i].params[j]); + // Modified on 10/05/2010 by STLM to match with lammps reading in integers for the all but the first coefficients + if (j == 0) + fprintf(DatF, "%10.4f ", dihedraltypes[i].params[j]); + else fprintf(DatF, "%10.0f ", dihedraltypes[i].params[j]); fprintf(DatF,"\n"); } fprintf(DatF, "\n"); @@ -124,7 +140,10 @@ void WriteDataFile05(char *nameroot,int forcefield) for (i=0; i < no_oop_types; i++) { fprintf(DatF, "%3i ", i+1); for ( j = 0; j < 3; j++) - fprintf(DatF, "%10.4f ", ooptypes[i].params[j]); + // Modified on 10/05/2010 by STLM to match with lammps reading in integers for the all but the first coefficients + if (j == 0) + fprintf(DatF, "%10.4f ", ooptypes[i].params[j]); + else fprintf(DatF, "%10.0f ", ooptypes[i].params[j]); fprintf(DatF, "\n"); } fprintf(DatF, "\n"); diff --git a/tools/msi2lmp/src/msi2lmp.c b/tools/msi2lmp/src/msi2lmp.c index 1a7508a1bc..af687d0dea 100644 --- a/tools/msi2lmp/src/msi2lmp.c +++ b/tools/msi2lmp/src/msi2lmp.c @@ -131,7 +131,7 @@ int main (int argc, char *argv[]) extern void CheckLists(); extern void WriteDataFile(FILE *,char *,int); - + outv = 2005; pflag = 1; forcefield = 1; /* Variable that identifies forcefield to use */ @@ -140,9 +140,9 @@ int main (int argc, char *argv[]) frc_dir_name = (char *) calloc(160,sizeof(char)); frc_dir_name = getenv("BIOSYM_LIBRARY"); - + if (frc_dir_name == NULL) { - frc_file_name = strcpy(frc_file_name,"./cvff.frc"); + frc_file_name = strcpy(frc_file_name,"../biosym_frc_files/clayff.frc"); } else { for (i=0; i < strlen(frc_dir_name); i++) @@ -150,12 +150,14 @@ int main (int argc, char *argv[]) frc_file_name = strcat(frc_file_name,"/cvff.frc"); } + + if (argc < 2) { /* If no rootname was supplied, prompt for it */ fprintf(stderr,"The rootname of the .car and .mdf files must be entered\n"); } else /* rootname was supplied as first argument, copy to rootname */ sprintf(rootname,"%s",argv[1]); - + n = 2; while (n < argc) { if (strcmp(argv[n],"-class") == 0) { @@ -223,20 +225,21 @@ int main (int argc, char *argv[]) } /* Read in .car file */ - + printf("I am before read car file\n"); ReadCarFile(); - + printf("I am after read car file\n"); /*Read in .mdf file */ ReadMdfFile(); - + printf("I am after read mdf file\n"); /* Define bonds, angles, etc...*/ if (pflag > 0) fprintf(stderr,"\n Building internal coordinate lists \n"); MakeLists(); /* Read .frc file into memory */ - + + // Commented out to create conversion file suitable for non-orthogonal boxes Sept 13, 2010 SLTM if (pflag > 0) fprintf(stderr,"\n Reading forcefield file \n"); ReadFrcFile(); diff --git a/tools/restart2data.cpp b/tools/restart2data.cpp index e1b81b7074..dc6d0c489a 100644 --- a/tools/restart2data.cpp +++ b/tools/restart2data.cpp @@ -13,9 +13,7 @@ // Convert a LAMMPS binary restart file into an ASCII text data file // -// Syntax: restart2data switch arg ... restart-file data-file (input-file) -// optional switch = -s -// arg = suffix to remove from style names +// Syntax: restart2data restart-file data-file (input-file) // restart-file and data-file are mandatory // input-file is optional // if specified it will contain LAMMPS input script commands @@ -80,7 +78,6 @@ class Data { char *version; int size_smallint,size_tagint,size_bigint; - char *suffix; bigint ntimestep; int nprocs; char *unit_style; @@ -316,7 +313,7 @@ int atom_molecular(double *, Data &, int); int atom_peri(double *, Data &, int); int atom_sphere(double *, Data &, int); -void strip_suffix(char *, char *); +void strip_suffix(char *); int read_int(FILE *fp); double read_double(FILE *fp); @@ -331,19 +328,16 @@ int main (int narg, char **arg) { // process command-line args - char *suffix = NULL; - int iarg = 1; - while (iarg < narg) { - if (strcmp(arg[iarg],"-s") == 0) { - if (iarg+2 > narg) { - printf("Syntax: restart2data switch arg ... " - "restart-file data-file (input-file)\n"); - return 1; - } - suffix = arg[iarg+1]; - iarg += 2; - } else break; + if (strcmp(arg[iarg],"-h") == 0) { + printf("Syntax: restart2data switch arg ... " + "restart-file data-file (input-file)\n"); + printf(" restart-file and data-file are mandatory"); + printf(" input-file is optional"); + printf(" if specified it will contain LAMMPS input script commands"); + printf(" for mass and force field info"); + printf(" only a few force field styles support this option"); + return 0; } if ((narg-iarg != 2) && (narg-iarg != 3)) { @@ -367,7 +361,7 @@ int main (int narg, char **arg) FILE *fp; int multiproc = 0; - if (ptr = strchr(restartfile,'%')) { + if ( (ptr = strchr(restartfile,'%')) ) { multiproc = 1; char *basefile = new char[strlen(restartfile) + 16]; *ptr = '\0'; @@ -389,12 +383,6 @@ int main (int narg, char **arg) Data data; - if (suffix) { - int n = strlen(suffix) + 1; - data.suffix = new char[n]; - strcpy(data.suffix,suffix); - } else data.suffix = NULL; - header(fp,data); if (data.size_smallint != sizeof(int) || data.size_tagint != sizeof(tagint) || @@ -490,7 +478,7 @@ int main (int narg, char **arg) void header(FILE *fp, Data &data) { - char *version = "25 Jun 2011"; + char *version = "19 Aug 2011"; data.triclinic = 0; @@ -541,7 +529,7 @@ void header(FILE *fp, Data &data) data.style_molecular = data.style_peri = data.style_sphere = 0; data.atom_style = read_char(fp); - strip_suffix(data.atom_style,data.suffix); + strip_suffix(data.atom_style); set_style(data.atom_style,data,1); if (strcmp(data.atom_style,"hybrid") == 0) { @@ -631,7 +619,6 @@ void groups(FILE *fp) { int ngroup = read_int(fp); - int n; char *name; // use count to not change restart format with deleted groups @@ -688,23 +675,23 @@ void force_fields(FILE *fp, Data &data) if (flag == PAIR) { data.pair_style = read_char(fp); - strip_suffix(data.pair_style,data.suffix); + strip_suffix(data.pair_style); pair(fp,data,data.pair_style,1); } else if (flag == BOND) { data.bond_style = read_char(fp); - strip_suffix(data.bond_style,data.suffix); + strip_suffix(data.bond_style); bond(fp,data); } else if (flag == ANGLE) { data.angle_style = read_char(fp); - strip_suffix(data.angle_style,data.suffix); + strip_suffix(data.angle_style); angle(fp,data); } else if (flag == DIHEDRAL) { data.dihedral_style = read_char(fp); - strip_suffix(data.dihedral_style,data.suffix); + strip_suffix(data.dihedral_style); dihedral(fp,data); } else if (flag == IMPROPER) { data.improper_style = read_char(fp); - strip_suffix(data.improper_style,data.suffix); + strip_suffix(data.improper_style); improper(fp,data); } else { printf("ERROR: Invalid flag in force fields section of restart file %d\n", @@ -1393,6 +1380,36 @@ void pair(FILE *fp, Data &data, char *style, int flag) } } + } else if (strcmp(style,"brownian") == 0) { + double mu = read_double(fp); + int flag1 = read_int(fp); + double cut_inner_global = read_double(fp); + double cut_global = read_double(fp); + double t_target = read_double(fp); + int seed = read_int(fp); + int offset_flag = read_int(fp); + int mix_flag = read_int(fp); + + if (!flag) return; + + for (i = 1; i <= data.ntypes; i++) + for (j = i; j <= data.ntypes; j++) { + itmp = read_int(fp); + if (i == j && itmp == 0) { + printf("ERROR: Pair coeff %d,%d is not in restart file\n",i,j); + exit(1); + } + if (itmp) { + if (i == j) { + double cut_inner = read_double(fp); + double cut = read_double(fp); + } else { + double cut_inner = read_double(fp); + double cut = read_double(fp); + } + } + } + } else if ((strcmp(style,"buck") == 0) || (strcmp(style,"buck/coul/cut") == 0) || (strcmp(style,"buck/coul/long") == 0) || @@ -2037,6 +2054,35 @@ void pair(FILE *fp, Data &data, char *style, int flag) } } + } else if ((strcmp(style,"lubricate2") == 0) || + (strcmp(style,"lubricateU") == 0)) { + double mu = read_double(fp); + int flag = read_int(fp); + double cut_inner_global = read_double(fp); + double cut_global = read_double(fp); + int offset_flag = read_int(fp); + int mix_flag = read_int(fp); + + if (!flag) return; + + for (i = 1; i <= data.ntypes; i++) + for (j = i; j <= data.ntypes; j++) { + itmp = read_int(fp); + if (i == j && itmp == 0) { + printf("ERROR: Pair coeff %d,%d is not in restart file\n",i,j); + exit(1); + } + if (itmp) { + if (i == j) { + double cut_inner = read_double(fp); + double cut = read_double(fp); + } else { + double cut_inner = read_double(fp); + double cut = read_double(fp); + } + } + } + } else if (strcmp(style,"meam") == 0) { } else if (strcmp(style,"morse") == 0) { @@ -2113,8 +2159,9 @@ void pair(FILE *fp, Data &data, char *style, int flag) } else if (strcmp(style,"tersoff") == 0) { } else if (strcmp(style,"tersoff/zbl") == 0) { - } else if (strcmp(style,"yukawa") == 0) { - + } else if ((strcmp(style,"yukawa") == 0) || + (strcmp(style,"yukawa/colloid") == 0)) { + double kappa = read_double(fp); double cut_global = read_double(fp); int offset_flag = read_int(fp); @@ -2145,6 +2192,7 @@ void pair(FILE *fp, Data &data, char *style, int flag) } else if ((strcmp(style,"cg/cmm") == 0) || (strcmp(style,"cg/cmm/coul/cut") == 0) || (strcmp(style,"cg/cmm/coul/long") == 0)) { + m = 0; data.cut_lj_global = read_double(fp); data.cut_coul_global = read_double(fp); @@ -2859,6 +2907,7 @@ void Data::write(FILE *fp, FILE *fp2) if ((strcmp(pair_style,"none") != 0) && (strcmp(pair_style,"adp") != 0) && (strcmp(pair_style,"airebo") != 0) && + (strcmp(pair_style,"brownian") != 0) && (strcmp(pair_style,"coul/cut") != 0) && (strcmp(pair_style,"coul/debye") != 0) && (strcmp(pair_style,"coul/long") != 0) && @@ -2870,6 +2919,8 @@ void Data::write(FILE *fp, FILE *fp2) (strcmp(pair_style,"gran/history") != 0) && (strcmp(pair_style,"gran/no_history") != 0) && (strcmp(pair_style,"gran/hertzian") != 0) && + (strcmp(pair_style,"lubricate2") != 0) && + (strcmp(pair_style,"lubricateU") != 0) && (strcmp(pair_style,"meam") != 0) && (strcmp(pair_style,"reax") != 0) && (strcmp(pair_style,"reax/c") != 0) && @@ -2976,7 +3027,8 @@ void Data::write(FILE *fp, FILE *fp2) fprintf(fp,"%d %g\n",i, pair_soft_A[i]); - } else if (strcmp(pair_style,"yukawa") == 0) { + } else if ((strcmp(pair_style,"yukawa") == 0) || + (strcmp(pair_style,"yukawa/colloid") == 0)) { for (int i = 1; i <= ntypes; i++) fprintf(fp,"%d %g\n",i, pair_yukawa_A[i]); @@ -3320,7 +3372,7 @@ void Data::write(FILE *fp, FILE *fp2) fprintf(fp,"\nAtoms\n\n"); int ix,iy,iz; - for (uint64_t i = 0; i < natoms; i++) { + for (bigint i = 0; i < natoms; i++) { ix = (image[i] & 1023) - 512; iy = (image[i] >> 10 & 1023) - 512; @@ -3361,7 +3413,7 @@ void Data::write(FILE *fp, FILE *fp2) if (natoms) { fprintf(fp,"\nVelocities\n\n"); - for (uint64_t i = 0; i < natoms; i++) + for (bigint i = 0; i < natoms; i++) if (style_hybrid == 0) { if (style_angle) write_vel_angle(fp,i); @@ -3396,7 +3448,7 @@ void Data::write(FILE *fp, FILE *fp2) if (nellipsoids) { fprintf(fp,"\nEllipsoids\n\n"); - for (uint64_t i = 0; i < natoms; i++) { + for (bigint i = 0; i < natoms; i++) { if (ellipsoid[i]) fprintf(fp,"%d %-1.16e %-1.16e %-1.16e " "%-1.16e %-1.16e %-1.16e %-1.16e \n", @@ -3407,21 +3459,21 @@ void Data::write(FILE *fp, FILE *fp2) if (nbonds) { fprintf(fp,"\nBonds\n\n"); - for (uint64_t i = 0; i < nbonds; i++) + for (bigint i = 0; i < nbonds; i++) fprintf(fp,BIGINT_FORMAT " %d %d %d\n", i+1,bond_type[i],bond_atom1[i],bond_atom2[i]); } if (nangles) { fprintf(fp,"\nAngles\n\n"); - for (uint64_t i = 0; i < nangles; i++) + for (bigint i = 0; i < nangles; i++) fprintf(fp,BIGINT_FORMAT " %d %d %d %d\n", i+1,angle_type[i],angle_atom1[i],angle_atom2[i],angle_atom3[i]); } if (ndihedrals) { fprintf(fp,"\nDihedrals\n\n"); - for (uint64_t i = 0; i < ndihedrals; i++) + for (bigint i = 0; i < ndihedrals; i++) fprintf(fp,BIGINT_FORMAT " %d %d %d %d %d\n", i+1,dihedral_type[i],dihedral_atom1[i],dihedral_atom2[i], dihedral_atom3[i],dihedral_atom4[i]); @@ -3429,7 +3481,7 @@ void Data::write(FILE *fp, FILE *fp2) if (nimpropers) { fprintf(fp,"\nImpropers\n\n"); - for (uint64_t i = 0; i < nimpropers; i++) + for (bigint i = 0; i < nimpropers; i++) fprintf(fp,BIGINT_FORMAT " %d %d %d %d %d\n", i+1,improper_type[i],improper_atom1[i],improper_atom2[i], improper_atom3[i],improper_atom4[i]); @@ -3499,7 +3551,7 @@ void Data::write_atom_molecular(FILE *fp, int i, int ix, int iy, int iz) void Data::write_atom_peri(FILE *fp, int i, int ix, int iy, int iz) { - fprintf(fp,"%d %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d", + fprintf(fp,"%d %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d", tag[i],type[i],vfrac[i],rmass[i],x[i],y[i],z[i],ix,iy,iz); } @@ -3552,7 +3604,7 @@ void Data::write_atom_molecular_extra(FILE *fp, int i) void Data::write_atom_peri_extra(FILE *fp, int i) { - fprintf(fp," %-1.16e %-1.16e %-1.16e",vfrac[i],rmass[i]); + fprintf(fp," %-1.16e %-1.16e",vfrac[i],rmass[i]); } // --------------------------------------------------------------------- @@ -3639,17 +3691,26 @@ void Data::write_vel_molecular_extra(FILE *fp, int i) {} void Data::write_vel_peri_extra(FILE *fp, int i) {} // --------------------------------------------------------------------- -// strip suffix from style name if suffix is defined +// strip known accelerator suffixes from style name // --------------------------------------------------------------------- -void strip_suffix(char *style, char *suffix) +void strip_suffix(char *style) { - if (!suffix) return; - int n = strlen(suffix) + 2; - char *esuffix = new char[n]; - sprintf(esuffix,"/%s",suffix); - char *ptr = strstr(style,esuffix); - if (ptr && ptr-style+1+strlen(suffix) == strlen(style)) *ptr = '\0'; + char *slash = strrchr(style,'/'); + if (slash == NULL) return; + + int i=0; + + const char *suffix_list[] = { "/opt", "/gpu", "/cuda", "/omp", NULL }; + const char *suffix = suffix_list[0]; + while (suffix != NULL) { + if (strcmp(slash,suffix) == 0) { + *slash = '\0'; + return; + } + ++i; + suffix = suffix_list[i]; + } } // ---------------------------------------------------------------------